从 Bit 到 AGI第二章:数学(Math)

特征值的直觉

从 Bit 到 AGI · 第二章:数学(Math) · 特征值的直觉

作者 David更新于 第 33 篇(共 186 篇)

矩阵乘法一般改变向量的方向。但有些特殊方向只被拉伸、不转向——拉伸倍数就是特征值。本篇给程序员可操作的直觉:特征值描述线性变换的「主轴尺度」,并连接到条件数、谱归一化、以及训练稳定性——不推导特征多项式。

直觉:变换沿哪些轴「纯缩放」

捏橡皮泥:大多数方向会弯;若存在某方向只拉长 2 倍、不弯曲,该方向是特征向量,2 是特征值。

神经网络里,权重矩阵 W\mathbf{W} 反复作用隐状态;若最大特征值 >1>1,信号放大 → 梯度爆炸;<1<1 则衰减 → 梯度消失。谱性质影响深层稳定性。

图表加载中…

定义

对方阵 A∈Rn×n\mathbf{A} \in \mathbb{R}^{n \times n},若存在非零 v\mathbf{v} 和标量 λ\lambda 使:

Av=λv\mathbf{A}\mathbf{v} = \lambda \mathbf{v}

则 λ\lambda 是特征值,v\mathbf{v} 是特征向量。

对称矩阵(如实对称 A=A⊤\mathbf{A}=\mathbf{A}^\top):特征值全为实数,特征向量正交——协方差矩阵、Hessian 近似常用。

谱半径:ρ(A)=max⁡i∣λi∣\rho(\mathbf{A}) = \max_i |\lambda_i|,迭代 xt+1=Axt\mathbf{x}_{t+1} = \mathbf{A}\mathbf{x}_t 收敛当且仅当 ρ(A)<1\rho(\mathbf{A}) < 1。

条件数(对称正定):κ=λmax⁡/λmin⁡\kappa = \lambda_{\max} / \lambda_{\min};κ\kappa 大 → 优化 landscape 扁长、难收敛。

例子

例 1:对角矩阵

A=diag(2,3,0.5)\mathbf{A} = \mathrm{diag}(2, 3, 0.5),特征值即对角线:2,3,0.52, 3, 0.5。任意轴对齐向量都是特征向量。

例 2:2×2 旋转+缩放

A=[2000.5]\mathbf{A} = \begin{bmatrix} 2 & 0 \\ 0 & 0.5 \end{bmatrix},沿 xx 轴放大 2 倍,沿 yy 轴缩小到 0.5。

import numpy as np

A = np.array([[2.0, 0.0], [0.0, 0.5]])
eigenvalues, eigenvectors = np.linalg.eig(A)
print("λ =", eigenvalues)           # [2.0, 0.5]
print("v =", eigenvectors.T)        # 单位轴

自己拖一下

上面三个例子全是对角阵,特征向量恰好落在坐标轴上——所以你还没真正见过一个需要「找」的特征向量。拖动下面这个 2×2 矩阵,转动白色探针,让它和它的像(蓝箭头)重合:

拖白色探针,转到某个方向让它和它的像共线——那就是特征向量
2.0
1.0
1.0
2.0
λ₁ = 3.00λ₂ = 1.00ρ = 3.00

特征向量是「被 A 作用后不转向的方向」,特征值是它的缩放倍数。正文的例子全是对角阵,特征向量恰好是坐标轴——所以你从没见过一个需要「找」的。 切到「对称(斜特征轴)」预设:特征向量 不在坐标轴上, 拖探针转到 45° 附近,它和它的像就重合了(λ=3);转到 135°,又重合(λ=1)。
切到「迭代」模式:反复算 A·x,看谱半径 ρ=max|λ| 的后果—— ρ 大于 1 轨迹飞出屏幕(梯度爆炸)、ρ 小于 1 塌向原点(梯度消失)、任意起点几步后都吸附到主特征向量方向(这就是幂迭代)。这正是深层网络稳定性的几何来源。

