这是线性代数最有「魔力」的一节,也是 AI 里出镜率最高的概念之一。核心问题:一个变换里,有没有某些方向,只被拉伸、不被旋转?
一、定义
对方阵 A,如果存在非零向量 v 和标量 λ 使得:
Av=λv
则 v 是特征向量(eigenvector),λ 是对应的特征值(eigenvalue)。
几何含义:一般向量被 A 作用后会「又转又拉」,但特征向量很特别——它只被拉伸(或压缩、翻转),方向不变。λ 就是拉伸的倍数:λ>1 拉长,0<λ<1 压短,λ<0 反向。
直觉比喻:把变换想象成水流。大多数树叶被冲得又转又偏,但沿特征向量方向放的叶子只会笔直加速或减速。这些方向是系统的「骨架」。
二、怎么求
把定义改写成 (A−λI)v=0。要有非零解,系数阵必须不可逆,即行列式为零:
det(A−λI)=0
这叫特征方程,解出 λ 后回代求 v。(实际中高维用迭代算法,不手算行列式。)
三、对角化(Diagonalization)
若 n 阶矩阵有 n 个线性无关的特征向量,则可写成:
A=PΛP−1
其中 Λ 是特征值摆在对角线上的对角阵。意义:换到特征向量为基的坐标系里,这个复杂变换就变成「沿各轴独立缩放」这么简单。这让反复作用变得容易:Ak=PΛkP−1,只需对对角元素取 k 次方。
对称矩阵更好:一定可用正交矩阵对角化(谱定理),特征值全为实数,特征向量互相正交。协方差矩阵正是这种,这是 PCA 成立的基础。
四、跨领域应用
AI —— PCA 主成分分析:对数据的协方差矩阵求特征值/向量。特征向量指出数据「方差最大」(信息最多)的方向,特征值就是该方向上的方差。取前几个最大特征值对应的方向,就把高维数据压到低维而尽量不丢信息。这是最经典的降维方法。
区块链 / 搜索 —— PageRank 与马尔可夫链:网页(或节点)重要度是转移矩阵的主特征向量(对应特征值 1)。反复乘转移矩阵会收敛到这个特征向量——这就是网络的「稳态分布」。区块链里分析代币流转、质押状态演化用的是同一套马尔可夫链数学。详细数值案例见第五节·示例一。
工程 —— 稳定性与振动:动力系统是否稳定,看特征值的符号/模长;深度学习里梯度爆炸/消失,本质是反复连乘矩阵后特征值的幂走向了无穷或零。
五、应用案例:矩阵迭代与系统状态演化
特征值最深刻的应用之一是分析迭代系统的长期行为。用向量 vt 表示系统在 t 时刻的状态,矩阵 M 编码演化规则:
vt+1=Mvt,k 步后 vk=Mkv0
系统的长期行为——是收敛、增长还是衰减——完全由 M 的特征值决定。下面用两个例子展示这套骨架如何套到不同领域。
示例一:马尔可夫链(用户行为)
某电商用户,每一步处于「浏览(B)」或「购买(P)」之一,跳转规律:
- 当前 B:70% 留 B,30% 转 P
- 当前 P:40% 回 B,60% 留 P
建模:状态向量与转移矩阵
状态向量:vt=(vB,vP)⊤ 记 t 时刻的概率分布,两分量分别是「处于 B 的概率」和「处于 P 的概率」,和为 1。
转移矩阵:约定 Mij = 从状态 j 跳到状态 i 的概率,即列 = 当前状态,行 = 下一步目标状态。逐列填入:
- 第 1 列(当前在 B):B→B = 0.7,B→P = 0.3
- 第 2 列(当前在 P):P→B = 0.4,P→P = 0.6
M=(0.70.30.40.6)
验证:每列和为 1(从任一当前状态出发,下一步总概率 = 1)。一步演化:vt+1=Mvt,k 步后 vk=Mkv0。
数值演化
从 v0=(1,0)⊤(100% 浏览)出发,每步左乘 M:
v1=Mv0=(0.70.30.40.6)(10)=(0.7000.300)
v2=Mv1=(0.70.30.40.6)(0.70.3)=(0.6100.390)
v3=Mv2=(0.7×0.61+0.4×0.390.3×0.61+0.6×0.39)=(0.5830.417)
v4≈(0.5750.425),v5≈(0.5720.428),v10≈(0.57140.4286),v20≈(0.57140.4286)——相邻两次迭代的差已小于 10−3,继续迭代只是无限逼近稳态 π。
稳态分布
迭代足够多次后,状态分布会稳定在一个固定值附近,不再变化。这个极限分布就叫稳态分布(Stationary Distribution)。
它是一个列向量 π=(π1,π2,…,πn)⊤,每个分量表示系统长期处于对应状态的概率,满足 ∑πi=1。在本例中,π=(a,b)⊤,a 和 b 分别是长期处于浏览和购买状态的概率。
稳态分布满足一个很自然的条件:再转移一步也不变,即
Mπ=π
求解:流入 = 流出
设 π=(a,b)⊤,a+b=1。系统稳定时,每个状态的「流入人数」必须等于「流出人数」:
- B → P 的比例:0.3a
- P → B 的比例:0.4b
两者相等:0.3a=0.4b,结合 a+b=1,解得
a=74,b=73⟹π=(4/73/7)≈(0.5710.429)
长期来看,约 57.1% 的用户处于浏览状态,42.9% 处于购买状态。
与特征值的关系
把 Mπ=π 改写成 Mπ=1⋅π,立刻看出:稳态分布就是矩阵 M 对应特征值 λ=1 的特征向量。这正是对角化发挥作用的场景:若 M=PΛP−1,则 Mk=PΛkP−1,计算 Mkv0 只需对对角元各自取 k 次方。
推广到一般马尔可夫链
上面是两状态的例子。一般地,任何满足以下条件的系统都可以用马尔可夫链描述:
- 状态有限;
- 下一步只取决于当前状态(无记忆);
- 转移概率不随时间变化。
核心公式不变:vt+1=Mvt,vk=Mkv0。稳态分布的定义和求解方式也完全一样:解 Mπ=π,加上 ∑πi=1。
什么时候会收敛? 如果任意状态之间最终都能互相到达、且不会陷入固定周期(称为遍历的 / ergodic),那么不管初始状态如何,长期都会收敛到唯一的稳态分布。
小结:稳态分布满足 Mπ=π,即 M 在特征值 1 下的特征向量。概率论关心它代表什么,线性代数关心怎么算出来。
延伸阅读
- λ=1 为什么一定存在?转移矩阵每列和为 1,意味着 M⊤ 每行和为 1,因此 M⊤⋅(1,1,…)⊤=(1,1,…)⊤,即 M⊤ 有特征值 1。而 M 与 M⊤ 特征值相同(det(M−λI)=det(M⊤−λI)),所以 M 也一定有特征值 1。
- 为什么求出的 π 分量都是非负的(概率有意义)?这由 Perron–Frobenius 定理保证:非负矩阵的最大模特征值一定对应一个非负特征向量。转移矩阵 M 的元素全部非负,λ=1 正是其最大模特征值,因此对应的特征向量各分量自然非负。
- 如何快速计算 Mk?若 M 可对角化为 M=PΛP−1,则 Mk=PΛkP−1——对角矩阵 Λ 的 k 次方只需对每个对角元各自求幂,计算量大幅降低。这正是第三节对角化的主要动机之一。
示例二:Leslie 矩阵(总量可变)
如果矩阵不再要求「列和为 1」,系统会怎样?答案是总量不再守恒——既可能增长,也可能衰减。生态学里的 Leslie 矩阵就是典型代表,它的骨架同样是 Nk=LkN0,但允许种群指数增长。
把种群按年龄分组,状态向量各分量是各组数量;矩阵编码「繁殖 + 存活率」,各列不要求和为 1,所以总量可增可减。约定同样是列 = 当前年龄组、行 = 下一期年龄组。
某鸟类分幼年与成年。规律:每只成年每期产 3 只幼崽;幼年 50% 存活升为成年;成年 80% 存活;幼年不繁殖。按约定填入(第 1 行/列 = 幼年,第 2 行/列 = 成年):
L=(00.530.8)
数值演化
从 N0=(10,20)⊤ 出发,每步左乘 L:
N1=LN0=(0⋅10+3⋅200.5⋅10+0.8⋅20)=(6021)
N2=LN1=(0⋅60+3⋅210.5⋅60+0.8⋅21)=(6346.8)
N3=LN2=(0⋅63+3⋅46.80.5⋅63+0.8⋅46.8)=(140.468.9)
继续迭代,观察总量、幼占比和增长率的变化:
| k | Nk(幼, 成) | 总量 | 幼占比 | 增长率 |
|---|
| 0 | (10, 20) | 30 | 33.3% | — |
| 1 | (60, 21) | 81 | 74.1% | 2.70 |
| 2 | (63, 46.8) | 109.8 | 57.4% | 1.36 |
| 3 | (140.4, 68.9) | 209.3 | 67.1% | 1.91 |
| 4 | (206.8, 125.4) | 332.2 | 62.3% | 1.59 |
| 5 | (376.1, 203.7) | 579.8 | 64.9% | 1.75 |
| 6 | (611.1, 351.0) | 962.1 | 63.5% | 1.66 |
| 7 | (1053.1, 582.6) | 1635.7 | 64.4% | 1.70 |
| 8 | (1747.7, 993.6) | 2741.3 | 63.8% | 1.68 |
| 9 | (2980.7, 1666.9) | 4647.6 | 64.1% | 1.70 |
| 10 | (5000.8, 2983.5) | 7984.3 | 64.1% | 1.69 |
两个量都在收敛:增长率在 1.69 附近振荡(振幅递减),幼占比趋近 64.1%。但与马尔可夫链不同,这里总量不守恒,种群在持续增长。
稳定增长状态
从上面的数值实验可以看到,增长率在 1.69 附近振荡收敛,幼占比趋近 64.1%。这说明系统进入了一种稳定增长状态:年龄结构比例固定,总量每代乘以同一个倍数。
这个状态满足:
Lv=λv
其中 λ 是每代的增长倍数,v 是稳定的年龄结构比例。
与马尔可夫链的对比:稳态分布满足 Mπ=1⋅π(转一步后分布不变);这里满足 Lv=λ⋅v(转一步后比例不变,总量乘以 λ)。
求解:特征值与特征向量
求最大特征值:解特征方程 det(L−λI)=0:
det(−λ0.530.8−λ)=(−λ)(0.8−λ)−3⋅0.5=λ2−0.8λ−1.5=0
求根公式:
λ=20.8±0.64+6=20.8±6.64≈{1.69−0.89(λmax)(λ2)
λmax≈1.69,意味着每代总量乘以约 1.69(增长约 69%)。
求对应的特征向量(稳定年龄结构):解 (L−λmaxI)v=0,第一行给出:
−λmaxvj+3va=0⟹vavj=λmax3≈1.693≈1.78
归一化后:幼年占比 vj+vavj=λmax+33≈64%,成年占比 ≈36%——与迭代数据的收敛方向一致。
与特征值的关系
Lv=λmaxv 正是特征值定义。与马尔可夫链的对比:
- 马尔可夫链:λ=1 → 总量不变,只关心分布
- Leslie 矩阵:λmax>1 → 总量增长;λmax<1 → 总量衰减;λmax=1 → 总量不变
所以 λmax 同时回答了两个问题:总量是否增长(看 λmax 与 1 的关系)和结构是否稳定(对应特征向量给出比例)。
为什么增长率是振荡收敛的? 注意 λ2≈−0.89 是负数。分解 Nk 时,λ2 对应的项逐代正负交替((−0.89)k),这就是增长率忽高忽低的原因。同时 ∣λ2∣<λmax,所以 λ2 项的贡献相对 λmax 逐代衰减——振荡幅度越来越小,最终稳定在 λmax≈1.69。
推广到一般 Leslie 矩阵
上面是两年龄组的例子。一般地,任何按年龄分组、用「繁殖率 + 存活率」描述种群演化的系统都可以用 Leslie 矩阵描述。核心公式不变:
Nk+1=LNk,Nk=LkN0
稳定增长状态的定义和求解方式也完全一样:解 Lv=λmaxv,其中 λmax 是最大特征值,v 是对应的特征向量。
小结:马尔可夫链与 Leslie 矩阵共享 vk=Mkv0 的骨架。区别在于:马尔可夫链列和为 1(总量守恒),收敛到稳态分布(λ=1 的特征向量);Leslie 矩阵列和无约束(总量可变),趋于固定增长率 λmax 和稳定年龄结构。两者长期行为都由主特征值及其特征向量决定——这正是 Perron–Frobenius 定理的核心结论。
延伸阅读
- λmax 为什么一定存在且为正实数?Leslie 矩阵是非负矩阵,Perron–Frobenius 定理保证其最大模特征值为正实数,且对应非负特征向量——这意味着稳定年龄结构中各年龄组的数量都是非负的。
- 为什么增长率会振荡收敛而非单调收敛?因为次大特征值 λ2 为负数,对应项正负交替贡献;若 ∣λ2∣<λmax,振荡幅度逐代衰减。马尔可夫链的 λ2 为正数,所以是单调收敛。
- 如何快速计算 Lk?与马尔可夫链一样,若 L 可对角化为 L=PΛP−1,则 Lk=PΛkP−1,计算量大幅降低。
六、小结
| 概念 | 一句话理解 | 典型应用 |
|---|
| 特征向量 | 变换里不转只拉的方向 | PCA 主方向、稳态 |
| 特征值 | 该方向上的拉伸倍数 | 方差大小、稳定性 |
| 对角化 | 换基后变成纯缩放 | 高效幂运算 |
| 谱定理 | 对称阵可正交对角化 | PCA 的基础 |
下一节:特征值只适用于方阵。对任意形状的矩阵(比如用户×商品评分表),有一个更通用的神器——奇异值分解 SVD。
七、进阶:幂迭代(计算机怎么求主特征向量)
高维矩阵无法手解特征方程,实际用 幂迭代(Power Iteration):随便取一个向量,反复乘矩阵并归一化,它会收敛到最大特征值对应的特征向量。
xk+1=∥Axk∥Axk
道理:把初始向量按特征向量展开,每乘一次 A,各分量被各自特征值放大,最大的那个越来越占主导,最终「碾压」其余方向。PageRank 就是对网页转移矩阵做幂迭代。
八、谱与迹、行列式的关系
全体特征值的集合叫谱(Spectrum)。两个好用的速查恒等式:
tr(A)=∑iλi(迹=特征值之和),det(A)=∏iλi(行列式=特征值之积)
所以只要有一个特征值为 0,行列式就为 0,矩阵不可逆——和第 3 节完全自洽。
九、数字例题(步步算)
求 A=[2112] 的特征值与特征向量。
特征方程:det(A−λI)=(2−λ)2−1=0⇒λ2−4λ+3=0⇒λ1=3,λ2=1。
- λ1=3:解 (A−3I)v=0 得 v1=[11]。
- λ2=1:解得 v2=[1−1]。
验证:迹 =2+2=4=3+1✓,行列式 =4−1=3=3×1✓。两特征向量正交(对称矩阵的必然结果)。
十、NumPy 代码
import numpy as np
A = np.array([[2.0, 1.0], [1.0, 2.0]])
vals, vecs = np.linalg.eig(A)
print("特征值 =", vals) # [3. 1.]
print("特征向量(列)=\n", vecs)
# 幂迭代求主特征向量
x = np.random.randn(2)
for _ in range(50):
x = A @ x
x = x / np.linalg.norm(x)
print("幂迭代结果 =", x, " 主特征值 ≈", x @ A @ x)
# PCA:对协方差矩阵做特征分解
X = np.random.randn(200, 5)
X -= X.mean(0)
cov = np.cov(X, rowvar=False)
ev, _ = np.linalg.eigh(cov)
print("各主成分方差(降序) =", np.sort(ev)[::-1])
十一、动手算一算
- 求 [300−2] 的特征值(不用算,直接看)。
- 一个马尔可夫转移矩阵的最大特征值是多少?对应特征向量是什么含义?
- 若某层权重反复相乘后特征值模长都 <1,前向/反向传播会发生什么?
答案:(1) 对角矩阵特征值就是对角元 3 和 -2。(2) 最大特征值为 1,对应特征向量(归一化后)是稳态分布,即长期访问概率。(3) 信号/梯度逐层衰减→梯度消失,深层难以训练;这也是要用残差连接、归一化的原因。