跳至内容

哈达玛积:按元素矩阵乘法的完整指南

学习哈达玛积的数学基础、计算特性及其真实世界应用。
已更新 2026年10月6日  · 9分钟 阅读

使用 AI 探索

ChatGPTClaudePerplexity

本教程将探讨哈达玛积的数学基础、计算特性及其广泛应用。通过动手示例,您将了解这一运算如何在理论数学与数据科学应用之间搭起桥梁,使其成为处理矩阵和高维数据的关键工具。

要夯实矩阵运算基础,欢迎学习我们的 Linear Algebra for Data Science in R 课程,其中涵盖了与哈达玛积相辅相成的核心概念。 

定义与数学记号

哈达玛积(Hadamard product),又称按元素乘法,是矩阵代数中应用极为广泛的运算之一。不同于标准矩阵乘法,它通过逐元素相乘来合并矩阵,在实现局部变换的同时保留原有维度。

形式化定义

给定两个矩阵A 与 B,其尺寸均为 m × n,则它们的哈达玛积 A ∘ B(有时记作 A ⊙ B)通过对应元素相乘得到:

其中 i 从 1 到 m,j 从 1 到 n。

所得矩阵 C = A ∘ B 与输入矩阵尺寸相同,每个元素彼此独立计算。

标准记号与约定

哈达玛积常见的记号有:

  • ∘(空心点):最常见的数学记号
  • ⊙(圆点):替代数学符号
  • .*:用于 MATLAB 等编程语言
  • *:在 NumPy 等库中表示按元素乘法的运算符

记号的选择通常取决于具体语境与应用领域,但∘仍是数学文献中的标准写法。

分步示例

用两个 3×2 矩阵来直观演示哈达玛积:

矩阵 A:

矩阵 B:

A ∘ B:

  • 步骤 1:在位置 (1,1) 上相乘:2 × 3 = 6 
  • 步骤 2:在位置 (1,2) 上相乘:4 × 1 = 4 
  • 步骤 3:在位置 (2,1) 上相乘:1 × 2 = 2 
  • 步骤 4:在位置 (2,2) 上相乘:3 × 4 = 12 
  • 步骤 5:在位置 (3,1) 上相乘:5 × 1 = 5 
  • 步骤 6:在位置 (3,2) 上相乘:2 × 6 = 12

结果如下:

重要约束

哈达玛积对维度有严格要求:两个矩阵的尺寸必须完全一致。不同于标准矩阵乘法只需内维匹配,哈达玛积要求完整的维度一致性。该约束确保一个矩阵中的每个元素在另一矩阵中都有对应元素参与相乘。当矩阵尺寸不一致时,哈达玛积无定义。

基础与进阶性质

哈达玛积具备一系列与标准矩阵乘法不同的代数性质。理解这些性质有助于把握按元素乘法的行为差异,并洞见其数学结构。

基本性质

交换性

哈达玛积是可交换的,即运算次序不影响结果:

这一性质成立是因为实数的逐元素乘法可交换:aᵢⱼ × bᵢⱼ = bᵢⱼ × aᵢⱼ。

这与矩阵乘法不同,后者通常不可交换。

结合性

哈达玛积满足结合性,因而可以更改分组而不改变结果:

该性质可扩展至任意数量的矩阵,前提是它们的尺寸完全一致。

对加法的分配性

哈达玛积对矩阵加法满足分配律:

这使哈达玛积可与矩阵的线性组合良好兼容。

幺元(单位元)

哈达玛积的单位元是一切元素为 1 的矩阵 J。对于任意矩阵 A:

这与标准矩阵乘法显著不同,后者的单位矩阵仅主对角线上为 1,其余为 0。

与标准矩阵乘法的对比

与标准矩阵乘法不同,哈达玛积:

  • 要求矩阵尺寸完全相同
  • 输出结果与输入矩阵尺寸相同
  • 始终可交换
  • 具有不同的单位元
  • 一般不满足混合结合性: (AB) ∘ C ≠ A(B ∘ C)

