9线性代数应该这样学(第3版)

多线性代数

张量积

双线性形式张量积外积

🎯 AI 时代的学习建议:不要只读理论。理解这一章的设计动机(为什么需要这个概念?)和边界条件(什么情况下会失效?)。当 AI 生成的代码涉及这些概念时,你能判断它是否用对了场景。AI 能帮你总结内容,但无法替代你亲手阅读、思考、建立直觉的过程。

第9章 多线性代数 - 张量积 (Multilinear Algebra)

一、导读

9.1 本章学习目标

通过本章的学习,你将能够:

理解双线性形式和二次型的概念:掌握对称双线性形式的分类,理解正定性的判定方法

理解张量积的定义和性质:掌握张量积的泛性质,理解其在多线性映射中的作用

掌握张量的基本概念:理解张量作为多重线性映射的本质,以及张量的分量表示

理解外代数和行列式的关系:掌握外积的反对称性,理解行列式作为体积形式的几何意义

掌握行列式的性质和计算:理解行列式的公理化定义,掌握高效计算方法

理解张量积在机器学习中的应用:掌握注意力机制、张量分解等技术背后的线性代数原理

将多线性代数概念应用于实际问题:如微分几何、量子力学、深度学习

9.2 为什么本章如此重要

前八章主要研究单个向量空间上的线性结构。多线性代数则将视角扩展到多个向量空间的交互,研究多线性映射、张量积、外代数等更丰富的结构。这是线性代数的自然延伸,也是现代数学和物理的基础语言。

从理论的角度看,多线性代数提供了描述"多重线性"关系的工具。张量积将多个向量空间"粘合"成一个新的空间,外代数捕捉了"定向体积"的概念,这些结构在微分几何、代数拓扑、表示论中不可或缺。

从应用的角度看:

  • 微分几何:度量张量是双线性形式;曲率张量是多线性映射
  • 广义相对论:时空的几何结构由度量张量描述;爱因斯坦方程涉及张量运算
  • 量子力学:多粒子系统的态空间是单粒子态空间的张量积;纠缠态不能用张量积分解
  • 深度学习:神经网络的权重是高阶张量;注意力机制使用张量积计算相似度
  • 计算机视觉:图像是二阶张量(矩阵);视频是三阶张量(时间序列图像)
  • 信号处理:高阶统计量用张量表示;盲源分离使用张量分解

从认知的角度看,本章帮助你建立"多维思维"。不再局限于单一向量空间,而是考虑多个空间的相互作用。这种高维视角是理解复杂系统的关键。

9.3 核心问题引导

在学习本章时,请持续思考以下问题:

什么是双线性形式? 它与内积有什么区别?如何分类双线性形式?

张量积的泛性质是什么? 为什么张量积是"最一般"的双线性构造?

张量与多维数组有什么关系? 为什么说张量不仅仅是多维数组?

外积为什么是反对称的? 这与行列式和体积有什么关系?

行列式的几何意义是什么? 为什么行列式表示线性变换对体积的缩放?

张量积在深度学习中如何应用? 注意力机制中的 $QK^T$ 本质上是张量积吗?

多线性代数与微积分有什么联系? 微分形式、外导数如何用外代数描述?


二、核心概念详解

9.1 双线性形式

定义 9.1(双线性形式)

设 $V$ 是 $\mathbb{F}$ 上的向量空间。双线性形式(Bilinear Form)是一个函数 $B: V \times V \to \mathbb{F}$,满足:

对第一变元线性:$B(\lambda u + v, w) = \lambda B(u, w) + B(v, w)$

对第二变元线性:$B(u, \lambda v + w) = \lambda B(u, v) + B(u, w)$

如果还满足 $B(u, v) = B(v, u)$,则称 $B$ 是对称的。

如果 $B(u, v) = \overline{B(v, u)}$(复情况),则称 $B$ 是Hermitian的。

例 9.1:常见双线性形式

内积:标准内积 $\langle u, v \rangle$ 是 Hermitian 双线性形式(复情况)或对称双线性形式(实情况)。

