梯度详解
核心概念
梯度是深度学习中梯度下降法的核心,决定模型参数的更新方向和步长。

1. 梯度的定义
1.1. 前提条件
函数 f:Rn→R:
- 输入:n 维向量 x=[x1,x2,…,xn]T
- 输出:单个数字(标量),如损失函数
1.2. 梯度公式
∇xf(x)=[∂x1∂f(x),∂x2∂f(x),…,∂xn∂f(x)]T
通俗解释: 把函数 f 对每一个自变量 x1,x2..xn 分别求偏导,再把所有偏导数按顺序拼成一个列向量,这个向量就叫梯度 ∇f。
符号 ∇ 读作 nabla,∇xf 表示”对变量 x 求梯度”。
示例: 二元函数 f(x1,x2)=3x12+x1x2
∂x1∂f=6x1+x2,∂x2∂f=x1
梯度向量:
∇f=[6x1+x2x1]
2. 四个常用向量梯度公式
设 x 是 n 维列向量,A 是常数矩阵(不随 x 变化):
公式 1: ∇xAx=AT
Ax 是矩阵乘向量,结果是向量;对 x 求梯度得到 A 的转置。
公式 2: ∇xxTA=A
行向量 xT 乘矩阵 A,梯度直接等于 A。
公式 3: ∇xxTAx=(A+AT)x
二次型函数(损失函数、正则项大量用到)。当 A 对称时简化为 2Ax。
公式 4: ∇x∥x∥2=∇xxTx=2x
∥x∥2 是向量 L2 范数平方:x12+x22+⋯+xn2。L2 正则的核心公式。
3. 矩阵变量的梯度
如果变量是矩阵 X:
∇X∥X∥F2=2X
∥X∥F 是矩阵 Frobenius 范数(所有元素平方和开根号),矩阵权重衰减的关键公式。
4. 梯度在深度学习中的作用
训练神经网络就是不断减小损失函数 L(w),梯度 ∇L(w) 告诉我们两件事:
- 梯度向量指向损失增长最快的方向
- 沿着梯度反方向更新权重,就能一步步降低损失
这是 SGD、Adam 等优化器的底层原理。
5. 链式法则铺垫
深度学习网络是多层复合函数,直接求偏导极其麻烦,需要通过链式法则拆分梯度计算 — 这是自动微分和反向传播的数学基础。
6. 四个向量梯度公式完整证明
约定:x∈Rn×1 列向量,A 是常数矩阵。
6.1. 公式 1:∇xAx=A⊤
设 A∈Rm×n,令 y=Ax∈Rm×1:
yi=k=1∑nAikxk
梯度定义:∇xyi 是对 x 各分量偏导组成的列向量:
∂xj∂yi=Aij
把所有 i 堆叠成矩阵(雅可比矩阵),再转置为梯度列向量,即得 A⊤。
6.2. 公式 2:∇xx⊤A=A
设 A∈Rn×m,令 y=x⊤A∈R1×m:
yj=k=1∑nxkAkj
对 xi 求偏导:
∂xi∂yj=Aij
按梯度定义堆叠,结果为矩阵 A 本身。
6.3. 公式 3:∇xx⊤Ax=(A+A⊤)x
令标量 f=x⊤Ax,展开为分量求和形式:
f=i=1∑nj=1∑nxiAijxj
对 xk 求偏导(分 i=k 和 j=k 两部分):
∂xk∂f=j=1∑nAkjxj+i=1∑nxiAik
写成向量形式:
∇f=Ax+A⊤x=(A+A⊤)x
当 A 对称时,A⊤=A,简化为 2Ax。
6.4. 公式 4:∇x∥x∥2=2x
令公式 3 中 A=I(单位矩阵,对称):
∇xx⊤Ix=2Ix=2x
直接展开验证:
∥x∥2=x12+x22+⋯+xn2,∂xi∂∥x∥2=2xi
拼成列向量即 2x。
6.5. 矩阵梯度拓展:∇X∥X∥F2=2X
F 范数平方 ∥X∥F2=∑i,jXij2,对每个元素求偏导 ∂Xij∂∥X∥F2=2Xij,整体矩阵梯度就是 2X。
7. 为什么深度学习要用向量/矩阵梯度?
7.1. 神经网络权重天然是向量/矩阵
- 单层权重 W∈Rm×n,偏置 b∈Rm
- 损失函数 L 是标量输出,输入是高维权重向量
7.2. 批量运算,GPU 友好
梯度把所有偏导数打包成向量/矩阵,能使用 GPU 矩阵并行加速,代码一行完成更新。
7.3. 反向传播简洁
链式法则对向量、矩阵有统一矩阵形式,反向传播全程只用矩阵运算推导。
7.4. 优化算法的方向依赖整体向量
梯度下降需要所有参数同步更新,必须一次性拿到全部参数的梯度向量。
8. 为什么梯度指向函数增长最快的方向?
8.1. 方向导数
设标量函数 f(x),单位方向向量 u,方向导数:
Duf=∇f⋅u=∥∇f∥∥u∥cosθ=∥∇f∥cosθ
θ 是梯度 ∇f 和方向 u 的夹角。
- θ=0∘(同向):方向导数最大 =∥∇f∥,函数上升最快
- θ=180∘(反向):方向导数最小,函数下降最快
损失函数 L 越小越好,所以沿梯度反方向更新权重。
9. 沿梯度反方向更新权重,更新的是矩阵吗?
9.1. 参数是向量
梯度 ∇bL 是和 b 同维度向量:
b=b−η⋅∇bL
η 是学习率。
9.2. 参数是矩阵
梯度 ∇WL 和 W 完全同尺寸的矩阵:
W=W−η⋅∇WL
结论:权重是矩阵就更新矩阵,是向量就更新向量,规则完全统一。
9.3. 为什么不用拆开成标量更新?
矩阵形式是批量并行运算,GPU 计算极快。拆成标量循环会慢成千上万倍。
极简总结
- 梯度是多元标量函数所有偏导数拼成的向量,给出函数增减最快的方向
- 四个常用向量梯度公式是梯度下降优化神经网络的数学工具
- 由方向导数可知:梯度同向上升最快、反向下降最快
- 更新对象和参数维度一致:参数是矩阵就整体更新矩阵,向量则更新向量
关联文档