几种外积的概念辨析

  最近在学习 PyTorch 的时候,看到文档中计算两个向量的“outer product”后得到一个矩阵。我刚开始理所当然地把“outer product”理解为高中所学的外积,即叉积。但我越想越不对劲:两个向量的叉积不应该还是向量吗,怎么会叉出矩阵来呢?查了一波资料后发现这里的“outer product”不是叉积,而是张量积。
  中文里的外积一词常出现在代数、几何学等领域中。对两向量 $\vec{A}$ 与 $\vec{B}$ 而言,外积可指:

  • 叉积(Cross product),又称向量积(Vector product),常写为 $\vec{A}\times\vec{B}$;
  • 楔积(Wedge product 或 Exterior product),常写为 $\vec{A}\wedge\vec{B}$;
  • 张量积(Tensor product 或 Outer product),常写为 $\vec{A}\otimes\vec{B}$。

  上述三种都可称作外积,但含义却大相径庭,因此极易出现混淆,尤其是“exterior”和“outer”都有外面的意思,我发现网上许多文章甚至一些教科书中都出现了翻译、解释上的错误。我认为避免混淆的最好办法就是使用“叉积”、“向量积”、“楔积”、“张量积”这些没有歧义的词语,而避免使用“外积”一词。
  下面是对几种外积概念的简要辨析。

一、叉积

  两个向量 $\vec{a}$ 和 $\vec{b}$ 的叉积仅在三维空间中有定义,写作 $\vec{a}\times\vec{b}$。在物理学中,叉积有时也被写成 $\vec{a}\wedge\vec{b}$,但在数学中 $\vec{a}\wedge\vec{b}$ 是外代数中的外积(楔积)。
  叉积可以定义为:

其中 $\sin{\theta}$ 表示 $\vec{a}$ 和 $\vec{b}$ 在它们所定义的平面上的夹角($0^{\circ}\leq\theta\leq180^{\circ}$)。$|\vec{a}|$ 和 $|\vec{b}|$ 是向量 $\vec{a}$ 和 $\vec{b}$ 的模长,而 $\vec{n}$ 则是一个与 $\vec{a}$、$\vec{b}$ 所构成的平面垂直的单位向量,方向由右手定则决定。

  叉积可以表达为这样的行列式:

  沿第一行进行拉普拉斯展开可得:

二、楔积

  不了解,貌似是定义在张量空间上的一种运算。具体细节请移步维基百科外代数(格拉斯曼代数)词条,我反正看不懂。

三、张量积

  在数学中,张量积,记为$\otimes$,可以应用于不同的上下文中,如向量、矩阵、张量、向量空间、代数、拓扑向量空间和模。在各种情况下这个符号的意义是同样的:最一般的双线性运算。在某些上下文中也叫做外积。
  向量的外积是矩阵的克罗内克积的特殊情况。
  给定$m \times 1$列向量$\vec{u}$和$1 \times n$行向量$\vec{v}$,它们的外积$\vec{u} \otimes \vec{v}$被定义为$m \times n$矩阵$\mathbf{A}$,结果出自

这里的张量积就是向量的乘法。
例子:

  结果的秩为1,结果的维数为 4×3 = 12。这里的秩指的是“张量秩”(所需指标数),而维数计算在结果数组(阵列)中自由度的数目。