矩阵双线性形式:给定矩阵 $A$,定义 $B(u, v) = u^T A v$。如果 $A$ 对称,则 $B$ 对称。

Minkowski 度规:在狭义相对论中,$B(u, v) = -u_0v_0 + u_1v_1 + u_2v_2 + u_3v_3$ 是不对称的双线性形式。

辛形式:在经典力学中,$\omega(u, v) = u^T J v$,其中 $J = \begin{pmatrix} 0 & I \\ -I & 0 \end{pmatrix}$ 是反对称双线性形式。

定义 9.2(二次型)

设 $B$ 是对称双线性形式。定义二次型(Quadratic Form):

$$Q(v) = B(v, v)$$

在实情况下,给定对称矩阵 $A$,二次型为:

$$Q(x) = x^T A x = \sum_{i,j} a_{ij} x_i x_j$$

关键洞察:二次型是双线性形式的"对角"部分。给定二次型,可以恢复对称双线性形式:$B(u, v) = \frac{1}{2}(Q(u+v) - Q(u) - Q(v))$(极化恒等式)。

定理 9.1:主轴定理

设 $Q$ 是 $\mathbb{R}^n$ 上的二次型,对应对称矩阵 $A$。则存在正交变换 $x = Qy$ 使得:

$$Q(x) = \lambda_1 y_1^2 + \cdots + \lambda_n y_n^2$$

其中 $\lambda_i$ 是 $A$ 的特征值。

证明:由谱定理,$A = QDQ^T$,其中 $Q$ 正交,$D$ 对角。令 $y = Q^T x$,则:

$$Q(x) = x^T A x = x^T Q D Q^T x = y^T D y = \sum_{i=1}^n \lambda_i y_i^2$$

$\square$

几何直觉:主轴定理表明任何二次曲面(椭球、双曲面等)都可以通过旋转对齐到坐标轴。这在优化问题中非常重要,因为可以将复杂的二次函数简化为标准形式。

定义 9.3(正定性)

对称双线性形式 $B$ 称为:

  • 正定:如果 $B(v, v) > 0$ 对所有 $v \neq 0$
  • 半正定:如果 $B(v, v) \geq 0$ 对所有 $v$
  • 负定:如果 $B(v, v) < 0$ 对所有 $v \neq 0$
  • 不定:如果存在 $v, w$ 使得 $B(v, v) > 0$ 且 $B(w, w) < 0$

定理 9.2:正定性的判定

对称矩阵 $A$ 正定当且仅当:

所有特征值为正

所有顺序主子式为正(Sylvester 准则)

存在可逆矩阵 $C$ 使得 $A = C^T C$(Cholesky 分解)

证明思路:

由主轴定理,$Q(x) = \sum \lambda_i y_i^2$。如果所有 $\lambda_i > 0$,则 $Q(x) > 0$ 对所有 $x \neq 0$。

Sylvester 准则通过归纳法证明。

Cholesky 分解给出了显式构造。$\square$

9.2 张量积

定义 9.4(张量积)

设 $V$ 和 $W$ 是 $\mathbb{F}$ 上的向量空间。张量积 $V \otimes W$ 是一个新的向量空间,配备一个双线性映射 $\otimes: V \times W \to V \otimes W$,满足以下泛性质:

对于任意向量空间 $U$ 和双线性映射 $B: V \times W \to U$,存在唯一的线性映射 $\tilde{B}: V \otimes W \to U$ 使得:

$$B(v, w) = \tilde{B}(v \otimes w)$$

即下图交换:

V × W --⊗--> V ⊗ W
  |            |
  B            ∃! B̃
  |            |
  v            v
    U

关键洞察:张量积的泛性质表明,任何双线性映射都可以"分解"为张量积后的线性映射。这使得我们可以将多线性问题转化为线性问题。

构造方法

如果 $V$ 有基 $v_1, \ldots, v_m$,$W$ 有基 $w_1, \ldots, w_n$,则 $V \otimes W$ 有基:

