Base Principle
l=f(A),f:Rm×n→R,f∈C1
∂A∂f=∂A1,1∂f∂A2,1∂f⋮∂Am,1∂f∂A1,2∂f∂A2,2∂f⋮∂Am,2∂f⋯⋯⋱⋯∂A1,n∂f∂A2,n∂f⋮∂Am,n∂f
标量微分由 Frobenius 内积给出:
dl=⟨∂A∂l,dA⟩F=tr[(∂A∂l)TdA].
对于向量自变量同理:
dl=(∇xl)Tdx.
因此,只要找到满足
∀dA,dl=tr(BTdA)
的 B,就有 ∂A∂f=B。
Useful Rules
Differential
- Addition rule: d(X±Y)=dX±dY
- Product rule: d(XY)=(dX)Y+XdY
- Inverse: dX−1=−X−1(dX)X−1
- Transpose: d(XT)=(dX)T
- Trace: dtr(X)=tr(dX)
- Determinant: d∣X∣=tr(X#dX),其中 X#=adj(X) 是伴随矩阵(adjugate),不要与 Moore–Penrose 伪逆等广义逆混淆。若 X 可逆,也可写成更常用的 d∣X∣=∣X∣tr(X−1dX)
- Hadamard product: d(X⊙Y)=dX⊙Y+X⊙dY
- Component-wise(element-wise) function: dσ(X)=σ′(X)⊙dX
Trace
- Scalar trace: a=tr(a)
- Transpose: tr(AT)=tr(A)
- Linearity: tr(aA+bB)=atr(A)+btr(B)
- Cyclic property: tr(AB)=tr(BA),只要 AB 与 BA 都有定义即可。例如 A∈Rm×n,B∈Rn×m 时,AB∈Rm×m,BA∈Rn×n,但二者迹仍相等,且都等于 ∑i,jAijBji
- Cyclic property with Hadamard product: tr(AT(B⊙C))=tr((A⊙B)TC),其中 A,B,C 维数相同。二者都等于 ∑i,jAijBijCij
常见的微分演算
- n : dimension of output
- y^ : predicted value
- y : target value
MSE
y^=Wx+b
l=∑i=1n(yi−y^i)2=(y^−y)T(y^−y)
let t=y^−y,
dl=tr(tTdt+dtTt)=tr(tTdt)+tr(dtTt)=tr((2t)Tdt)
Thus
∂t∂l=2t
dt=d(y^−y)=dy^
∂y^∂l=2t
dy^=d(Wx+b)=dWx
dl=tr((∂y^∂l)TdWx)=tr(x(∂y^∂l)TdW)=tr(((∂y^∂l)xT)TdW)
∂W∂l=(∂y^∂l)xT=2txT
Eigenvalue and Eigenvector
Suppose A∈Symn(R),则 A 可分解为
A=QΛQT
Λ=diag(λ1,λ2,⋯,λn),λi≤λi+1Q=(q1,q2,⋯,qn)∈On(R),On(R)={M∈Rn×n∣MTM=I}
其中 λi 是 A 的特征值,Q 是特征向量矩阵。由 QTQ=I 得
QTdQ+dQTQ=0.
令 H=QTdQ,则 HT=−H,且 dQTQ=−H。对 A=QΛQT 求微分:
dA=dQΛQT+QdΛQT+QΛdQT.
左乘 QT、右乘 Q 得
QTdAQ=HΛ+dΛ−ΛH.
Eigenvalue
因为 H 反对称且 Λ 对角,对角元满足
(dΛ)ii=(QTdAQ)ii,
即
dλi=qiT(dA)qi,diag(dΛ)=diag(QTdAQ).
注意一般不能写成整矩阵等式 dΛ=QTdAQ,因为 Q 本身依赖 A。若 l=l(λ1,…,λn),则
dl=i=1∑n∂λi∂ldλi=tr((Qdiag(∂λ1∂l,…,∂λn∂l)QT)TdA).
从而
∇Al=Qdiag(∂λ1∂l,…,∂λn∂l)QT.
Eigenvector
以下额外假设 A 的特征值互异:
λi=λj,i=j.
若存在重根 λi=λj,则 λj−λi1 发散,对应特征向量的微分不能用下面的公式计算。
由 QTdAQ=HΛ+dΛ−ΛH,对 i=j 有
(QTdAQ)ij=Hij(λj−λi),
于是
Hij=λj−λi(QTdAQ)ij,Hii=0.
令
Fij=⎩⎨⎧λj−λi10i=ji=j
则
H=F⊙(QTdAQ).
将 dQ=QH 代入标量微分:
dl=tr((∂Q∂l)TdQ)=tr((∂Q∂l)TQH)=tr((QT∂Q∂l)T(F⊙(QTdAQ)))=tr(((QT∂Q∂l)⊙F)T(QTdAQ))=tr((Q((QT∂Q∂l)⊙F)QT)TdA).
令候选矩阵
B=Q((QT∂Q∂l)⊙F)QT.
因为 A∈Symn(R),有 dA=dAT,故 dA 不是任意矩阵。此时
tr(BTdA)=tr(sym(B)TdA)
对所有对称的 dA 成立,因此
∇Al=sym(B)=2B+BT.
多元高斯的梯度
∇xp(x)=−Σ−1(x−μ)p(x)
证明:
设损失函数(或者这里直接看作概率密度函数 p(x) 本身)为标量 f(x)=p(x)。
多维高斯分布的表达式为:
p(x)=Cexp(−21(x−μ)TΣ−1(x−μ))
其中 C=(2π)d/2∣Σ∣1/21 是常数。
为了求关于 x 的梯度,我们首先对整体求微分 dp(x),并将其化简为 tr(BTdx) 的形式。
根据复合函数法则(链式法则)与指数函数的微分公式:
dp(x)=C⋅exp(−21(x−μ)TΣ−1(x−μ))⋅d(−21(x−μ)TΣ−1(x−μ))
注意到前面部分恰好就是 p(x),所以:
dp(x)=p(x)⋅(−21d[(x−μ)TΣ−1(x−μ)])
令 t=x−μ,则 dt=dx。我们需要对二次型 tTΣ−1t 求微分。
根据矩阵乘积的微分法则 d(XY)=(dX)Y+XdY:
d(tTΣ−1t)=(dtT)Σ−1t+tTΣ−1(dt)
由于 Σ−1 是对称矩阵(因为协方差矩阵 Σ 对称,其逆矩阵也对称),且 tTΣ−1dt 是一个标量(其转置等于其本身):
- 第一项 (dtT)Σ−1t 的转置为 tT(Σ−1)Tdt=tTΣ−1dt。
- 因此,两项完全相等:
d(tTΣ−1t)=2tTΣ−1dt
将二次型的微分代回 dp(x):
dp(x)=p(x)⋅(−21⋅2tTΣ−1dt)=−p(x)tTΣ−1dt
由于 dp(x) 是一个标量,根据框架中的基础性质 a=tr(a) 以及 迹的线性性质,将其套入迹算子中:
dp(x)=tr(−p(x)tTΣ−1dt)
dp(x)=tr((−p(x)Σ−1t)Tdt)
因为 t=x−μ,所以 dt=dx:
dp(x)=tr((−p(x)Σ−1(x−μ))Tdx)
对照基础原理公式:
∀dX,dl=tr(BTdX)⟹∂X∂l=B
在这里,变量是向量 x(可以看作 d×1 矩阵),对应得到:
∇xp(x)=−p(x)Σ−1(x−μ)
整理后即为:
∇xp(x)=−Σ−1(x−μ)p(x)
Q.E.D.
MSE
设标量函数 l(x)=∥a−f(x)∥2,其中 a∈Rm,x∈Rn,f:Rn→Rm 为向量函数。
令中间向量 t=a−f(x),则 l(x) 可改写为内积形式:
l(x)=tTt
对 l 关于 t 求微分:
dl=d(tTt)=(dt)Tt+tTdt
由于 (dt)Tt 是标量,其转置等于本身,即 (dt)Tt=tTdt,因此:
dl=2tTdt
因为 a 是常数向量,对 t=a−f(x) 求微分得到:
dt=d(a−f(x))=−df(x)
利用多变量函数的微分法则,df(x)=Jf(x)dx,其中 Jf(x)=∂x∂f(x)∈Rm×n 是 f 的雅可比矩阵(Jacobian matrix),代入得:
dt=−Jf(x)dx
将 dt 代回 dl 并利用标量的迹性质 a=tr(a):
dl=tr(dl)=tr(2tT(−Jf(x)dx))=tr(−2tTJf(x)dx)
利用矩阵转置性质与循环移位,整理为 tr(BTdx) 的标准形式:
dl=tr((−2Jf(x)Tt)Tdx)
根据匹配规则 ∀dx,dl=tr(BTdx)⟹∂x∂l=B:
∇x∥a−f(x)∥2=−2Jf(x)Tt
将 t=a−f(x) 还原并展开雅可比矩阵:
∇x∥a−f(x)∥2=2Jf(x)T(f(x)−a)=2(∂x∂f(x))T(f(x)−a)
Q.E.D.
向量内积 f(x)Tg(x)
设标量 Loss 函数 l(x)=f(x)Tg(x),其中 x∈Rn,f,g:Rn→Rm 为向量函数。
根据向量内积的微分乘积法则:
dl=d(f(x)Tg(x))=(df(x))Tg(x)+f(x)Tdg(x)
设 f,g 关于 x 的雅可比矩阵分别为 Jf(x)=∂x∂f(x)∈Rm×n 与 Jg(x)=∂x∂g(x)∈Rm×n,则:
df(x)=Jf(x)dx
dg(x)=Jg(x)dx
代入微分表达式:
dl=(Jf(x)dx)Tg(x)+f(x)T(Jg(x)dx)
利用标量性质 a=tr(a) 以及迹算子的转置与循环性质:
dl=tr(dl)=tr((Jf(x)dx)Tg(x))+tr(f(x)TJg(x)dx)=tr(g(x)TJf(x)dx)+tr(f(x)TJg(x)dx)=tr((Jf(x)Tg(x))Tdx)+tr((Jg(x)Tf(x))Tdx)=tr((Jf(x)Tg(x)+Jg(x)Tf(x))Tdx)
对照标准形式 ∀dx,dl=tr(BTdx)⟹∇xl=B:
∇x(f(x)Tg(x))=Jf(x)Tg(x)+Jg(x)Tf(x)=(∂x∂f(x))Tg(x)+(∂x∂g(x))Tf(x)