线性代数教程 · 第9章

线性代数进阶专题

若尔当型、张量与深度学习

← Linear Algebra Tutorial

9.1 若尔当标准型

当矩阵不能对角化时(几何重数 < 代数重数),若尔当标准型是最接近对角化的形式

任何复方阵 A 都可以写成 A = PJP⁻¹,其中 J 是若尔当矩阵 —— 由若尔当块组成的块对角矩阵。每个若尔当块对应一个特征值,块的大小反映了"广义特征向量"的链长。

示例:不可对角化矩阵

A = [[1, 1], [0, 1]] 只有一个特征值 λ=1,但只有一个线性无关的特征向量。它的若尔当型就是自身 —— 一个 2×2 的若尔当块。

虽然不可对角化,但 A 可以写成 I + N,其中 N = [[0,1],[0,0]] 是幂零矩阵(N²=0)。这使得计算 Aⁿ 仍然简单:Aⁿ = (I+N)ⁿ = I + nN。

若尔当型的意义

若尔当型告诉我们"不可对角化"究竟意味着什么:某些特征方向上有"链式"结构。在微分方程中,这对应于共振现象 —— 解中出现 t·e^(λt) 形式的项。

9.2 张量与多维数组

张量是向量和矩阵的高维推广。标量是 0 阶张量,向量是 1 阶张量,矩阵是 2 阶张量

在工程和物理中,张量无处不在:应力张量(描述材料内部受力)、惯性张量(描述刚体转动)、黎曼曲率张量(描述时空弯曲)。

示例:彩色图像是三阶张量

一幅 H×W 的彩色图像可以表示为 H×W×3 的三阶张量,第三维对应 RGB 三个通道。视频则是 H×W×3×T 的四阶张量。

张量分解:与矩阵的 SVD 类似,张量可以分解为秩-1 张量的和(CP 分解)或矩阵乘积的形式(Tucker 分解)。这在数据压缩和特征提取中有重要应用。

爱因斯坦求和约定

张量运算中,重复的指标表示求和。例如矩阵乘法 Cᵢⱼ = ∑ₖ AᵢₖBₖⱼ 可以简写为 Cᵢⱼ = AᵢₖBₖⱼ。这个约定极大地简化了张量方程的书写。

例1:求矩阵 A = [[1,1],[0,1]] 的若尔当标准型
第一步:求特征值
特征方程 (1−λ)² = 0,λ = 1(二重根)
第二步:求特征向量
(A−I)v = 0 → [[0,1],[0,0]]v = 0 → v = (1,0)ᵀ,只有一个线性无关特征向量
第三步:判断可对角化性
几何重数 = 1 < 代数重数 = 2,A 不可对角化
第四步:求广义特征向量
(A−I)w = v → [[0,1],[0,0]]w = (1,0)ᵀ → w = (0,1)ᵀ
第五步:构造若尔当标准型
若尔当块 J = [[1,1],[0,1]],变换矩阵 P = [[1,0],[0,1]]
若尔当标准型 J = [[1,1],[0,1]](A 本身已是若尔当型)。
例2:验证 Aⁿ = (I+N)ⁿ = I+nN(其中 N²=0),对 A = [[1,1],[0,1]]
第一步:分解 A
A = I + N,其中 I = [[1,0],[0,1]],N = [[0,1],[0,0]]
第二步:验证 N² = 0
N² = [[0,1],[0,0]] × [[0,1],[0,0]] = [[0,0],[0,0]] = 0 ✓
第三步:应用二项式定理
(I+N)ⁿ = I + nN + C(n,2)N² + ... = I + nN(因为 N² 及更高次项全为零)
第四步:写出 Aⁿ
Aⁿ = [[1,n],[0,1]]
第五步:验证
A³ = [[1,3],[0,1]] = [[1,1],[0,1]]³ ✓
Aⁿ = [[1,n],[0,1]],幂运算极其简单。
例3:计算两个向量的外积(张量积)u ⊗ v
第一步:确定向量
u = (1,2)ᵀ,v = (3,4,5)ᵀ
第二步:计算外积
u⊗v = uvᵀ = [[1×3, 1×4, 1×5],[2×3, 2×4, 2×5]] = [[3,4,5],[6,8,10]]
第三步:验证秩
外积是秩-1 矩阵,可以验证:det(u⊗v) = 0(2×3 矩阵无行列式,但任意 2×2 子式行列式为零)
第四步:物理意义
外积将向量 u 映射到 v 方向的投影,结果矩阵的每一行是 v 的倍数。
u⊗v = [[3,4,5],[6,8,10]],秩为 1。

9.3 工程应用:深度学习中的线性代数

深度学习本质上是 大规模矩阵和张量运算。理解线性代数是理解神经网络的基础。

概念深度学习中的对应
矩阵乘法全连接层的前向传播
卷积带权值共享的稀疏矩阵乘法
特征分解注意力机制中的相似度计算
SVD模型压缩、推荐系统
梯度反向传播中的雅可比向量积
正交初始化防止梯度消失/爆炸
工程实例:Transformer 的注意力机制

注意力计算为 Attention(Q, K, V) = softmax(QKᵀ/√d)V。其中 QKᵀ 是矩阵乘法,softmax 是逐行非线性变换。整个 Transformer 就是由矩阵乘法、层归一化和激活函数堆叠而成。

模型并行:大型语言模型(如 GPT)的参数矩阵太大,无法放入单个 GPU。通过将矩阵按行或列切分,分布在多个 GPU 上并行计算,这就是线性代数在分布式系统中的直接应用。

% MATLAB:简单的神经网络前向传播 % 输入层(4) -> 隐藏层(3) -> 输出层(2) X = randn(10, 4); % 10个样本,4维特征 W1 = randn(4, 3); % 第一层权重 b1 = zeros(1, 3); W2 = randn(3, 2); % 第二层权重 b2 = zeros(1, 2); % 前向传播(全是矩阵运算) Z1 = X * W1 + b1; % 线性变换 A1 = max(Z1, 0); % ReLU激活 Z2 = A1 * W2 + b2; % 输出 % 反向传播需要计算梯度(也是矩阵运算)

总结与展望

线性代数是现代科学和工程的通用语言。从信号处理到计算机图形学,从机器学习到量子力学,线性代数的概念和工具无处不在。

学习路径建议

掌握本教程的内容后,可以进一步学习:数值线性代数(迭代方法、预处理)、泛函分析(无限维空间)、表示论(群与线性映射)、代数几何(多项式与线性代数的交汇)。