$$\{v_i \otimes w_j : 1 \leq i \leq m, 1 \leq j \leq n\}$$

因此 $\dim(V \otimes W) = (\dim V)(\dim W)$。

例 9.2:张量积的例子

$\mathbb{R}^2 \otimes \mathbb{R}^3$:维度为 $2 \times 3 = 6$。基向量为 $e_i \otimes f_j$。

多项式张量积:$P_m(\mathbb{F}) \otimes P_n(\mathbb{F}) \cong P_{m+n}(\mathbb{F})$(在一定条件下)。

矩阵空间:$\mathbb{F}^m \otimes \mathbb{F}^n \cong \mathbb{F}^{m \times n}$(通过 $v \otimes w \mapsto vw^T$)。

量子态空间:两个量子比特的态空间是 $\mathbb{C}^2 \otimes \mathbb{C}^2 \cong \mathbb{C}^4$。

定理 9.3:张量积的性质

对于 $v, v_1, v_2 \in V$,$w, w_1, w_2 \in W$,$\lambda \in \mathbb{F}$:

$(v_1 + v_2) \otimes w = v_1 \otimes w + v_2 \otimes w$

$v \otimes (w_1 + w_2) = v \otimes w_1 + v \otimes w_2$

$(\lambda v) \otimes w = v \otimes (\lambda w) = \lambda(v \otimes w)$

注意:不是 $V \otimes W$ 中的每个元素都能写成 $v \otimes w$ 的形式(纯张量)。一般元素是纯张量的线性组合。例如,$v_1 \otimes w_1 + v_2 \otimes w_2$ 通常不能写成单个纯张量。

9.3 张量

定义 9.5(张量)

设 $V_1, \ldots, V_k$ 是向量空间。$(k, l)$-张量是一个多线性映射:

$$T: V_1^ \times \cdots \times V_k^ \times V_1 \times \cdots \times V_l \to \mathbb{F}$$

其中 $k$ 是逆变阶数,$l$ 是协变阶数。

在有限维情况下,给定基后,张量可以表示为多维数组。

例 9.3:常见张量

向量:$(1, 0)$-张量

线性泛函:$(0, 1)$-张量

矩阵:$(1, 1)$-张量(或 $(2, 0)$ / $(0, 2)$,取决于解释)

内积:$(0, 2)$-张量

曲率张量:$(1, 3)$-张量

应力张量:在连续介质力学中,$(0, 2)$-张量描述材料内部的应力分布

张量的分量表示

给定基 $e_1, \ldots, e_n$,$(k, l)$-张量 $T$ 的分量为:

$$T^{i_1 \cdots i_k}_{j_1 \cdots j_l} = T(e^{i_1}, \ldots, e^{i_k}, e_{j_1}, \ldots, e_{j_l})$$

其中 $e^i$ 是对偶基。

重要说明:张量的分量在基变换下按照特定规则变化,保持张量的几何意义不变。这是张量在物理学中重要的原因:物理定律应该独立于坐标系的选择。

9.4 外代数

定义 9.6(外积)

设 $V$ 是向量空间。外积(Exterior Product)或楔积(Wedge Product)$\wedge: V \times V \to \Lambda^2 V$ 满足:

双线性:对每个变元线性

反对称:$v \wedge w = -w \wedge v$

交替性:$v \wedge v = 0$

$\Lambda^k V$ 是由 $k$-向量($k$ 个向量的外积)张成的空间。

定理 9.4:外积的性质

对于 $v_1, \ldots, v_k \in V$:

$v_{\sigma(1)} \wedge \cdots \wedge v_{\sigma(k)} = \text{sgn}(\sigma) v_1 \wedge \cdots \wedge v_k$(置换符号)

如果 $v_1, \ldots, v_k$ 线性相关,则 $v_1 \wedge \cdots \wedge v_k = 0$

$\dim \Lambda^k V = \binom{n}{k}$,其中 $n = \dim V$

几何直觉:$v_1 \wedge \cdots \wedge v_k$ 表示由这些向量张成的平行多面体的"定向体积"。在 $\mathbb{R}^3$ 中,$v \wedge w$ 对应叉积,其大小是平行四边形的面积,方向由右手定则确定。

