本站内容由 AI 生成,可能存在错误。如发现问题,欢迎到 GitHub Issues 反馈。

矩阵微积分:从 Jacobian 到损失曲面

矩阵微积分:从 Jacobian 到损失曲面

更新于 2026-04-23

上一篇我们建立了度量工具箱——范数回答”矩阵有多大”,条件数回答”系统有多敏感”。但在 ML 中,矩阵不只被度量,更被优化。训练神经网络的本质是:给定损失函数 L(W)\mathcal{L}(W),找到使 L\mathcal{L} 最小的权重矩阵 WW

要优化,就要求导。但 WW 是一个矩阵——标量对矩阵求导意味着什么?梯度的形状是什么?多层网络中的链式法则如何推广为矩阵乘法?损失曲面的曲率如何用 Hessian 矩阵刻画?

这些正是矩阵微积分(Matrix Calculus)要回答的问题。它是 Art. 1 分解概述 六类矩阵操作中的第三件工具——微分:参数变了,输出怎么变。分解让我们理解矩阵的结构,度量让我们衡量近似的质量,微分则让我们改变矩阵以优化目标。这三件工具合在一起,构成了 ML 中矩阵分析的完整基础。

本文从最简单的标量对标量求导开始,逐级推广到标量对向量、向量对向量(Jacobian)、标量对矩阵,然后建立链式法则的矩阵形式(也就是反向传播的数学本质),最后深入 Hessian 矩阵和损失曲面的几何。

求导的四个层级

微积分的核心操作是求导——“输入变一点,输出变多少”。在标量世界中这是一个数,但当输入和输出都是向量或矩阵时,导数的”形状”也相应变化。下图展示了这四个层级的全貌:

求导的四个层级:输入/输出形状决定导数形状
输入输出导数L1标量f求导导数 f'标量L2向量 xf求导梯度 ∇fRⁿL3向量 xf求导Jacobian JRᵐˣⁿL4矩阵 Wf求导矩阵梯度 ∇_W LRᵐˣⁿ统一观察:导数将输入空间的微扰线性映射到输出空间的变化

第一层:标量对标量

最熟悉的情况。对函数 f:RRf: \mathbb{R} \to \mathbb{R},导数是:

dfdx=limϵ0f(x+ϵ)f(x)ϵ\frac{df}{dx} = \lim_{\epsilon \to 0} \frac{f(x + \epsilon) - f(x)}{\epsilon}

这是一个标量——输入一个数,输出一个数,导数也是一个数。例如 f(x)=x3f(x) = x^3,则 dfdx=3x2\frac{df}{dx} = 3x^2

第二层:标量对向量——梯度

当函数的输入是向量 x=(x1,x2,,xn)TRn\mathbf{x} = (x_1, x_2, \ldots, x_n)^T \in \mathbb{R}^n 而输出仍是标量 f:RnRf: \mathbb{R}^n \to \mathbb{R} 时,我们对每个分量分别求偏导数,组成一个向量——这就是梯度(gradient):

xf=[fx1fx2fxn]Rn\nabla_\mathbf{x} f = \begin{bmatrix} \frac{\partial f}{\partial x_1} \\ \frac{\partial f}{\partial x_2} \\ \vdots \\ \frac{\partial f}{\partial x_n} \end{bmatrix} \in \mathbb{R}^n

逐项理解:

  • xf\nabla_\mathbf{x} f(读作”nabla x\mathbf{x} ff“)表示 ff 对向量 x\mathbf{x} 的梯度
  • 梯度的第 ii 个分量 fxi\frac{\partial f}{\partial x_i}ffxix_i 的偏导数——固定其他分量,只让 xix_i 变化时 ff 的变化率
  • 梯度的形状与输入向量 x\mathbf{x} 相同:xfRn\nabla_\mathbf{x} f \in \mathbb{R}^n

几何直觉:梯度 f\nabla f 指向 ff 增长最快的方向,其长度 f\|\nabla f\| 等于该方向上的变化率。梯度下降 xxηf\mathbf{x} \leftarrow \mathbf{x} - \eta \nabla f 沿着 ff 下降最快的方向更新参数。

梯度的几何意义等高线 f = cx∇f(最快上升)−∇f(最快下降)∇f ⊥ 等高线关键性质∇f 指向 f 增长最快的方向‖∇f‖ = 该方向的变化率∇f 垂直于等高线x ← x − η∇f梯度下降沿 −∇f 方向更新

例子:取 f(x)=aTx=a1x1+a2x2++anxnf(\mathbf{x}) = \mathbf{a}^T\mathbf{x} = a_1 x_1 + a_2 x_2 + \cdots + a_n x_n,则:

常用梯度公式

x(aTx)=ax(xTAx)=2AxA 对称)\nabla_\mathbf{x} (\mathbf{a}^T\mathbf{x}) = \mathbf{a} \qquad \nabla_\mathbf{x} (\mathbf{x}^T A \mathbf{x}) = 2A\mathbf{x} \text{(}A\text{ 对称)}

验证:xki,jAijxixj=jAkjxj+iAikxi=2jAkjxj=2(Ax)k\frac{\partial}{\partial x_k}\sum_{i,j} A_{ij}x_i x_j = \sum_j A_{kj}x_j + \sum_i A_{ik}x_i = 2\sum_j A_{kj}x_j = 2(A\mathbf{x})_k(利用了 A=ATA = A^T)。

第三层:向量对向量——Jacobian 矩阵

当输入和输出都是向量时——f:RnRm\mathbf{f}: \mathbb{R}^n \to \mathbb{R}^m,即 f(x)=(f1(x),f2(x),,fm(x))T\mathbf{f}(\mathbf{x}) = (f_1(\mathbf{x}), f_2(\mathbf{x}), \ldots, f_m(\mathbf{x}))^T——导数变成了一个矩阵,称为 Jacobian 矩阵(雅可比矩阵)JRm×nJ \in \mathbb{R}^{m \times n}