切到「对称(斜特征轴)」预设,你会发现特征向量不在坐标轴上,得转到 45° 才对齐。切到「迭代」模式,反复算 AxA\mathbf{x}:谱半径 ρ>1\rho > 1 时轨迹飞出屏幕,ρ<1\rho < 1 时塌向原点——这正是深层网络里信号爆炸/消失的几何来源,也是下面「谱尺度接近 1」这句话的意思。

例 3:权重初始化与方差

Xavier/He 初始化按 fan-in/fan-out 控制 Var(Wx)\mathrm{Var}(\mathbf{W}\mathbf{x}),避免逐层方差爆炸或消失——本质是让谱尺度接近 1。若 W\mathbf{W} 各奇异值 ≈1\approx 1,深度复合后信号稳定。

初始化适用目标方差尺度
Xaviertanh/sigmoidVar(w)=2/(nin+nout)\mathrm{Var}(w) = 2/(n_{in}+n_{out})
He (Kaiming)ReLUVar(w)=2/nin\mathrm{Var}(w) = 2/n_{in}

量化

概念数值 / 含义
n×nn \times n 特征分解O(n3)O(n^3),7B 矩阵不可做
Power iterationO(n2)O(n^2) 每步,估 λmax⁡\lambda_{\max}
谱归一化(GAN)约束 σmax⁡(W)=1\sigma_{\max}(\mathbf{W}) = 1
Transformer 32 层复合有效 Jacobian 谱连乘,Pre-Norm 缓解
PCA协方差矩阵前 kk 大特征值 → 主成分

奇异值分解(SVD,更一般):A=UΣV⊤\mathbf{A} = \mathbf{U}\mathbf{\Sigma}\mathbf{V}^\top,Σ\mathbf{\Sigma} 对角为奇异值 σi≥0\sigma_i \geq 0。非方阵用 SVD;σmax⁡\sigma_{\max} 类似「最大拉伸」。

你不会对 4096×4096 权重做完整 eigendecomposition——太贵。但谱直觉解释:为何初始化重要、为何谱归一化稳定 GAN、为何 Hessian 最大特征值与学习率上界相关(η<2/λmax⁡\eta < 2/\lambda_{\max})。

工程视角:不必算,但要懂

Hessian 特征值与学习率:凸二次 L=12x⊤Hx\mathcal{L}=\frac{1}{2}\mathbf{x}^\top H \mathbf{x},最优 η=2/(λmax⁡+λmin⁡)\eta = 2/(\lambda_{\max}+\lambda_{\min})。非凸深度网,λmax⁡\lambda_{\max} 过大 → 需小 lr;curvature 启发式支持 warmup、cosine decay。

Low-rank adaptation(LoRA):ΔW=BA\Delta W = BA,B∈Rd×rB \in \mathbb{R}^{d \times r},r≪dr \ll d。有效更新秩 ≤r\leq r——在大特征值方向上优先学习,小特征值方向忽略。秩 r=8r=8–64 是常见 sweet spot。

PCA 与 embedding 分析:对 token embedding 矩阵做 PCA,前 3 主成分可视化——看语义是否聚类。奇异值谱 decay 快 → 内在维远低于 4096。

扩散模型:forward 逐步加噪,reverse 学去噪;噪声 schedule 设计涉及协方差矩阵特征结构——与谱直觉相关。

Power iteration / Lanczos 估 λmax⁡\lambda_{\max} 用于 GAN 谱归一化:每步只需矩阵-向量乘 O(n2)O(n^2),不必 O(n3)O(n^3) 全分解。W 每次更新后 normalize σmax⁡\sigma_{\max} 到 1。

应用谱工具在线可行?
初始化 scaleXavier/He 方差✓ 解析
GAN 稳定谱归一化✓ 幂迭代
7B HessianLanczos top-k✗ 研究 only

Jacobian 奇异值:J=∂y/∂x\mathbf{J}=\partial \mathbf{y}/\partial \mathbf{x} 的 σmax⁡\sigma_{\max} 控制输入扰动放大——对抗样本、Lipschitz 网络界限都与此相关。