定义 9.7(行列式)

设 $T: V \to V$ 是线性算子,$\dim V = n$。$T$ 诱导 $\Lambda^n T: \Lambda^n V \to \Lambda^n V$。由于 $\dim \Lambda^n V = 1$,$\Lambda^n T$ 是标量乘法。这个标量定义为 $T$ 的行列式:

$$\det(T) = \text{标量使得 } (\Lambda^n T)(v_1 \wedge \cdots \wedge v_n) = \det(T) (v_1 \wedge \cdots \wedge v_n)$$

定理 9.5:行列式的性质

$\det(I) = 1$

$\det(AB) = \det(A)\det(B)$

$\det(A^T) = \det(A)$

$\det(A^{-1}) = 1/\det(A)$(如果可逆)

行列式是列(或行)的多线性交替函数

$\det(A) = 0$ 当且仅当 $A$ 不可逆

几何解释

$\det(A)$ 表示线性变换 $A$ 对单位立方体体积的缩放因子。如果 $\det(A) < 0$,则表示方向反转。

深入理解:行列式的绝对值是变换后平行多面体的体积,符号表示定向是否改变。这就是为什么行列式为零意味着变换将空间"压扁"到低维,导致不可逆。

9.5 张量积的应用

量子力学中的张量积

多粒子量子系统的态空间是单粒子态空间的张量积:

$$\mathcal{H}_{\text{total}} = \mathcal{H}_1 \otimes \mathcal{H}_2 \otimes \cdots \otimes \mathcal{H}_n$$

纠缠态是不能写成纯张量积形式的态,如 Bell 态:

$$|\Phi^+\rangle = \frac{1}{\sqrt{2}}(|00\rangle + |11\rangle)$$

深度学习中的张量

  • 输入数据:图像是 3 阶张量(高 × 宽 × 通道)
  • 权重:卷积核是 4 阶张量(输出通道 × 输入通道 × 高 × 宽)
  • 注意力机制:$QK^T$ 本质上是将查询和键投影后进行张量积类型的操作

张量分解

  • CP 分解:将张量分解为秩-1 张量的和
  • Tucker 分解:高阶 SVD,将张量分解为核心张量和因子矩阵的乘积

三、程序员的视角

3.1 在机器学习中的应用

注意力机制:Transformer 中的自注意力计算 $Attention(Q, K, V) = \text{softmax}(\frac{QK^T}{\sqrt{d_k}})V$。这里的 $QK^T$ 可以看作查询和键之间的某种"相关性张量"。

张量分解:将大型权重张量分解为小型因子的张量积,实现模型压缩。如 Tucker 分解、CP 分解。

高阶特征交互:在推荐系统中,使用张量机(Factorization Machines)捕捉用户、物品、上下文之间的高阶交互。

卷积神经网络:卷积操作本质上是张量运算。输入图像、卷积核、输出特征图都是张量。

3.2 常见陷阱与误区

误区 1:认为张量就是多维数组

张量是几何对象,其定义独立于坐标系。多维数组只是张量在特定基下的表示。张量的分量在基变换下按照特定规则变化。

误区 2:混淆张量积与克罗内克积

克罗内克积是张量积在矩阵表示中的一种实现,但张量积是更抽象的概念。

误区 3:忽略外积的反对称性

外积 $v \wedge w = -w \wedge v$,这与普通乘法不同。这反映了"定向"的概念。

误区 4:认为行列式只用于判断可逆性

行列式的几何意义(体积缩放)和代数意义(特征值乘积)同样重要。

误区 5:忽视张量分解的近似性质

与矩阵 SVD 不同,高阶张量的最佳低秩近似不一定存在(可能只有下确界而无最小值)。

3.3 与其他层级的联系

  • 与微分几何的联系:微分形式是外代数的元素;外导数是微分形式的导数
  • 与量子力学的联系:多粒子态空间是张量积空间
  • 与深度学习的联系:高阶张量操作用于特征提取和注意力计算
  • 与数值分析的联系:张量分解用于降维和压缩
  • 与广义相对论的联系:时空曲率由黎曼曲率张量描述