J=fx=[f1x1f1x2f1xnf2x1f2x2f2xnfmx1fmx2fmxn]J = \frac{\partial \mathbf{f}}{\partial \mathbf{x}} = \begin{bmatrix} \frac{\partial f_1}{\partial x_1} & \frac{\partial f_1}{\partial x_2} & \cdots & \frac{\partial f_1}{\partial x_n} \\ \frac{\partial f_2}{\partial x_1} & \frac{\partial f_2}{\partial x_2} & \cdots & \frac{\partial f_2}{\partial x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial f_m}{\partial x_1} & \frac{\partial f_m}{\partial x_2} & \cdots & \frac{\partial f_m}{\partial x_n} \end{bmatrix}

逐项理解:

  • Jij=fixjJ_{ij} = \frac{\partial f_i}{\partial x_j}:第 ii 个输出对第 jj 个输入的偏导数
  • 行的含义JJ 的第 ii 行是 fif_i 的梯度 fiT\nabla f_i^T——标量函数 fif_i 对所有输入的敏感度
  • 列的含义JJ 的第 jj 列告诉我们,当 xjx_j 微小变化时,所有 mm 个输出如何响应
  • 形状mm 个输出 ×\times nn 个输入 = m×nm \times n 矩阵
Jacobian 矩阵:输入扰动 → 输出变化的线性映射输入空间 ℝⁿxεJ · εJacobian × 扰动输出空间 ℝᵐf(x)Δf ≈ JεJ ∈ ℝᵐˣⁿJ 的第 i 行 = fᵢ 的梯度;第 j 列 = xⱼ 变化时所有输出的响应

Jacobian 的线性近似意义:类比标量求导的近似 f(x+ϵ)f(x)+f(x)ϵf(x+\epsilon) \approx f(x) + f'(x)\epsilon,Jacobian 给出向量函数的一阶线性近似:

f(x+ϵ)f(x)+Jϵ\mathbf{f}(\mathbf{x} + \boldsymbol{\epsilon}) \approx \mathbf{f}(\mathbf{x}) + J\boldsymbol{\epsilon}

其中 ϵRn\boldsymbol{\epsilon} \in \mathbb{R}^n 是微小扰动。JJ 是一个线性映射(矩阵),将输入空间的扰动映射到输出空间的变化——这正是导数的本质。

特殊情况:当 m=1m = 1 时(标量输出),JJ 退化为 1×n1 \times n 的行向量,即梯度的转置 fT\nabla f^T。这就是第二层”标量对向量”的特例。

例子:取 f(x)=Ax\mathbf{f}(\mathbf{x}) = A\mathbf{x},其中 ARm×nA \in \mathbb{R}^{m \times n}。由于 fi=jAijxjf_i = \sum_j A_{ij}x_j,所以 fixj=Aij\frac{\partial f_i}{\partial x_j} = A_{ij},因此:

J=(Ax)x=AJ = \frac{\partial (A\mathbf{x})}{\partial \mathbf{x}} = A

线性函数的 Jacobian 就是它自身的系数矩阵——这合理,因为线性函数的最佳线性近似就是它本身。

第四层:标量对矩阵

这是 ML 中最常见也最关键的情况:损失函数 L:Rm×nR\mathcal{L}: \mathbb{R}^{m \times n} \to \mathbb{R} 以权重矩阵 WRm×nW \in \mathbb{R}^{m \times n} 为参数,我们需要求 L\mathcal{L}WW 的导数。

定义很自然——对矩阵的每个元素分别求偏导:

LW=[LW11LW1nLWm1LWmn]Rm×n\frac{\partial \mathcal{L}}{\partial W} = \begin{bmatrix} \frac{\partial \mathcal{L}}{\partial W_{11}} & \cdots & \frac{\partial \mathcal{L}}{\partial W_{1n}} \\ \vdots & \ddots & \vdots \\ \frac{\partial \mathcal{L}}{\partial W_{m1}} & \cdots & \frac{\partial \mathcal{L}}{\partial W_{mn}} \end{bmatrix} \in \mathbb{R}^{m \times n}

关键性质:LW\frac{\partial \mathcal{L}}{\partial W}WW 同形状。这既自然又实用——梯度下降的更新规则 WWηLWW \leftarrow W - \eta \frac{\partial \mathcal{L}}{\partial W} 中,梯度和参数可以直接逐元素相减。

关键性质:∂ℒ/∂W 与 W 同形状W ∈ ℝᵐˣⁿ3×4同形状∂ℒ/∂W ∈ ℝᵐˣⁿ3×4梯度下降更新W ← W − η·∂ℒ/∂W(∂ℒ/∂W)ᵢⱼ = ∂ℒ/∂Wᵢⱼ —— 对每个元素分别求偏导,梯度和参数可以逐元素相减

按照符号表约定,我们将损失函数对权重矩阵的梯度记为 WL=LW\nabla_W \mathcal{L} = \frac{\partial \mathcal{L}}{\partial W},其中 L\mathcal{L} 用花体 LL 表示损失函数。

常用公式(见 The Matrix Cookbook, Petersen & Pedersen, 2012):