混合乘积性质

混合乘积性质建立了哈达玛积与矩阵转置之间的关系:

该性质在优化问题与统计应用中尤为有用,因为转置矩阵经常出现。

x例如:在协方差矩阵估计中,研究者常常处理转置的数据矩阵。混合乘积性质允许在转置前或转置后进行按元素运算,为算法设计提供了计算上的灵活性。

舒尔乘积定理与半正定性

舒尔乘积定理(Schur Product Theorem)是关于哈达玛积最重要的理论结果之一。它指出:两个半正定矩阵的哈达玛积仍为半正定矩阵。

定理:若 A 与 B 为同尺寸的半正定矩阵,则 A ∘ B 亦为半正定。

对矩阵分析的启示

该定理带来若干重要影响:

  • 保持半正定性:该性质确保某些矩阵运算可维持良好的数学属性。在统计建模中,半正定矩阵表示有效的协方差结构,该定理保证按元素乘法能保留这一有效性。
  • 与秩的关系:哈达玛积通常不保持矩阵秩。矩阵 A ∘ B 的秩可小于、等于,或在特殊情况下大于 rank(A) 与 rank(B) 的最小值。
  • 特征值关系:尽管哈达玛积与原矩阵的特征值之间没有简单关系,但在处理半正定矩阵时,舒尔乘积定理可对结果的特征值给出界。

计算与实现

哈达玛积的计算特性使其在大规模数据处理应用中尤具吸引力。理解其效率特征与实现考量,有助于在计算环境中优化性能。

效率与计算复杂度

复杂度分析

对于两个尺寸为 m × n 的矩阵,哈达玛积的时间复杂度为 O(mn),每个元素仅需一次乘法运算。与此形成鲜明对比的是,使用传统算法进行方阵的标准矩阵乘法其复杂度为 O(n³)。

操作

时间复杂度

空间复杂度

哈达玛积

O(mn)

O(mn)

标准矩阵乘法

O(n³)

O(n²)

矩阵加法

O(mn)

O(mn)

对大规模处理的启示

线性复杂度使哈达玛积尤为适合于:

  • 高维数据集:当矩阵包含数百万个元素时,O(mn) 复杂度确保处理时间随数据规模可预测地增长。
  • 实时应用:计算开销极小,使其可用于图像处理流水线、神经网络推理等对时延敏感的场景中的按元素运算。
  • 内存效率:由于各元素独立处理,实现中可采用流式或分块处理,以应对超出可用内存的数据集。

按元素乘法的实践

矩阵处理考量

计算哈达玛积时需注意的实际问题包括:

  • 内存布局:行优先与列优先的存储影响缓存性能。大多数实现按内存中的出现顺序处理元素更有利于性能。
  • 向量化:现代处理器支持 SIMD(单指令多数据)操作,可同时处理多个元素,大幅加速计算。
  • 并行化:按元素运算彼此独立,使哈达玛积易于在多核 CPU 或 GPU 线程间高度并行化。

张量情境与挑战

扩展到更高维张量时,会出现额外复杂性:

  • 广播(broadcasting):许多实现支持广播,允许不同但形状兼容的张量之间进行按元素乘法。
  • 内存对齐:张量运算需关注内存对齐以最大化性能,尤其在 GPU、TPU 等专用硬件上。
  • 算法优化:如 HaTT(Hadamard Transform for Tensors)等高级算法为特定张量结构提供优化实现,在特定场景下可同时降低时间与空间复杂度。

在编程语言中的实现

使用 NumPy 的 Python

NumPy 可直接使用 * 运算符实现哈达玛积:

import numpy as np

# Define matrices
A = np.array([[2, 4], [1, 3], [5, 2]])
B = np.array([[3, 1], [2, 4], [1, 6]])

# Compute Hadamard product
C = A * B
print(C)
# Output: [[ 6  4]
#          [ 2 12]
#          [ 5 12]]

# Alternative explicit notation
C_explicit = np.multiply(A, B)

NumPy 的性能优化:

# For large matrices, ensure proper data types
A = A.astype(np.float32)  # Use float32 for memory efficiency
B = B.astype(np.float32)

# Pre-allocate output array for memory efficiency
C = np.empty_like(A)
np.multiply(A, B, out=C)

其他语言与库

R:

# C <- A * B  # Element-wise multiplication is default

matrix1 <- matrix(
  c(1, 2, 3,
    4, 5, 6,
    7, 8, 9),
  nrow = 3,
  ncol = 3,
  byrow = TRUE
)

# Create the second matrix (3x3)
matrix2 <- matrix(
  c(9, 8, 7,
    6, 5, 4,
    3, 2, 1),
  nrow = 3,
  ncol = 3,
  byrow = TRUE
)

matrix1
matrix2
matrix1 * matrix2
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
     [,1] [,2] [,3]
[1,]    9    8    7
[2,]    6    5    4
[3,]    3    2    1
     [,1] [,2] [,3]
[1,]    9   16   21
[2,]   24   25   24
[3,]   21   16    9

Julia:

C = A .* B  # Broadcasting element-wise multiplication	

常见陷阱与最佳实践

类型兼容性:确保矩阵数据类型兼容,避免意外的类型提升或精度损失。

# Avoid mixing integer and float types unnecessarily
A = np.array([[1, 2]], dtype=np.int32)
B = np.array([[1.5, 2.5]], dtype=np.float64)
C = A * B  # Results in float64, may not be intended

理解广播机制:理解广播如何工作,以避免意料之外的维度扩展。

# Be explicit about intended operations
A = np.array([[1, 2, 3]])      # Shape: (1, 3)
B = np.array([[1], [2], [3]])  # Shape: (3, 1)
C = A * B  # Results in (3, 3) matrix due to broadcasting

内存管理:对于大规模运算,考虑使用就地操作与预分配内存。

# In-place operation to save memory
A *= B  # Modifies A directly

# Pre-allocate for repeated operations
result = np.empty((1000, 1000))
for i in range(iterations):
    np.multiply(matrix1, matrix2, out=result)

流水线集成:在机器学习工作流中,确保哈达玛运算能与自动微分框架顺畅集成并保持梯度传递。

跨学科应用

哈达玛积用于那些既需进行局部变换、又需保留矩阵结构的操作。

图像处理

在 JPEG 解码中,哈达玛积用于将量化矩阵与变换后的图像系数相结合,以重建视觉数据。在图像增强任务中,它通过与滤波掩膜的按元素相乘实现选择性操作(如噪声抑制),并通过对像素邻域施加空间权重矩阵来实现可控的锐化或模糊。

统计建模与数据分析

哈达玛积可通过对设计矩阵施加按元素权重来实现加权回归,并通过对矩阵元素进行选择性缩放来支持稳健的协方差估计。该运算在核方法与半定规划中至关重要,因为它能保持有效统计模型所需的半正定性,也因此有利于对协方差结构施加按元素约束的正则化技术。

深度学习与神经网络

哈达玛积广泛出现在循环神经网络架构中,尤其是 GRU 与 LSTM,通过按元素的门控机制控制信息流。StyleGAN、SENet 等现代架构利用其进行自适应特征缩放;注意力机制也采用按元素乘法来为特征表示加权,从而显著提升序列建模与生成任务的效率与表现。

其他重要应用

在信号处理中,哈达玛积用于频域滤波与谱分析,通过与传递函数按元素相乘来改变信号特性。在图论中,它支持在邻接矩阵上进行按顶点的操作;在组合数学中,它适用于对计数矩阵的按元素处理与离散优化问题。

结语

如果您希望进一步探索支撑现代机器学习与深度学习的更多数学概念,我们的 Demystifying Mathematical Concepts for Deep Learning 教程将为您提供更多关于推动当今 AI 创新的数学基础见解,此外也可报名我们的 Linear Algebra for Data Science in R 课程来夯实基础。 


Vinod Chugani's photo
Author
Vinod Chugani
LinkedIn