四、代码实战

9.1 张量积计算

python
import numpy as np

def tensor_product(v, w):
    """
    计算两个向量的张量积(外积)
    
    参数:
    v: m 维向量
    w: n 维向量
    
    返回:
    m x n 矩阵,表示 v ⊗ w
    """
    return np.outer(v, w)

# 示例
v = np.array([1, 2, 3])
w = np.array([4, 5])

V_otimes_W = tensor_product(v, w)
print("v ⊗ w:")
print(V_otimes_W)

# 验证维度
print(f"\n维度: {V_otimes_W.shape} = {len(v)} x {len(w)}")

# 张量积的线性性质
v2 = np.array([0, 1, 0])
result = tensor_product(v + v2, w)
expected = tensor_product(v, w) + tensor_product(v2, w)
print(f"\n线性性验证: {np.allclose(result, expected)}")

# 多个向量的张量积
u = np.array([1, 0])
# u ⊗ v ⊗ w 是 3 阶张量
tensor_3rd = np.einsum('i,j,k->ijk', u, v, w)
print(f"\n3 阶张量形状: {tensor_3rd.shape}")

9.2 外积与行列式

python
import numpy as np

def wedge_product_2d(v, w):
    """
    计算 R^2 中两个向量的外积(标量,表示有向面积)
    """
    return v[0] * w[1] - v[1] * w[0]

def wedge_product_3d(v, w):
    """
    计算 R^3 中两个向量的外积(向量,叉积)
    """
    return np.cross(v, w)

# 2D 示例
v = np.array([1, 2])
w = np.array([3, 4])

area = wedge_product_2d(v, w)
print(f"v ∧ w 的有向面积: {area}")

# 与行列式的关系
matrix = np.column_stack([v, w])
det = np.linalg.det(matrix)
print(f"det([v, w]): {det}")
print(f"两者相等: {np.isclose(area, det)}")

# 3D 示例
v3 = np.array([1, 0, 0])
w3 = np.array([0, 1, 0])

cross = wedge_product_3d(v3, w3)
print(f"\nv × w (叉积): {cross}")

# 三个向量的外积(有向体积)
u3 = np.array([0, 0, 1])
volume = np.dot(cross, u3)  # 混合积
det_3d = np.linalg.det(np.column_stack([v3, w3, u3]))
print(f"有向体积: {volume}")
print(f"det([v, w, u]): {det_3d}")

# 验证行列式的多线性
a = np.array([1, 0, 0])
b = np.array([0, 1, 0])
c = np.array([0, 0, 1])

# det(a, b, c) = 1
print(f"\ndet(a, b, c) = {np.linalg.det(np.column_stack([a, b, c]))}")

# det(2a, b, c) = 2
print(f"det(2a, b, c) = {np.linalg.det(np.column_stack([2*a, b, c]))}")

# det(a+b, b, c) = det(a, b, c) + det(b, b, c) = 1 + 0 = 1
print(f"det(a+b, b, c) = {np.linalg.det(np.column_stack([a+b, b, c]))}")

9.3 二次型与正定性判定

python
import numpy as np

def is_positive_definite(A):
    """
    判断对称矩阵是否正定
    
    参数:
    A: 对称矩阵
    
    返回:
    bool: 是否正定
    """
    # 方法1:检查特征值
    eigenvalues = np.linalg.eigvalsh(A)
    if np.all(eigenvalues > 0):
        return True
    
    return False

def sylvester_criterion(A):
    """
    Sylvester 准则:检查顺序主子式
    
    参数:
    A: 对称矩阵
    
    返回:
    bool: 是否正定
    """
    n = A.shape[0]
    for k in range(1, n + 1):
        submatrix = A[:k, :k]
        det = np.linalg.det(submatrix)
        if det <= 0:
            return False
    return True