a,b\mathbf{a}, \mathbf{b} 为不依赖 WW 的向量,A,BA, B 为不依赖 WW 的矩阵:

  1. Wtr(AW)=AT\frac{\partial}{\partial W}\text{tr}(AW) = A^T

  2. Wtr(WTAW)=(A+AT)W\frac{\partial}{\partial W}\text{tr}(W^TAW) = (A + A^T)W(当 AA 对称时 =2AW= 2AW

  3. Wtr(AWB)=ATBT\frac{\partial}{\partial W}\text{tr}(AW B) = A^T B^T(注意转置顺序)

  4. WaTWb=abT\frac{\partial}{\partial W}\mathbf{a}^T W \mathbf{b} = \mathbf{a}\mathbf{b}^T

四层总结

层级函数类型导数名称导数形状
标量→标量f:RRf: \mathbb{R} \to \mathbb{R}导数 ff'标量
向量→标量f:RnRf: \mathbb{R}^n \to \mathbb{R}梯度 f\nabla fRn\mathbb{R}^n(与输入同形状)
向量→向量f:RnRm\mathbf{f}: \mathbb{R}^n \to \mathbb{R}^mJacobian JJRm×n\mathbb{R}^{m \times n}
矩阵→标量L:Rm×nR\mathcal{L}: \mathbb{R}^{m \times n} \to \mathbb{R}矩阵梯度 WL\nabla_W \mathcal{L}Rm×n\mathbb{R}^{m \times n}(与输入同形状)

一个统一的观察:导数的作用总是把输入空间的微小扰动线性地映射到输出空间的变化。在标量情况下这是乘法(ΔyfΔx\Delta y \approx f' \Delta x),在向量情况下是矩阵-向量乘法(ΔyJΔx\Delta \mathbf{y} \approx J \Delta \mathbf{x}),在矩阵情况下是矩阵内积(ΔLWL,ΔW=tr(WLTΔW)\Delta \mathcal{L} \approx \langle \nabla_W \mathcal{L}, \Delta W \rangle = \text{tr}(\nabla_W \mathcal{L}^T \Delta W))。

链式法则:矩阵形式 = 反向传播

链式法则是微积分的核心定理之一——“复合函数的导数等于各步导数的乘积”。在标量情况下它简洁优雅:

ddxf(g(x))=f(g(x))g(x)\frac{d}{dx}f(g(x)) = f'(g(x)) \cdot g'(x)

在向量和矩阵的世界中,链式法则推广为 Jacobian 的矩阵乘法——这正是反向传播算法的数学本质。

链式法则 = 反向传播:Jacobian 矩阵乘法沿计算图反向传递
前向x输入z⁽¹⁾Wx+ba⁽¹⁾φ(z⁽¹⁾)z⁽²⁾Wx+bL损失反向δ⁽²⁾W⁽²⁾ᵀδ⁽²⁾⊙φ'W⁽¹⁾ᵀδ⁽¹⁾反向模式:一次传播 → 所有参数的梯度(O(d²) 每步)

向量链式法则

设有复合函数 h=fg\mathbf{h} = \mathbf{f} \circ \mathbf{g},即 h(x)=f(g(x))\mathbf{h}(\mathbf{x}) = \mathbf{f}(\mathbf{g}(\mathbf{x})),其中 g:RnRp\mathbf{g}: \mathbb{R}^n \to \mathbb{R}^pf:RpRm\mathbf{f}: \mathbb{R}^p \to \mathbb{R}^m

z=g(x)\mathbf{z} = \mathbf{g}(\mathbf{x}) 为中间变量,则复合函数的 Jacobian 是各步 Jacobian 的矩阵乘法

Jh=fx=fzzx=JfJgJ_\mathbf{h} = \frac{\partial \mathbf{f}}{\partial \mathbf{x}} = \frac{\partial \mathbf{f}}{\partial \mathbf{z}} \cdot \frac{\partial \mathbf{z}}{\partial \mathbf{x}} = J_\mathbf{f} \cdot J_\mathbf{g}

形状验证:JfRm×pJ_\mathbf{f} \in \mathbb{R}^{m \times p}JgRp×nJ_\mathbf{g} \in \mathbb{R}^{p \times n},乘积 JhRm×nJ_\mathbf{h} \in \mathbb{R}^{m \times n}

逐元素展开,这就是多变量链式法则的经典形式:

(Jh)ij=fixj=k=1pfizkzkxj(J_\mathbf{h})_{ij} = \frac{\partial f_i}{\partial x_j} = \sum_{k=1}^{p} \frac{\partial f_i}{\partial z_k} \cdot \frac{\partial z_k}{\partial x_j}

外层对中间变量求导,中间变量对输入求导,然后求和——对所有可能的”路径”求和。

多层网络中的链式法则

现在考虑一个 LL 层前馈网络。记第 ll 层的操作为:

z(l)=W(l)a(l1)+b(l),a(l)=ϕ(z(l))\mathbf{z}^{(l)} = W^{(l)} \mathbf{a}^{(l-1)} + \mathbf{b}^{(l)}, \quad \mathbf{a}^{(l)} = \phi(\mathbf{z}^{(l)})

其中 W(l)W^{(l)} 是权重矩阵,b(l)\mathbf{b}^{(l)} 是偏置,ϕ\phi 是逐元素激活函数,a(0)=x\mathbf{a}^{(0)} = \mathbf{x} 是输入。最终损失 L=(a(L),y)\mathcal{L} = \ell(\mathbf{a}^{(L)}, \mathbf{y}) 是最后一层输出与标签的比较。

要计算 LW(l)\frac{\partial \mathcal{L}}{\partial W^{(l)}}(第 ll 层权重的梯度),需要沿着计算图反向传播。定义第 ll 层的”误差信号”:

δ(l)=Lz(l)Rdl\boldsymbol{\delta}^{(l)} = \frac{\partial \mathcal{L}}{\partial \mathbf{z}^{(l)}} \in \mathbb{R}^{d_l}

这是损失对第 ll预激活值的梯度(行向量的转置)。

反向传播公式

第一步:从输出层开始,δ(L)\boldsymbol{\delta}^{(L)} 由损失函数和激活函数直接给出。

第二步:对于 l=L1,L2,,1l = L-1, L-2, \ldots, 1,误差信号从后一层向前传播:

δ(l)=(W(l+1)Tδ(l+1))ϕ(z(l))\boldsymbol{\delta}^{(l)} = \left({W^{(l+1)}}^T \boldsymbol{\delta}^{(l+1)}\right) \odot \phi'(\mathbf{z}^{(l)})

逐项理解:

  • W(l+1)Tδ(l+1){W^{(l+1)}}^T \boldsymbol{\delta}^{(l+1)}将后一层的误差信号通过权重矩阵的转置”传回”当前层。这就是链式法则中 Jacobian 矩阵乘法的体现——W(l+1)W^{(l+1)} 的 Jacobian 是 W(l+1)W^{(l+1)} 本身,传播方向是转置
  • ϕ(z(l))\odot \phi'(\mathbf{z}^{(l)}):逐元素乘以激活函数的导数。如果 ϕ\phi 是 ReLU,ϕ(z)=1[z>0]\phi'(z) = \mathbb{1}[z > 0](通过或阻断)

第三步:有了 δ(l)\boldsymbol{\delta}^{(l)},权重梯度就是一个外积:

LW(l)=δ(l)a(l1)T\frac{\partial \mathcal{L}}{\partial W^{(l)}} = \boldsymbol{\delta}^{(l)} {\mathbf{a}^{(l-1)}}^T

形状验证:δ(l)Rdl\boldsymbol{\delta}^{(l)} \in \mathbb{R}^{d_l}a(l1)Rdl1\mathbf{a}^{(l-1)} \in \mathbb{R}^{d_{l-1}},外积 Rdl×dl1\in \mathbb{R}^{d_l \times d_{l-1}},恰好与 W(l)Rdl×dl1W^{(l)} \in \mathbb{R}^{d_l \times d_{l-1}} 同形状 ✓

反向传播:误差信号的逐层传递前向传播 →a⁽ˡ⁻¹⁾输入z⁽ˡ⁾线性变换a⁽ˡ⁾激活z⁽ˡ⁺¹⁾下一层线性损失W⁽ˡ⁾a + bϕ(z)W⁽ˡ⁺¹⁾a + b← 反向传播∂ℒ/∂z⁽ˡ⁺¹⁾W⁽ˡ⁺¹⁾ᵀδ⁽ˡ⁺¹⁾⊙ ϕ'(z⁽ˡ⁾)δ⁽ˡ⁾∂ℒ/∂W⁽ˡ⁾ = δ⁽ˡ⁾ · a⁽ˡ⁻¹⁾ᵀ误差信号 δ⁽ˡ⁾ 通过权重转置传回,再乘激活导数 —— 权重梯度是外积

关键洞察:反向传播不是一个独立的算法,它就是链式法则在计算图上的高效实现。每一步都是 Jacobian 矩阵乘法,只不过利用了网络的特殊结构(线性层的 Jacobian 是权重矩阵、逐元素激活的 Jacobian 是对角矩阵)来避免显式构造完整的 Jacobian。

为什么是”反向”?

前向传播计算 xz(1)a(1)a(L)L\mathbf{x} \to \mathbf{z}^{(1)} \to \mathbf{a}^{(1)} \to \cdots \to \mathbf{a}^{(L)} \to \mathcal{L}

如果用”前向模式”求导(从输入到输出),每次只能计算一个输入变量对所有输出的影响——需要 nn 次前向传递来得到完整梯度(nn 是参数总数,对于现代网络可达数十亿)。

反向模式从输出(标量损失 L\mathcal{L})出发,一次传播就能计算 L\mathcal{L}所有参数的梯度。原因在于链式法则的结合律:

La(L)行向量a(L)z(L)矩阵z(L)a(L1)矩阵\underbrace{\frac{\partial \mathcal{L}}{\partial \mathbf{a}^{(L)}}}_{\text{行向量}} \cdot \underbrace{\frac{\partial \mathbf{a}^{(L)}}{\partial \mathbf{z}^{(L)}}}_{\text{矩阵}} \cdot \underbrace{\frac{\partial \mathbf{z}^{(L)}}{\partial \mathbf{a}^{(L-1)}}}_{\text{矩阵}} \cdots

从左到右(反向模式):每步都是行向量乘矩阵,得到行向量——O(d2)O(d^2)。 从右到左(前向模式):每步是矩阵乘矩阵——O(d3)O(d^3)

当输出是标量(m=1m = 1,如损失函数)而输入维度很高(n1n \gg 1,如网络参数)时,反向模式的效率远优于前向模式。这就是为什么深度学习用”反向”传播。

前向模式 vs 反向模式(反向传播)前向模式xz⁽¹⁾z⁽²⁾z⁽³⁾每次计算 1 个输入对所有输出的影响 → 需要 n 次传递成本: O(n × d²)反向模式(反向传播)xz⁽¹⁾z⁽²⁾z⁽³⁾从标量输出出发,1 次传播得到所有参数的梯度成本: O(1 × d²)δ⁽³⁾δ⁽²⁾δ⁽¹⁾∂ℒ/∂x当输出为标量(m=1)、参数维度高(n≫1)时,反向模式效率远优于前向模式

Hessian 矩阵与损失曲面的几何

梯度告诉我们损失曲面在某一点的”坡度”——往哪个方向走下降最快。但梯度不告诉我们坡度本身在怎么变化:前方是继续变陡还是趋于平坦?曲面是碗状的还是鞍形的?

要回答这些问题,我们需要二阶导数信息——Hessian 矩阵。

定义

对标量函数 f:RnRf: \mathbb{R}^n \to \mathbb{R}Hessian 矩阵(黑塞矩阵)HRn×nH \in \mathbb{R}^{n \times n} 定义为二阶偏导数构成的矩阵:

H=2f=[2fx122fx1x22fx1xn2fx2x12fx222fx2xn2fxnx12fxnx22fxn2]H = \nabla^2 f = \begin{bmatrix} \frac{\partial^2 f}{\partial x_1^2} & \frac{\partial^2 f}{\partial x_1 \partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_1 \partial x_n} \\ \frac{\partial^2 f}{\partial x_2 \partial x_1} & \frac{\partial^2 f}{\partial x_2^2} & \cdots & \frac{\partial^2 f}{\partial x_2 \partial x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial^2 f}{\partial x_n \partial x_1} & \frac{\partial^2 f}{\partial x_n \partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_n^2} \end{bmatrix}

逐项理解:

  • Hij=2fxixjH_{ij} = \frac{\partial^2 f}{\partial x_i \partial x_j}:先对 xjx_j 求导,再对 xix_i 求导
  • 如果 ff 的二阶偏导连续(在 ML 的场景中通常成立),则 2fxixj=2fxjxi\frac{\partial^2 f}{\partial x_i \partial x_j} = \frac{\partial^2 f}{\partial x_j \partial x_i}(Schwarz 定理),所以 HH 是对称矩阵
  • Hessian 的第 ii 行(或列)是梯度第 ii 个分量的梯度——HH 是”梯度的 Jacobian”

与梯度的关系:梯度 f\nabla f 是一阶导数(nn 维向量),Hessian HH 是梯度的导数(n×nn \times n 矩阵):

H=Jf=(f)xH = J_{\nabla f} = \frac{\partial (\nabla f)}{\partial \mathbf{x}}

Hessian 与二次型

Hessian 的几何意义通过二次型(quadratic form)体现。对于对称矩阵 HRn×nH \in \mathbb{R}^{n \times n} 和向量 dRn\mathbf{d} \in \mathbb{R}^n,二次型定义为:

Q(d)=dTHd=i=1nj=1nHijdidjQ(\mathbf{d}) = \mathbf{d}^T H \mathbf{d} = \sum_{i=1}^{n}\sum_{j=1}^{n} H_{ij} d_i d_j

这个标量值 Q(d)Q(\mathbf{d}) 衡量了沿方向 d\mathbf{d} 的曲率。直觉上:

  • 如果 Q(d)>0Q(\mathbf{d}) > 0:函数沿方向 d\mathbf{d} 向上弯曲(碗底形状)
  • 如果 Q(d)<0Q(\mathbf{d}) < 0:函数沿方向 d\mathbf{d} 向下弯曲(山顶形状)
  • 如果 Q(d)=0Q(\mathbf{d}) = 0:函数沿方向 d\mathbf{d} 局部平坦(无曲率)

d\mathbf{d} 是单位向量(d=1\|\mathbf{d}\| = 1)时,dTHd\mathbf{d}^T H \mathbf{d} 就是函数在方向 d\mathbf{d} 上的方向曲率

正定性与极值条件

根据二次型的符号,我们将对称矩阵分为三类:

类别条件几何含义
正定(positive definite)对所有 d0\mathbf{d} \neq \mathbf{0}dTHd>0\mathbf{d}^T H \mathbf{d} > 0所有方向曲率为正——碗底
负定(negative definite)对所有 d0\mathbf{d} \neq \mathbf{0}dTHd<0\mathbf{d}^T H \mathbf{d} < 0所有方向曲率为负——山顶
不定(indefinite)存在 d1,d2\mathbf{d}_1, \mathbf{d}_2 使 d1THd1>0\mathbf{d}_1^T H \mathbf{d}_1 > 0d2THd2<0\mathbf{d}_2^T H \mathbf{d}_2 < 0某些方向上升、某些方向下降——鞍点

与极值的关系(二阶充分条件):

如果 f(x)=0\nabla f(\mathbf{x}^*) = \mathbf{0}(一阶必要条件:驻点)且 H(x)H(\mathbf{x}^*) 正定,则 x\mathbf{x}^*严格局部极小值

如果 f(x)=0\nabla f(\mathbf{x}^*) = \mathbf{0}H(x)H(\mathbf{x}^*) 负定,则 x\mathbf{x}^*严格局部极大值

如果 f(x)=0\nabla f(\mathbf{x}^*) = \mathbf{0}H(x)H(\mathbf{x}^*) 不定,则 x\mathbf{x}^*鞍点

判定正定性的一个等价条件:HH 正定当且仅当 HH 的所有特征值为正。这连接了 Hessian 分析与 Art. 2 特征分解 中的特征分解。

Hessian 正定性与损失曲面几何
特征值的正负决定曲面形状:碗底、山顶、鞍点
正定(碗底)λ₁ > 0, λ₂ > 0q₁q₂局部极小值 ✓负定(山顶)λ₁ < 0, λ₂ < 0局部极大值不定(鞍点)λ₁ > 0, λ₂ < 0上升下降鞍点 — 某些方向上升,某些下降κ(H) = λ_max / λ_min → 椭圆扁度 → 梯度下降收敛难度

特征分解 = 主曲率方向

由于 HH 是实对称矩阵,Art. 2 特征分解 的谱定理保证它可以正交对角化:

H=QΛQT=i=1nλiqiqiTH = Q \Lambda Q^T = \sum_{i=1}^{n} \lambda_i \mathbf{q}_i \mathbf{q}_i^T

其中 λ1λ2λn\lambda_1 \geq \lambda_2 \geq \cdots \geq \lambda_n 是特征值,q1,,qn\mathbf{q}_1, \ldots, \mathbf{q}_n 是对应的正交特征向量。

在这组正交基下,二次型变得极其简单。令 d=iciqi\mathbf{d} = \sum_i c_i \mathbf{q}_i(在特征基下展开),则:

dTHd=i=1nλici2\mathbf{d}^T H \mathbf{d} = \sum_{i=1}^{n} \lambda_i c_i^2

每个特征方向 qi\mathbf{q}_i 的贡献完全独立,权重就是对应的特征值 λi\lambda_i

几何意义

  • qi\mathbf{q}_i 是第 ii 个主曲率方向——沿着 qi\mathbf{q}_i 运动时,曲面的弯曲程度由 λi\lambda_i 决定
  • λi>0\lambda_i > 0 且大:沿 qi\mathbf{q}_i 方向曲率大,曲面弯曲剧烈——函数在这个方向上变化很快
  • λi>0\lambda_i > 0 且小:沿 qi\mathbf{q}_i 方向曲率小,曲面几乎平坦——函数在这个方向上变化缓慢
  • λi<0\lambda_i < 0:沿 qi\mathbf{q}_i 方向曲面向下弯——这个方向不是极小

这给出了损失曲面等高线形状的精确描述。在正定的情况下(局部极小值附近),等高线 {x:xTHx=c}\{\mathbf{x}: \mathbf{x}^T H \mathbf{x} = c\}椭球面,椭球的半轴方向就是特征向量 qi\mathbf{q}_i,半轴长度正比于 1/λi1/\sqrt{\lambda_i}

用下面的交互组件感受 Hessian 特征值如何决定等高线形状:

损失曲面等高线与 Hessian 特征方向
Hessian 的特征向量 = 主曲率方向,特征值 = 曲率大小
w₁w₂Lw₁w₂极小值λ₁=2.4λ₂=2.0箭头长度 ∝ 特征值大小
Hessian 类型: 正定(局部极小)
κ(H) = 1.2
λ₁ = 2.40 (陡峭)
λ₂ = 2.00 (平坦)
两个特征值相近 → 等高线接近圆形 → 梯度下降收敛快

与条件数的联系上一篇中我们定义了条件数 κ(A)=σmax/σmin\kappa(A) = \sigma_{\max}/\sigma_{\min}。对于正定 Hessian,奇异值就是特征值(都为正),所以:

κ(H)=λmaxλmin\kappa(H) = \frac{\lambda_{\max}}{\lambda_{\min}}

  • κ(H)1\kappa(H) \approx 1:等高线接近圆形,梯度下降收敛快——所有方向的曲率相近
  • κ(H)1\kappa(H) \gg 1:等高线是扁椭圆,梯度下降在窄谷中震荡——大曲率方向需要小步长,小曲率方向又收敛太慢。这就是梯度下降在高条件数损失曲面上表现差的根本原因,也是 Adam、L-BFGS 等自适应/二阶优化器存在的理由

矩阵 Taylor 展开

在标量微积分中,Taylor 展开是将函数局部近似为多项式的核心工具:

f(x+Δx)f(x)+f(x)Δx+12f(x)(Δx)2f(x + \Delta x) \approx f(x) + f'(x)\Delta x + \frac{1}{2}f''(x)(\Delta x)^2

矩阵微积分的 Taylor 展开将这个思想推广到矩阵参数。

Taylor 展开 = 零阶 + 一阶 + 二阶f(x + Δx) ≈ f(x) + ∇fᵀΔx + ½ ΔxᵀHΔxf(x)零阶:当前值∇f ᵀΔx一阶:梯度 × 扰动½ Δxᵀ H Δx二阶:Hessian 二次型在驻点 (∇f = 0)一阶项消失二次型 ½ΔxᵀHΔx 决定极值类型H 正定 → 局部极小H 不定 → 鞍点

向量情形

对于 f:RnRf: \mathbb{R}^n \to \mathbb{R},在点 x\mathbf{x} 处展开到二阶:

Taylor 二阶展开

f(x+Δx)f(x)+fTΔx一阶:梯度+12ΔxTHΔx二阶:Hessian 二次型f(\mathbf{x} + \Delta \mathbf{x}) \approx f(\mathbf{x}) + \underbrace{\nabla f^T \Delta \mathbf{x}}_{\text{一阶:梯度}} + \underbrace{\frac{1}{2} \Delta \mathbf{x}^T H \Delta \mathbf{x}}_{\text{二阶:Hessian 二次型}}

驻点处一阶项消失 → HH 正定则局部最小,HH 不定则鞍点。κ(H)\kappa(H) 大则收敛慢。

矩阵情形

当参数是矩阵 WRm×nW \in \mathbb{R}^{m \times n} 时,Taylor 展开变为:

L(W+ΔW)L(W)+tr ⁣(WLTΔW)+12vec(ΔW)THvec(ΔW)\mathcal{L}(W + \Delta W) \approx \mathcal{L}(W) + \text{tr}\!\left(\nabla_W \mathcal{L}^T \, \Delta W\right) + \frac{1}{2}\,\text{vec}(\Delta W)^T H \,\text{vec}(\Delta W)

逐项理解:

  • L(W)\mathcal{L}(W):当前损失——零阶项
  • tr(WLTΔW)\text{tr}(\nabla_W \mathcal{L}^T \, \Delta W):梯度与扰动的矩阵内积——一阶项。这里用到了 上一篇 定义的矩阵内积 A,B=tr(ATB)\langle A, B \rangle = \text{tr}(A^T B)。直觉:将 WL\nabla_W \mathcal{L}ΔW\Delta W 都看成 mnmn 维向量做点积
  • 12vec(ΔW)THvec(ΔW)\frac{1}{2}\text{vec}(\Delta W)^T H\,\text{vec}(\Delta W):Hessian 的二次型——二阶项。这里 vec(ΔW)Rmn\text{vec}(\Delta W) \in \mathbb{R}^{mn} 是将矩阵 ΔW\Delta W 按列拉成向量的操作(vectorization),而 HRmn×mnH \in \mathbb{R}^{mn \times mn} 是对 vec(W)\text{vec}(W) 的完整 Hessian

注意 Hessian HH 的大小是 mn×mnmn \times mn——对于一个 1000×10001000 \times 1000 的权重矩阵,HH101210^{12} 个元素,在实践中无法显式存储。这就是为什么一阶方法(SGD、Adam)在深度学习中占主导——它们只需要梯度 WL\nabla_W \mathcal{L}mnmn 个数),而非完整的 Hessian(m2n2m^2n^2 个数)。

推导:从 vec 形式回到矩阵形式

上面的 tr(WLTΔW)\text{tr}(\nabla_W \mathcal{L}^T \, \Delta W) 一阶项并非凭空出现,让我们推导它。

WW 展平为向量 w=vec(W)Rmn\mathbf{w} = \text{vec}(W) \in \mathbb{R}^{mn},标量函数 L\mathcal{L} 的向量梯度为 wLRmn\nabla_\mathbf{w} \mathcal{L} \in \mathbb{R}^{mn}。标准 Taylor 展开的一阶项为:

wLTvec(ΔW)\nabla_\mathbf{w}\mathcal{L}^T \, \text{vec}(\Delta W)

现在利用一个关键等式:对任意两个同形状矩阵 A,BA, B,有

vec(A)Tvec(B)=tr(ATB)\text{vec}(A)^T \text{vec}(B) = \text{tr}(A^T B)

这就是矩阵内积的 vec 形式。因此一阶项可写成 tr(WLTΔW)\text{tr}(\nabla_W\mathcal{L}^T \, \Delta W),比 vec 形式更紧凑也更有物理直觉。

数值例子

用一个具体的二维损失函数把前面的概念串起来。取:

L(w1,w2)=3w12+2w1w2+2w22\mathcal{L}(w_1, w_2) = 3w_1^2 + 2w_1 w_2 + 2w_2^2

这是一个参数向量 w=(w1,w2)T\mathbf{w} = (w_1, w_2)^T 上的二次损失函数。

第一步:梯度

L=[Lw1Lw2]=[6w1+2w22w1+4w2]\nabla \mathcal{L} = \begin{bmatrix} \frac{\partial \mathcal{L}}{\partial w_1} \\ \frac{\partial \mathcal{L}}{\partial w_2} \end{bmatrix} = \begin{bmatrix} 6w_1 + 2w_2 \\ 2w_1 + 4w_2 \end{bmatrix}

在点 w=(1,1)T\mathbf{w} = (1, 1)^TL=(8,6)T\nabla \mathcal{L} = (8, 6)^T。梯度下降会沿 (8,6)(-8, -6) 方向更新。

验证:L=0\nabla \mathcal{L} = \mathbf{0} 当且仅当 6w1+2w2=06w_1 + 2w_2 = 02w1+4w2=02w_1 + 4w_2 = 0,唯一解为 w=(0,0)T\mathbf{w}^* = (0, 0)^T——原点是唯一驻点。

第二步:Hessian

H=[2Lw122Lw1w22Lw2w12Lw22]=[6224]H = \begin{bmatrix} \frac{\partial^2 \mathcal{L}}{\partial w_1^2} & \frac{\partial^2 \mathcal{L}}{\partial w_1 \partial w_2} \\ \frac{\partial^2 \mathcal{L}}{\partial w_2 \partial w_1} & \frac{\partial^2 \mathcal{L}}{\partial w_2^2} \end{bmatrix} = \begin{bmatrix} 6 & 2 \\ 2 & 4 \end{bmatrix}

对于二次函数,Hessian 是常数矩阵——曲率处处相同。

第三步:特征分解

HH 的特征值:

det(HλI)=(6λ)(4λ)4=λ210λ+20=0\det(H - \lambda I) = (6 - \lambda)(4 - \lambda) - 4 = \lambda^2 - 10\lambda + 20 = 0

λ=10±100802=10±202=5±5\lambda = \frac{10 \pm \sqrt{100 - 80}}{2} = \frac{10 \pm \sqrt{20}}{2} = 5 \pm \sqrt{5}

λ1=5+57.24,λ2=552.76\lambda_1 = 5 + \sqrt{5} \approx 7.24, \quad \lambda_2 = 5 - \sqrt{5} \approx 2.76

两个特征值都为正,所以 HH 正定 → 原点是严格局部极小值(也是全局极小值,因为二次函数只有一个驻点)。

条件数:

κ(H)=λ1λ2=5+555=(5+5)2255=30+10520=3+522.62\kappa(H) = \frac{\lambda_1}{\lambda_2} = \frac{5 + \sqrt{5}}{5 - \sqrt{5}} = \frac{(5+\sqrt{5})^2}{25 - 5} = \frac{30 + 10\sqrt{5}}{20} = \frac{3 + \sqrt{5}}{2} \approx 2.62

条件数约为 2.62,属于良好条件——等高线是中等偏心率的椭圆,梯度下降收敛合理。

特征向量:对 λ1=5+5\lambda_1 = 5 + \sqrt{5}

(Hλ1I)q1=0[152215]q1=0(H - \lambda_1 I)\mathbf{q}_1 = \mathbf{0} \Rightarrow \begin{bmatrix} 1 - \sqrt{5} & 2 \\ 2 & -1 - \sqrt{5} \end{bmatrix}\mathbf{q}_1 = \mathbf{0}

q1(2,51)T\mathbf{q}_1 \propto (2, \sqrt{5} - 1)^T,归一化后 q1(0.851,0.526)T\mathbf{q}_1 \approx (0.851, 0.526)^T。这是最大曲率方向——等高线椭圆的短轴方向。

类似地,q2(0.526,0.851)T\mathbf{q}_2 \approx (-0.526, 0.851)^T 是最小曲率方向——等高线椭圆的长轴方向。

第四步:Taylor 展开验证

在原点(w=0\mathbf{w} = \mathbf{0}L(0,0)=0\mathcal{L}(0,0) = 0L=0\nabla \mathcal{L} = \mathbf{0})处展开:

L(Δw)0+0TΔw+12ΔwTHΔw=12ΔwTHΔw\mathcal{L}(\Delta \mathbf{w}) \approx 0 + \mathbf{0}^T \Delta \mathbf{w} + \frac{1}{2}\Delta \mathbf{w}^T H \Delta \mathbf{w} = \frac{1}{2}\Delta \mathbf{w}^T H \Delta \mathbf{w}

Δw=(1,1)T\Delta \mathbf{w} = (1, 1)^T

12(1,1)[6224](11)=12(1,1)(86)=12(8+6)=7\frac{1}{2}(1, 1)\begin{bmatrix}6 & 2 \\ 2 & 4\end{bmatrix}\begin{pmatrix}1\\1\end{pmatrix} = \frac{1}{2}(1,1)\begin{pmatrix}8\\6\end{pmatrix} = \frac{1}{2}(8 + 6) = 7

直接计算:L(1,1)=3(1)2+2(1)(1)+2(1)2=3+2+2=7\mathcal{L}(1, 1) = 3(1)^2 + 2(1)(1) + 2(1)^2 = 3 + 2 + 2 = 7

对于二次函数,Taylor 展开是精确的(没有高阶项),所以这里”近似”恰好等于精确值。

从 Hessian 到 Intrinsic Dimensionality

Hessian 的特征分解不仅揭示了损失曲面的局部几何,更连接到一个深远的现象——intrinsic dimensionality(内在维度)。

Hessian 特征值谱与 Intrinsic Dimensionalityλᵢd_int ≈ 4≈ 0(冗余方向)特征值索引 i核心观察• D 维参数空间(D 可达数十亿)• 只有少数 k 个特征值显著 (k ≪ D)• 有效优化维度 ≈ k→ LoRA 的理论基础低秩更新 ΔW = BA 足以覆盖Hessian 的大特征值方向MNIST: D=650,000 → d_int≈750 (0.1%)

关键观察

对于一个有 DD 个参数的神经网络(DD 可达数百万甚至数十亿),损失曲面的 Hessian HRD×DH \in \mathbb{R}^{D \times D} 的特征值分布极不均匀:

  • 大部分特征值接近零——对应的方向几乎平坦,沿这些方向移动几乎不改变损失
  • 只有少数特征值显著为正——对应的方向有明显曲率

这意味着尽管参数空间是 DD 维的,损失曲面的”有效维度”远小于 DD

Li et al. (2018) 的度量

Li et al. (2018) 在”Measuring the Intrinsic Dimension of Objective Landscapes”中正式定义并量化了这一现象。他们的方法是:

  1. 将参数向量 θRD\boldsymbol{\theta} \in \mathbb{R}^D 限制在一个随机子空间中:θ=θ0+Pd\boldsymbol{\theta} = \boldsymbol{\theta}_0 + P\mathbf{d},其中 PRD×dP \in \mathbb{R}^{D \times d} 是随机投影矩阵,dRd\mathbf{d} \in \mathbb{R}^d 是低维参数
  2. 只优化 d\mathbf{d}dDd \ll D),观察能否达到接近全参数优化的性能
  3. intrinsic dimension dintd_{\text{int}} 是能达到原始性能 90% 所需的最小子空间维度 dd

