之前一直混淆于各种乘法和积运算中,不得其解,所以花了点功夫整理一下。

名称符号Latex运算应用意义
点乘/内积/数量积 ⋅ \cdot ∙ \bullet \cdot或\bullet a ⃗ ∙ b ⃗ = x 1 x 2 + y 1 y 2 \vec{a} \bullet \vec{b}=x_{1} x_{2}+y_{1} y_{2} a b =x1x2+y1y2三角形余弦角度一个向量在另一个向量方向上投影的长度
叉乘/向量积 × \times ×\times a × b = ( a 2 b 3 − a 3 b 2 , − a 1 b 3 + a 3 b 1 , a 1 b 2 − a 2 b 1 ) a \times b=(a_{2} b_{3}-a_{3} b_{2}, -a_{1} b_{3}+ a_{3} b_{1}, a_{1} b_{2}-a_{2} b_{1}) a×b=(a2b3a3b2,a1b3+a3b1,a1b2a2b1)向量方向是垂直于向量A,B组成的平面叉乘结果是一个向量,向量模长是向量A,B组成平行四边形的面积;
矩阵乘法NANNAN ( A B ) i j = ∑ k = 1 p a i k b k j = a i 1 b 1 j + a i 2 b 2 j + ⋯ + a i p b p j (A B)_{i j}=\sum_{k=1}^{p} a_{i k} b_{k j}=a_{i 1} b_{1 j}+a_{i 2} b_{2 j}+\cdots+a_{i p} b_{p j} (AB)ij=k=1paikbkj=ai1b1j+ai2b2j++aipbpj方程组各类需要求解方程组的问题
克罗内克积(Kronecker Product)/直积/张量积 ⊗ \otimes \otimes A ⊗ B = [ a 11 B ⋯ a 1 n B ⋮ ⋱ ⋮ a m 1 B ⋯ a m n B ] A \otimes B=\left[\begin{array}{ccc}a_{11} B & \cdots & a_{1 n} B \\\vdots & \ddots & \vdots \\a_{m 1} B & \cdots & a_{m n} B\end{array}\right] AB=a11Bam1Ba1nBamnB任意两个矩阵相乘矩阵分块相乘
哈达马积(Hadamard product) ∘ \circ ⊙ \odot \circ 或 \odot ( A ∘ B ) i j = ( A ⊙ B ) i j = ( A ) i j ( B ) i j (A \circ B)_{i j}=(A \odot B)_{i j}=(A)_{i j}(B)_{i j} (AB)ij=(AB)ij=(A)ij(B)ij对应位置相乘Kronecker Product两矩阵维度相同时的简化形式
卷积** ( f ∗ g ) ( t ) ≜ ∫ − ∞ ∞ f ( τ ) g ( t − τ ) d τ (f * g)(t) \triangleq \int_{-\infty}^{\infty} f(\tau) g(t-\tau) d \tau (fg)(t)f(τ)g(tτ)dτ深度学习中张量的卷积操作卷积核在特征层移动并对应位相乘表征函数 f 与经过翻转和平移的 g 的乘积函数所围成的曲边梯形的面积

补充几点:

  • 点乘,叉乘线性代数中强调的概念,所以主要针对一维矢量或者二维矩阵的运算,能够在二维或者三位空间进行可视化;而矩阵乘法、克罗内克积、哈达马积则是矩阵论中的概念,强调的是更为一般性的n维向量的运算规则,矩阵内积操作向量在内积空间中的矩阵乘法。
  • 矩阵乘法是使用最多的运算,比如在matlab和python的numpy中*。点乘可以视作矩阵乘法对两个一维矢量的运算规则。
  • 卷积的运算规则与哈达马积相同,而哈达马积又是克罗内克积一种特殊情况,所以在CS的一些论文中表达卷积操作, ⊗ \otimes ∘ \circ ⊙ \odot 、*似乎都没问题,但是最多还是星乘。

参考文献

点乘和叉乘
Hadamard_product refer from wiki
克罗内克积 refer from wiki
水平有限,有错误和不足支持还望大家及时提出讨论

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