def cholesky_check(A):
    """
    尝试 Cholesky 分解
    
    参数:
    A: 对称矩阵
    
    返回:
    bool: 是否正定
    """
    try:
        np.linalg.cholesky(A)
        return True
    except np.linalg.LinAlgError:
        return False

# 示例
A = np.array([[2, 1],
              [1, 2]])

print("矩阵 A:")
print(A)
print(f"特征值: {np.linalg.eigvalsh(A)}")
print(f"是否正定(特征值法): {is_positive_definite(A)}")
print(f"是否正定(Sylvester): {sylvester_criterion(A)}")
print(f"是否正定(Cholesky): {cholesky_check(A)}")

# 不定矩阵
B = np.array([[1, 0],
              [0, -1]])
print(f"\n矩阵 B:")
print(B)
print(f"特征值: {np.linalg.eigvalsh(B)}")
print(f"是否正定: {is_positive_definite(B)}")

# 二次型可视化
import matplotlib.pyplot as plt

x = np.linspace(-2, 2, 100)
y = np.linspace(-2, 2, 100)
X, Y = np.meshgrid(x, y)

# Q(x,y) = [x,y] A [x;y]
Z = A[0,0]*X**2 + 2*A[0,1]*X*Y + A[1,1]*Y**2

plt.figure(figsize=(10, 8))
contour = plt.contour(X, Y, Z, levels=20)
plt.clabel(contour, inline=True, fontsize=8)
plt.title('Quadratic Form: $x^T Ax$')
plt.xlabel('x')
plt.ylabel('y')
plt.grid(True, alpha=0.3)
plt.axis('equal')
plt.savefig('/tmp/quadratic_form.png', dpi=150, bbox_inches='tight')
plt.show()

9.4 张量分解(Tucker 分解)

python
import numpy as np

# 手动实现简单的 Tucker 分解
def tucker_decompose(tensor, ranks):
    """
    简化的 Tucker 分解
    
    参数:
    tensor: 3 阶张量
    ranks: 各阶的秩 (r1, r2, r3)
    
    返回:
    core: 核心张量
    factors: 因子矩阵列表
    """
    modes = len(tensor.shape)
    factors = []
    
    for mode in range(modes):
        # 沿当前模式展开
        unfolded = np.moveaxis(tensor, mode, 0).reshape(tensor.shape[mode], -1)
        
        # SVD
        U, Sigma, Vt = np.linalg.svd(unfolded, full_matrices=False)
        
        # 取前 rank 个左奇异向量
        factors.append(U[:, :ranks[mode]])
    
    # 计算核心张量
    core = tensor
    for mode in range(modes):
        core = np.tensordot(core, factors[mode].T, axes=(mode, 1))
    
    return core, factors

# 创建 3 阶张量
np.random.seed(42)
tensor = np.random.rand(10, 8, 6)

# Tucker 分解
ranks = (5, 4, 3)
core, factors = tucker_decompose(tensor, ranks)

print("核心张量形状:", core.shape)
print("因子矩阵形状:")
for i, f in enumerate(factors):
    print(f"  因子 {i+1}: {f.shape}")

# 重构
reconstructed = core
for mode, f in enumerate(factors):
    reconstructed = np.tensordot(reconstructed, f, axes=(mode, 1))
    reconstructed = np.moveaxis(reconstructed, -1, mode)

print(f"\n重构误差: {np.linalg.norm(tensor - reconstructed):.6f}")
print(f"压缩率: {tensor.size / (core.size + sum(f.size for f in factors)):.2f}x")

9.5 注意力机制中的张量操作

python
import numpy as np

def scaled_dot_product_attention(Q, K, V):
    """
    缩放点积注意力
    
    参数:
    Q: 查询矩阵 (batch_size, seq_len, d_k)
    K: 键矩阵 (batch_size, seq_len, d_k)
    V: 值矩阵 (batch_size, seq_len, d_v)
    
    返回:
    注意力输出
    """
    d_k = Q.shape[-1]
    
    # 计算注意力分数: QK^T / sqrt(d_k)
    scores = np.einsum('bij,bkj->bik', Q, K) / np.sqrt(d_k)
    
    # Softmax
    exp_scores = np.exp(scores - np.max(scores, axis=-1, keepdims=True))
    attention_weights = exp_scores / np.sum(exp_scores, axis=-1, keepdims=True)
    
    # 加权求和
    output = np.einsum('bik,bkj->bij', attention_weights, V)
    
    return output, attention_weights