他们的实验结果令人惊讶:

  • MNIST 上一个有 D650,000D \approx 650,000 参数的网络,dint750d_{\text{int}} \approx 750——只需要 0.1% 的维度
  • CIFAR-10 上全连接网络的 dintd_{\text{int}} 同样远低于参数总数

与 Hessian 的联系

intrinsic dimensionality 与 Hessian 特征谱直接相关。Hessian 的大特征值方向是损失变化敏感的方向——这些方向上的参数调整”重要”。小特征值(接近零)方向是冗余的——沿这些方向移动几乎不影响损失。

如果 Hessian 只有 kk 个显著特征值(kDk \ll D),那么有效优化只需要在这 kk 个方向上进行——intrinsic dimension dintkd_{\text{int}} \approx k

连接 LoRA

这个发现为 LoRA(Art. 24)提供了理论基础。LoRA 的核心思想是:微调时不更新完整的权重矩阵 WRm×nW \in \mathbb{R}^{m \times n},而是限制更新量为低秩:

ΔW=BA,BRm×r,  ARr×n,  rmin(m,n)\Delta W = BA, \quad B \in \mathbb{R}^{m \times r}, \; A \in \mathbb{R}^{r \times n}, \; r \ll \min(m,n)

为什么低秩更新就够了?正是因为:

  1. 损失曲面的 Hessian 只有少数几个大特征值方向有显著曲率
  2. 这意味着权重空间中”重要”的变化方向是低维的
  3. 秩为 rrΔW\Delta Wmnmn 维参数空间中张成一个 r(m+nr)r(m+n-r) 维子空间
  4. 只要这个子空间覆盖了 Hessian 的大特征值方向,微调就能有效进行

