在数学和机器学习中,向量之间的运算有多种形式,主要包括内积(点积)、外积(叉积)、哈达玛积(逐元素积)、张量积(Kronecker积) 等。以下是它们的定义、写法、几何意义和使用场景。
1. 内积(Dot Product / Inner Product)
定义与写法
- 标准定义:两个向量 $\mathbf{a} = (a_1, a_2, \dots, a_n)$ 和 $\mathbf{b} = (b_1, b_2, \dots, b_n)$ 的内积为: $$ \langle \mathbf{a}, \mathbf{b} \rangle = \mathbf{a} \cdot \mathbf{b} = \sum_{i=1}^n a_i b_i $$
- 复数表示(二维情况): $$ \mathbf{a} \cdot \mathbf{b} = \text{Re}(\mathbf{a} \mathbf{b}^) $$ 其中 $\mathbf{b}^$ 是共轭复数。
几何意义
- 衡量两个向量的相似度:
- 如果 $\mathbf{a} \cdot \mathbf{b} > 0$,夹角 $\theta < 90^\circ$(方向相近)。
- 如果 $\mathbf{a} \cdot \mathbf{b} = 0$,夹角 $\theta = 90^\circ$(正交)。
- 如果 $\mathbf{a} \cdot \mathbf{b} < 0$,夹角 $\theta > 90^\circ$(方向相反)。
- 计算向量长度(模): $$ |\mathbf{a}| = \sqrt{\mathbf{a} \cdot \mathbf{a}} $$
使用场景
- 机器学习:
- 计算注意力权重(如 Transformer 中的 $\mathbf{Q} \cdot \mathbf{K}$)。
- 计算余弦相似度(归一化内积)。
- 物理:
- 计算力做的功 $W = \mathbf{F} \cdot \mathbf{d}$。
- 计算机图形学:
- 计算光照模型(如漫反射光强度)。
2. 外积(Cross Product)
定义与写法
- 仅适用于三维向量: $$ \mathbf{a} \times \mathbf{b} = \begin{vmatrix} \mathbf{i} & \mathbf{j} & \mathbf{k} \ a_1 & a_2 & a_3 \ b_1 & b_2 & b_3 \ \end{vmatrix} = (a_2 b_3 - a_3 b_2, a_3 b_1 - a_1 b_3, a_1 b_2 - a_2 b_1) $$
- 二维情况(伪标量): $$ \mathbf{a} \times \mathbf{b} = a_1 b_2 - a_2 b_1 $$
几何意义
- 结果是一个垂直于 $\mathbf{a}$ 和 $\mathbf{b}$ 的向量(三维)。
- 其大小等于 $|\mathbf{a}| |\mathbf{b}| \sin \theta$,代表平行四边形的面积。
- 二维外积的绝对值等于平行四边形的有向面积。
使用场景
- 物理:
- 计算力矩 $\mathbf{\tau} = \mathbf{r} \times \mathbf{F}$。
- 计算角动量 $\mathbf{L} = \mathbf{r} \times \mathbf{p}$。
- 计算机图形学:
- 计算表面法向量(用于光照计算)。
- 判断点是否在三角形内(叉积符号判断)。
3. 哈达玛积(Hadamard Product / Element-wise Product)
定义与写法
- 逐元素相乘: $$ \mathbf{a} \odot \mathbf{b} = (a_1 b_1, a_2 b_2, \dots, a_n b_n) $$
- 矩阵形式: $$ \mathbf{A} \odot \mathbf{B} = \begin{bmatrix} a_{11} b_{11} & a_{12} b_{12} & \cdots \ a_{21} b_{21} & a_{22} b_{22} & \cdots \ \vdots & \vdots & \ddots \ \end{bmatrix} $$
几何意义
- 不直接对应几何关系,主要用于数值计算。
使用场景
- 深度学习:
- 激活函数(如 $\sigma(\mathbf{x}) \odot \mathbf{x}$ 在 Swish 激活函数中)。
- 注意力机制中的掩码(Masked Attention)。
- 信号处理:
- 滤波器系数相乘(如 FIR 滤波器)。
4. 张量积(Kronecker Product / Tensor Product)
定义与写法
生成高阶张量: $$ \mathbf{a} \otimes \mathbf{b} = \begin{bmatrix} a_1 \mathbf{b} \ a_2 \mathbf{b} \ \vdots \ a_n \mathbf{b} \ \end{bmatrix}
\begin{bmatrix} a_1 b_1 & a_1 b_2 & \cdots \ a_1 b_2 & a_1 b_2 & \cdots \ \vdots & \vdots & \ddots \ \end{bmatrix} $$
几何意义
- 用于构造高维空间的基向量(如量子力学中的纠缠态)。
使用场景
- 量子计算:
- 构造多量子比特态(如 $|\psi\rangle \otimes |\phi\rangle$)。
- 机器学习:
- 核方法(Kernel Methods)中的特征映射。
- 张量分解(如 CP 分解)。
5. 总结对比
| 积的类型 | 符号 | 适用维度 | 结果类型 | 主要用途 |
|---|---|---|---|---|
| 内积(点积) | $\mathbf{a} \cdot \mathbf{b}$ | 任意 | 标量 | 相似度计算、投影 |
| 外积(叉积) | $\mathbf{a} \times \mathbf{b}$ | 仅 3D | 向量 | 法向量、力矩计算 |
| 哈达玛积 | $\mathbf{a} \odot \mathbf{b}$ | 任意 | 同维向量 | 逐元素运算、掩码 |
| 张量积 | $\mathbf{a} \otimes \mathbf{b}$ | 任意 | 高阶张量 | 构造高维空间 |
选择指南
- 计算相似度? → 用内积。
- 求垂直向量? → 用外积(仅 3D)。
- 逐元素运算? → 用哈达玛积。
- 构造高维空间? → 用张量积。
这些运算在机器学习、物理、计算机图形学、量子计算等领域都有广泛应用,理解它们的区别有助于正确选择计算方式。
张芷铭的个人博客
💬 评论