# 示例
np.random.seed(42)
batch_size = 2
seq_len = 5
d_k = 8
d_v = 16

Q = np.random.randn(batch_size, seq_len, d_k)
K = np.random.randn(batch_size, seq_len, d_k)
V = np.random.randn(batch_size, seq_len, d_v)

output, weights = scaled_dot_product_attention(Q, K, V)
print(f"注意力输出形状: {output.shape}")
print(f"注意力权重形状: {weights.shape}")
print(f"\n样本注意力权重矩阵 (batch 0):")
print(weights[0].round(3))

五、深入思考

5.1 历史背景

多线性代数的发展:

  • 19世纪:Grassmann 引入了外代数;Ricci 和 Levi-Civita 发展了张量分析
  • 20世纪初:Einstein 在广义相对论中使用了张量记号
  • 1930年代:Cartan 系统研究了外微分形式
  • 1980年代:张量分解在化学计量学中开始应用
  • 2000年代:张量方法在机器学习和数据科学中兴起
  • 2010年代:深度学习推动了高阶张量运算的研究

5.2 前沿方向

张量神经网络:将张量分解与神经网络结合,实现高效的模型压缩和加速。Tensor Train 和 Tensor Ring 分解用于压缩大型神经网络。

量子张量网络:使用张量网络表示量子多体态,如 MPS、PEPS、MERA。这在凝聚态物理和量子计算中有重要应用。

几何深度学习:将群论和张量分析结合,构建具有几何不变性的神经网络。

高阶优化:使用张量信息(如 Hessian)进行二阶优化,加速收敛。

5.3 延伸阅读

Sheldon Axler, Linear Algebra Done Right, 3rd Edition, Springer, 2015 - Chapter 9

Loring W. Tu, An Introduction to Manifolds - 外代数和微分形式

Tamara G. Kolda, Brett W. Bader, "Tensor Decompositions and Applications" - SIAM Review 综述

Sergey Levine et al., "TensorFlow for Machine Learning" - 张量在深度学习中的应用

Wolfgang Hackbusch, Tensor Spaces and Numerical Tensor Calculus - 张量计算的数值方法


六、实验笔记

实验 1:探索二次型的几何性质

目标:理解二次型与二次曲面的关系

步骤:

选择不同的对称矩阵 $A$(正定、半正定、不定)

绘制对应的二次型 $Q(x) = x^T A x$ 的等高线图

观察等高线的形状(椭圆、双曲线、抛物线)

计算特征值和主轴方向,验证主轴定理

尝试非对称矩阵,观察结果

扩展:在 3D 中可视化二次曲面,使用 matplotlib 的 plot_surface。

实验 2:张量积在注意力机制中的应用

目标:理解 Transformer 中注意力计算的张量本质

步骤:

实现简化的自注意力机制

分析 $QK^T$ 的计算过程,理解其与张量积的关系

可视化注意力权重矩阵

尝试不同的缩放因子,观察 softmax 的输出变化

研究多头注意力如何捕捉不同的特征交互

挑战:实现一个基于张量分解的注意力机制变体,减少参数量。

实验 3:外积与体积计算

目标:理解外积的几何意义

步骤:

在 $\mathbb{R}^3$ 中选择三个向量

计算它们的外积(混合积)

验证结果等于由这三个向量张成的平行六面体的体积

改变向量顺序,观察符号变化

验证线性相关性时外积为零

python
import numpy as np

# 三个向量
a = np.array([1, 0, 0])
b = np.array([0, 1, 0])
c = np.array([0, 0, 1])

