向量各种积的定义与说明

内积外积都是一种广义的称呼,我们最常见的内积是点积(数量积、标量积和点积定义相同),即对应元素乘然后累加;

但是,我们最容易弄错外积的定义,我们理解的两个向量运算得到第三个向量,且其方向垂直于另外两个向量的运算严格上叫叉积、叉乘或向量积,而非外积。外积有其单独定义,其对向量运算的结果为矩阵


那么假设有两个向量:

\[a=\left[\begin{array}{c} a_1 \\ a_2 \\ a_3 \end{array}\right]; b= \left[\begin{array}{c} b_1 \\ b_2 \\ b_3 \end{array}\right] \]

内积(Inner Product)

欧几里得空间(Euclidean space)是内积空间(inner product space)的一个特例。在实数域且有限维的内积空间(Inner product space)被称作欧几里得空间(Euclidean space)

欧式空间的本质性,是其平面性.

一句话总结:欧几里得空间就是在对现实空间的规则抽象和推广(从n<=3推广到有限n维空间)。欧几里得几何就是中学学的平面几何、立体几何,在欧几里得几何中,平行线任何位置的间距相等

内积最常见的形式是欧氏空间中的内积,也就是常说的点积(dot product),点积也被称为数量积(scalar product)。

内积的表示形式

那么内积的计算结果是一个标量,其计算形式有两种:

\[\begin{align} a \cdot b &= |a||b|cos(\theta) \\ &= a_1b_1+a_2b_2+a_3b_3 \end{align} \]

内积的意义

  1. 几何关系:点积可以用来描述一个向量在另一个向量方向上的投影,同时还可以用来计算向量之间的夹角(仅对二维空间有效)。

  2. 相关性:内积可以理解为表示了两个向量之间的相干性,若两个向量正交(无相干性),则点积为0;而点积越大表示两个向量的相干性越强。

外积(Outer Product)

外积是更广义的说法,宽松的说,他在一定的语境中和叉积叉乘向量积都表示求垂直于两个向量的新向量,但是在更严格的语境中,外积还是不等价于上述三种乘积的。严格意义上来说,外积划分情况如下:

外积的表示形式

外积可以分为以下几种含义,维基百科中注明了这几个的差别:

  • External product,又名叉积(英语:cross product)和向量积(英语:vector product),常写为\(a \times b\)
  • Outer product,见外积 (张量积),常写为\(a \otimes b\)
  • Exterior product,又名楔积(英语:wedge product),常写为\(a \wedge b\);(不常见,不做讨论)

External Product

数学向量代数领域(也就是解析几何领域),外积(external product)又称叉积(cross Product)、叉乘向量积,是对三维空间中的两个向量的二元运算(即两个向量的法向量)。

英文中的 external , cross , vector product 均为此定义, 同时也是最广为人知的一个外积的定义(于中学课本中常见),此外积仅在三维空间中定义

那么其表示形式为:

\[a \times b &= \left|\begin{array}{ccccc} i & j & k \\ a_1 & a_2 & a_3\\ b_1 & b_2 & b_3 \end{array} \right| \]

该法向量的模表示为\(|a \times b|=|a||b|sin(\theta)\)

Outer Product

Outer Product是线性代数中的外积,也就是张量积。(这也就是中学中学习的普通矩阵/向量的计算)

在线性代数中一般指两个向量的张量积,其结果为矩阵,其表示为:

\[a \otimes b = \left[\begin{array}{c} a_1 \\ a_2 \\ a_3 \end{array}\right] \otimes [b_1 \; b_2 \; b_3] =\left[\begin{array}{c} a_1b_1 & a_1b_2 & a_1b_3 \\ a_2b_1 & a_2b_2 & a_2b_3 \\ a_3b_1 & a_3b_2 & a_3b_3 \end{array}\right] \]

外积是将结果的维度扩张到二维,而内积呢,其结果将维度缩减到了标量(所以可以从这个点理解外积和内积)

torch中使用 torch.mm()torch.matmul()

补充1:Kronecker Product

外积是一种特殊的克罗内克积(kronecker product)。为什么这样说呢?因为数学上,克罗内克积是两个任意大小的矩阵间的运算。

\(A\)矩阵是一个\(m \times n\)的矩阵,而\(B\)是一个\(p \times q\)的矩阵,那么克罗内克积则是一个维度为\((mn) \times (pq)\)的分块矩阵。具体的计算形式可以看这篇博客

numpy中 使用np.kron实现。

克罗内克积的表示形式为 \(A \otimes B\)

补充2:Hadamard Product

矩阵元素积(element-wise product, point-wise product),又称作哈达玛积(hadamard product),对应元素相乘,结果还是向量/矩阵,那么这样就要求两个相乘的向量/矩阵必须行列数相同

numpy中 使用np.multiply*实现元素积。

torch中 使用*torch.mul

元素积表示形式为 \(A \odot B\)

Note:深度学习论文中,矩阵的计算一般为张量积和哈达玛积,即 \(\otimes\)就是普通的矩阵乘法\(\odot\)表示矩阵对应位置元素相乘

参考

  1. 真一文搞懂:内积、外积及其衍生(内积:点积、数量积、标量积;外积:叉积、叉乘、向量积、张量积) - 我头上有犄角的文章 - 知乎
  2. 带你一次搞懂点积(内积)、叉积(外积)
  3. 内积与外积(Inner/Outer/Interior/Exterior)Product 及在计算机中的概念
posted @ 2024-11-25 15:36  昭建  阅读(572)  评论(0)    收藏  举报