常见误区

  1. 特征值 ≠ 奇异值:非对称矩阵两者不同;奇异值恒非负。
  2. 「特征值全 < 1 就稳定」:复数特征值、非对称、残差连接会改变故事;看整体 Jacobian。
  3. PCA 特征值 = 方差解释比例:第 kk 主成分方差 ∝λk\propto \lambda_k。

动手试一试

import numpy as np

def power_iteration(A: np.ndarray, steps: int = 100) -> float:
    """估计最大特征值(绝对值最大)"""
    n = A.shape[0]
    v = np.random.randn(n)
    v /= np.linalg.norm(v)
    for _ in range(steps):
        v = A @ v
        lam = np.linalg.norm(v)
        v /= lam
    return lam

A = np.diag([3.0, 1.0, 0.2])
print(f"true λ_max=3.0, estimated={power_iteration(A):.3f}")

深入一层:谱定理(对称情形)

实对称 A=A⊤\mathbf{A}=\mathbf{A}^\top:谱定理保证 A=QΛQ⊤\mathbf{A}=\mathbf{Q}\mathbf{\Lambda}\mathbf{Q}^\top,Q\mathbf{Q} 正交,Λ=diag(λ1,…,λn)\mathbf{\Lambda}=\mathrm{diag}(\lambda_1,\ldots,\lambda_n)。几何上:沿 nn 个正交主轴各拉伸 λi\lambda_i 倍。

PCA 步骤:数据中心化 → 协方差 C=1NX⊤X\mathbf{C}=\frac{1}{N}\mathbf{X}^\top\mathbf{X} → 求 C\mathbf{C} 最大 kk 特征值/向量 → 投影。NLP 里分析 embedding 共现结构;CV 里降维可视化。

矩阵幂 At\mathbf{A}^t:特征分解下 At=QΛtQ⊤\mathbf{A}^t=\mathbf{Q}\mathbf{\Lambda}^t\mathbf{Q}^\top,λit\lambda_i^t 决定长期行为——∥At∥\|\mathbf{A}^t\| 由 max⁡∣λi∣\max|\lambda_i| 主导。RNN 稳定性即 ρ(Wh)<1\rho(\mathbf{W}_h) \lt 1 的反复。

Graph Laplacian(拓展):GNN 里 L=D−A\mathbf{L}=\mathbf{D}-\mathbf{A},谱分割、社区发现——与 LLM 主线远,但「特征值 = 结构模式频率」同一直觉。

Random matrix theory:超大随机矩阵特征值分布(Marchenko-Pastur)——初始化时 W\mathbf{W} 元素 i.i.d.,谱有理论预测,Xavier/He 与此一致。

你不需要 nightly 算 λmax⁡(Wℓ)\lambda_{\max}(\mathbf{W}_\ell);需要知道:若初始化谱尺度错一个数量级,32 层复合后 activation 要么 explode 要么 vanish——训练从第一步就失败。

初始化谱尺度速查

He init 方差 2/fan_in2/fan\_in:ReLU 下保持激活方差 O(1)O(1) 过层。错误 init(方差 ×10)→ 32 层后 activation ×1032\times 10^{32} 或 ×10−32\times 10^{-32}——loss 第一步就 NaN 或 flat。

读 model.apply(init_fn) 源码;换 activation 记得换 init 规则。Pre-LNorm 进一步约束每层输入尺度,降低对 init 敏感度。

读者备忘

特征值 = 沿某方向纯缩放倍数;Av=λv\mathbf{A}\mathbf{v}=\lambda\mathbf{v}。 谱半径决定迭代稳定性。Xavier/He 初始化控制谱尺度。7B 矩阵不做全分解;谱直觉解释 init、残差、Pre-NNorm。对称矩阵谱定理保证主轴正交——PCA 与协方差分析的基础。

小结

特征值 λ\lambda 满足 Av=λv\mathbf{A}\mathbf{v}=\lambda\mathbf{v},描述线性变换沿特定方向的缩放。谱半径与条件数影响迭代稳定性与优化难度。深度学习用谱直觉指导初始化与归一化,而非在线分解大矩阵。下一篇:Softmax 与 Logits——把任意实数变成概率。

→ 下一篇:Softmax 与 Logits

本页目录