# 混合积 = 行列式
volume = np.dot(a, np.cross(b, c))
print(f"平行六面体体积: {volume}")
print(f"det([a,b,c]): {np.linalg.det(np.column_stack([a, b, c]))}")

# 改变顺序
volume_perm = np.dot(b, np.cross(a, c))
print(f"\n改变顺序后: {volume_perm}")
print(f"符号变化: {volume_perm == -volume}")

# 线性相关
d = np.array([1, 1, 0])
e = np.array([2, 2, 0])  # e = 2d
f = np.array([0, 0, 1])

volume_dep = np.dot(d, np.cross(e, f))
print(f"\n线性相关时的体积: {volume_dep}")

七、本章小结

本章介绍了多线性代数的基本概念,核心内容包括:

核心概念:

  • 双线性形式是两个变元的线性函数,二次型是其特殊情况
  • 张量积通过泛性质定义了"最一般"的双线性构造
  • 张量是多线性映射,可以用多维数组表示
  • 外积是反对称的双线性运算,捕捉定向体积
  • 行列式是线性变换对体积的缩放因子

关键定理:

  • 主轴定理:二次型可以通过正交变换对角化
  • 张量积的泛性质:双线性映射等价于线性映射
  • Sylvester 准则:正定性可通过顺序主子式判定
  • 行列式的多重线性交替性质

几何直觉:

  • 二次型对应二次曲面(椭球、双曲面等)
  • 张量积将多个空间"粘合"成新空间
  • 外积表示定向平行多面体的体积
  • 行列式表示体积缩放

编程实践:

  • 用 np.outer 计算张量积
  • 用行列式计算有向体积
  • 用特征值判定正定性
  • 用 Tucker 分解压缩张量
  • 实现注意力机制中的张量操作

应用领域:

  • 量子力学:多粒子态空间
  • 深度学习:注意力机制、张量分解
  • 微分几何:度量张量、曲率
  • 物理学:广义相对论

多线性代数是线性代数的高级主题,为微分几何、量子力学、深度学习等领域提供了基础语言。


八、习题

基础题

判断下列双线性形式是否对称、正定:

- (a) $B(x, y) = x_1y_1 + 2x_2y_2$

- (b) $B(x, y) = x_1y_2 + x_2y_1$

- (c) $B(x, y) = x_1y_1 - x_2y_2$

计算向量 $(1, 2, 3)$ 和 $(4, 5)$ 的张量积,并验证其维度。

计算 $\begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix}$ 的行列式,并解释其几何意义。

证明:如果 $v_1, \ldots, v_k$ 线性相关,则 $v_1 \wedge \cdots \wedge v_k = 0$。提示:利用外积的交替性。

进阶题

设 $A$ 是 $n \times n$ 对称矩阵。证明:$A$ 正定当且仅当存在可逆矩阵 $C$ 使得 $A = C^T C$。进一步,证明 $C$ 可以选为上三角矩阵(Cholesky 分解)。

设 $V$ 和 $W$ 是有限维向量空间。证明:$(V \otimes W)^ \cong V^ \otimes W^*$。提示:构造自然同构。

证明:$\det(AB) = \det(A)\det(B)$,使用外代数的定义。提示:考虑 $\Lambda^n(AB)$。

设 $T: V \to V$ 是线性算子。证明:$\det(T) = \prod_{i=1}^n \lambda_i$,其中 $\lambda_i$ 是特征值。提示:使用三角化。

挑战题

证明 Cayley-Hamilton 定理:设 $p_T$ 是 $T$ 的特征多项式,则 $p_T(T) = 0$。(使用三角化或 Jordan 标准形)进一步,利用此定理证明:任何 $n \times n$ 矩阵的逆(如果存在)可以表示为该矩阵的 $n-1$ 次多项式。

设 $T$ 是 $(k, l)$-张量。证明:在基变换下,$T$ 的分量按照特定的变换规则变化,保持张量的几何意义不变。具体地,如果基从 $\{e_i\}$ 变为 $\{e'_i\}$,变换矩阵为 $P$,则分量如何变化?

9/9多线性代
0%