参考资料
1. 机器学习中的矩阵、向量求导
矩阵对标量求导
求导结果与函数(矩阵)同型,即导数结果的每个元素就是矩阵相应分量对标量的求导。若函数矩阵
f是一个
m×n维矩阵,则求导结果也是一个
m×n维矩阵,其中
(∂x∂f)ij=∂x∂fij
特别地,对于
n维向量,其对标量自变量的导数为
y=(y1,⋯,yn)⟹∂x∂y=(∂x∂y1,⋯,∂x∂yn)
标量对矩阵求导
求导结果与自变量(矩阵)同型,若自变量矩阵
X是一个
m×n维矩阵,则求导结果也是一个
m×n维矩阵,其中
(∂X∂f)ij=∂xij∂f
特别地,标量函数
f对于
n维向量
x的导数为
∇xf=(∂x1∂f,⋯,∂xn∂f)⊤
向量对向量求导(雅可比矩阵)
若函数值
f是一个
m维向量,自变量
x是
n维向量,则求导结果是
m×n维矩阵,其中
∂x∂f=(∂x1∂f,⋯,∂xn∂f),(∂x∂f)ij=∂xj∂fi
特殊地,当函数值
f为标量时,雅克比矩阵是一个行向量,这与标量对向量的求导结果不一致,即
∇xf=(∇xf)⊤=(∂x1∂f,⋯,∂xn∂f)
向量求导的链式法则
若中间变量都是向量,假设变量存在依赖关系
x→v→u→f,则
∂x∂f=∂u∂f∂v∂u∂x∂v
若结果变量
f是标量,则
∂x∂f=∂x⊤∂f=∂u⊤∂f∂v∂u∂x∂v
以上结果,可用于RNN的BPTT推导。
矩阵迹
迹的基本性质
- 转置不变性:
tr(A)=tr(A⊤)
- 轮换不变性:
tr(ABC)=tr(CAB)=tr(BCA)
迹(标量)的导数
-
∇tr(A⊤X)=∇tr(X⊤A)=∇tr(AX⊤)=A
-
∇tr(AX)=∇tr(XA)=A⊤
-
∇tr(XAX⊤B)=B⊤XA⊤+BXA
证明:
∇tr(XAX⊤B)=∇X1tr(X1AX2⊤B)+∇X2tr(X1AX2⊤B)=∇X1tr(AX2⊤BX1)+∇X2tr(BX1AX2⊤)=B⊤X2A⊤+BX1A=B⊤XA⊤+BXA
与迹有关的导数
-
∇a⊤X⊤Xa=2Xaa⊤
-
∇(Xa−b)⊤(Xa−b)=2(Xa−b)a⊤
实值函数对向量求导
标量对向量的求导,可以用迹相关的性质。
- 矩阵乘法求导:
∇a⊤x=a
- 内积求导:
∇x⊤x=2x
- 二次型求导:
∇x⊤Ax=(A+A⊤)x
- 向量内积求导:
∇xu⊤v=(∇xu)⊤v+(∇xv)⊤u