1、求导的一些基本规则:
通常来说,标量、向量以及矩阵之间的求导,可以理解维每个分量分别对分量进行求导然后进行排列。可以行排列也可以列排列,当然两者都可以。分别称之为分子布局和分母布局。
于分子布局来说,我们求导结果的维度以分子为主,求导结果的维度和分子的维度是一致的。也就是说,如果向量y是一个m维的列向量,那么求导结果
∂x∂y也是一个m维列向量,即维数为m×1。如果如果向量y是一个m维的行向量,那么求导结果
∂x∂y也是一个m维行向量,即1×m。
对于分母布局来说,我们求导结果的维度以分母为主,求导结果的维度和分子的结果是一致的,也就是说,如果向量y是一个m维的列向量,那么求导结果
∂x∂y是一个1×m维行向量。如果如果向量y是一个m维的行向量,那么求导结
∂x∂y是一个m×1维的列向量。
可见,对于分子布局和分母布局的结果来说,两者相差一个转置。一般来说在机器学习的书中,我们会使用一种叫混合布局的思路,即如果是向量或者矩阵对标量求导,则使用分子布局为准,如果是标量对向量或者矩阵求导,则以分母布局为准。而在最优化的书中,则采用的方法恰恰相反,当然这两者都是正确的,以解决问题的便捷为好。而向量和矩阵之间的求导则依据分子布局雅可比矩阵的求导规则。以下例子均使用最优化中的方法。
总结一下:关于标量、向量以及矩阵之间求导的基本布局原理。
2、几个常见推导运算
-
∂x∂Ax=A
其中:
A=⎣⎢⎢⎢⎡a11a21⋮am1a12⋯a1na22⋯a2n⋮⋱⋮am2⋯amn⎦⎥⎥⎥⎤x=⎣⎢⎢⎢⎡x1x2⋮xn⎦⎥⎥⎥⎤
∂x∂(Ax)=⎣⎢⎢⎢⎢⎡∂x1∂(Ax)1∂x1∂(Ax)2⋮∂x1∂(Ax)n∂x2∂(Ax)1∂x2∂(Ax)2⋮∂x2∂(Ax)n⋯⋯⋱⋯∂xm∂(Ax)1∂xm∂(Ax)2⋮∂xm∂(Ax)n⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎡a11a21⋮an1a12⋯a1ma22⋯a2m⋮⋱an2⋯anm⎦⎥⎥⎥⎤=A
(Ax)i=ai1x1+ai2x2+⋯+ainxn
总结,对于
A,m×n维向量,
x为n×1维向量,直接提取
A。
-
x∂(y⊤Ax)=y⊤A
将
yTAx分成
yTA与
x分开,例1得到结果。
-
∂(x⊤x)=2x⊤
运用定义法对其推导,设
x为n×1维的矩阵,则
xT为一个常向量,分别对
x进行求导,即得到结果。以下均可按照此证明。
-
∂(x⊤Qx)=2x⊤Q
Q是对称矩阵
3、向量求导的链式规则
在标量的求导中,常有链式规则
∂x∂z=∂y∂z∂x∂y,下面论证在向量求导中应用链式规则。
3.1、
(∂x∂z)T=(∂y∂z)T∂x∂y
其中z为标量,x,y为向量
3.2、
∂x∂z=∂y∂z∂x∂y
其中x,y,均为向量
对维度进行分析,知两边维度相容,另外根据定义法,即基本规则可证明上述规则成立。
4、更一般的形式
另外,对于更一般的形式,可以运用求导规则中的一般规则
∂x∂au=a∂x∂u+∂x∂auT
其中,
A∈Rm×n,u∈Rn×1,x∈Rp×1
举例:
∂x∂(xTA)y
∂x∂y∈Rm×n∂x∂xTA=A∈Rm×n
∂x∂(xTA)y=∂x∂yATx+Ay
5、导数和梯度以及Hessian矩阵关系
函数
f(x)的导数
f′(x)=[x1∂f(x),x2∂f(x),...,xn∂f(x)]
而梯度函数
∇f(x)=(f′(x))T.
f′′(x)=F(x)=
D2f=⎣⎢⎢⎢⎢⎢⎡∂x12∂2f∂x1∂x2∂2f⋮∂x1∂xn∂2f∂x2∂x1∂2f∂x22∂2f⋮∂x2∂xn∂2f⋯⋯⋱⋯∂xn∂x1∂2f∂xn∂x2∂2f⋮∂xn2∂2f⎦⎥⎥⎥⎥⎥⎤$$
参考:
1、https://www.cnblogs.com/pinard/p/10825264.html
2、https://www.jianshu.com/p/4128e5b31fb4