这是一条从 Hessian 特征分解出发,经由 intrinsic dimensionality,最终解释 LoRA 有效性的理论链条。我们将在 Art. 24 LoRA 中深入展开。

总结与展望

本文建立了矩阵微积分的完整框架——六类矩阵操作中的第三件工具”微分”。回顾关键要点:

  • 求导的四个层级:标量→标量(导数)、向量→标量(梯度 fRn\nabla f \in \mathbb{R}^n)、向量→向量(Jacobian JRm×nJ \in \mathbb{R}^{m \times n})、矩阵→标量(矩阵梯度 WL\nabla_W \mathcal{L},与 WW 同形状)
  • 链式法则的矩阵形式:复合函数的 Jacobian 是各步 Jacobian 的矩阵乘积 Jh=JfJgJ_\mathbf{h} = J_\mathbf{f} \cdot J_\mathbf{g}。反向传播是链式法则从输出到输入的高效实现,利用了标量输出 + 高维参数的结构特点
  • Hessian 矩阵:二阶导数构成的对称矩阵 HH,通过二次型 dTHd\mathbf{d}^T H \mathbf{d} 刻画各方向的曲率。HH 正定     \iff 局部极小,HH 不定     \iff 鞍点
  • Hessian 特征分解 = 主曲率方向:特征向量是等高线椭球的半轴方向,特征值是对应方向的曲率大小。条件数 κ(H)=λmax/λmin\kappa(H) = \lambda_{\max}/\lambda_{\min} 衡量梯度下降的收敛难度
  • 矩阵 Taylor 展开L(W+ΔW)L(W)+tr(LTΔW)+12vec(ΔW)THvec(ΔW)\mathcal{L}(W + \Delta W) \approx \mathcal{L}(W) + \text{tr}(\nabla \mathcal{L}^T \Delta W) + \frac{1}{2}\text{vec}(\Delta W)^T H\,\text{vec}(\Delta W)
  • Intrinsic dimensionality:实际损失曲面的 Hessian 只有少数大特征值——有效优化维度远低于参数总数——这是 LoRA 有效的理论根基

至此,Part 1 “拆”的核心数学工具已经齐备:分解(特征分解 + SVD)、度量(范数 + 条件数)、微分(梯度 + Hessian)。但有了地图不等于会走路——下一篇将学习优化算法(梯度下降、牛顿法、SGD),把这些微积分工具变成实际求解损失最小值的行进路线。