Vinod Chugani 的职业生涯始于东京,曾任摩根大通最年轻的对冲基金销售台负责人,随后在雷曼兄弟创下个人销售纪录,之后又打造了覆盖 30 个国家的电子分销业务,营收突破 1 亿新元,随后转向数据领域。他毕业于杜克大学经济学专业,亦为 NYC Data Science Academy 校友,并在 100 多名申请者中成为Hugo Bowne-Anderson 在 Maven 开设的 “Building AI Applications” 课程的三位奖学金获得者之一。目前,他为 DataCamp、KDnuggets、Machine Learning Mastery 和 Statology 撰稿,内容涵盖从统计学到代理式 AI 等主题,并在 NYC Data Science Academy 指导数据从业者,已完成超过 1,000 场一对一辅导。

 

常见问题解答

什么是哈达玛积?它与常规矩阵乘法有何不同?

哈达玛积对两个同尺寸矩阵的对应元素逐一相乘;而常规矩阵乘法则对行与列做点积。与标准矩阵乘法不同,哈达玛积会保留原矩阵的尺寸,且始终满足交换性。

我应在何时使用哈达玛积而不是标准矩阵乘法?

当需要按元素进行操作时使用哈达玛积,例如在图像处理中应用掩膜、在神经网络中实现门控机制,或对矩阵元素进行选择性缩放。当您希望保留空间关系或施加局部变换时,它尤其有用。

不同尺寸的矩阵能否计算哈达玛积?

不可以。哈达玛积要求矩阵具有完全相同的尺寸,才能定义按元素乘法。两个矩阵必须拥有相同的行数与列数;而标准矩阵乘法仅要求内维兼容。

在哈达玛积的语境中,O(mn) 复杂度意味着什么?

O(mn) 是“大 O 记号”,用于描述计算时间随输入规模的增长情况——此处表示时间与矩阵元素总数(m 行 × n 列)成正比。比如,如果行和列都加倍,计算时间大致会变为四倍,因此对大矩阵而言,其耗时非常可预测且高效。

与其他矩阵运算相比,哈达玛积是否具有计算效率?

是的。哈达玛积的时间复杂度为线性的 O(mn),远比标准矩阵乘法的 O(n³) 更高效。这种效率使其非常适合实时应用与大规模数据处理。

哈达玛积在机器学习中的主要应用有哪些?

哈达玛积支撑了 LSTM 与 GRU 的门控机制,出现在对通道进行特征重标定的注意力变体中,并广泛用于特征加权或缩放。在图像处理中,它用于像素级掩膜;在统计模型中,它可用于对选定条目进行加权或置零的简便手段。

哈达玛积与点积有何区别?

哈达玛积在相同尺寸的矩阵之间执行按元素乘法,并保留其结构。相较之下,点积会对按元素乘积求和,从而得到一个标量(向量情形),或在矩阵情形下遵循矩阵乘法规则。

哈达玛积与克罗内克积有何不同?

哈达玛积逐元素相乘并保留原有维度;而克罗内克积会通过用一个矩阵的每个元素去乘以整个另一矩阵,生成更大的分块矩阵。

哈达玛积能否应用于幂级数?

是的,在复分析中,哈达玛积可扩展至幂级数,按对应系数相乘。此操作会改变所得级数的收敛性质,并与更深层的分析结果相联系。

哈达玛积与哈达玛分解定理有何关联?

哈达玛分解定理将整函数表示为其零点的乘积;在该定理涉及的级数操作中,哈达玛积在概念上与之相关联。

哈达玛积与黎曼ζ函数有何联系?

在高等数学中,哈达玛积的概念出现在黎曼ζ函数的无穷乘积展开中,展示了按元素运算如何将离散的矩阵代数与连续的函数理论联系起来。

主题
数据科学

与 DataCamp 一起学习

课程

R 数据科学的线性代数

4 小时
21.8K
本课程介绍线性代数,这是支撑数据科学的最重要数学主题之一。
查看详情Right Arrow
开始课程
查看更多Right Arrow