定义1. 梯度(Gradient)[标量对列向量微分]
设 f(x) 是一个变量为 x 的标量函数,其中 x=(x1...xN)T 。那么定义 f(x) 对 x 的梯度为 df(x)dx :
梯度的转置是一个行向量:
定义2. 海塞矩阵(Hessian matrix)【海塞矩阵是二阶梯度】
设 f(x) 是一个二阶可微分的标量函数,其中 x=(x1...xN)T 。那么定义 f(x) 对 x 的海塞矩阵为 d2f(x)dxdxT :
海塞矩阵是对称阵。
定义3. 雅可比矩阵(Jacobian matrix)【雅可比矩阵本质上是一阶梯度,向量对向量微分】
设 f(x) 是一个K X 1的列向量函数
其中 x=(x1...xL)T 。那么定义 f(x) 对 x 的雅可比矩阵为 df(x)dxT :
定义4. [矩阵对标量微分]
M×N 的矩阵 A 的元素是一个向量 x 的元素 xq 的函数,定义 ∂A∂xq 为:
矩阵的二阶微分:
定理1. 矩阵的乘积微分
A 是 K×M 的矩阵,B是 K×L 的矩阵, C=AB 。设 A和B 的元素是向量 x 的一个元素 xq 的函数,那么:
定理2.
A 是 M×N 的非奇异矩阵,设 A 的元素是向量 x 的一个元素 xq 的函数,那么 A−1 对 x 的一阶微分和二阶微分分别为:
证明过程如下:
二次函数 f(x)=xTVx ,其中 x=(x1...xk)T , k×k矩阵A 。则 f(x) 对 k×1 的列向量 x 的微分为: d(xTVx)dx=(V+VT)x
以k=3的情况举例说明:
矩阵微分的应用
矩阵迹的微分(Derivative of Traces)
在机器学习中,有时候需要对一个矩阵的F模进行微分,而矩阵的F是可以转换为矩阵的迹,矩阵的迹的微分的计算可以帮助我们计算矩阵的F模的微分。比如在线性回归模型中,输出不是0和1,而是一个向量,这时整个输出矩阵就不是向量而是矩阵的。这会在最后的例子中具体说明。
矩阵的迹的性质:
上面的两点会在后面的例子中用到。
Matrix Cookbook中给出了矩阵迹的微分的一般表达式:
∂∂xtr(F(x))=f(x)T 其中, f() 是 F() 的微分。
二阶:
看了给的这些例子后,感觉有些情况下计算 F() 的微分 f() 还是有点困难,不明白到底计算的规则是怎么样的。比如高阶中的前两个例子, ∂∂Xtr(Xk)=k(Xk−1)T 和 ∂∂Xtr(AXk)=∑k−1r=0(XrAXk−r−1)T ,第二个例子仅因为多了一个A结果却大相径庭,但是这里计算 F() 的微分 f() 到底怎么计算的?我感觉不是很明白,资料上也没看具体说明。
我自己就琢磨出来了一套计算规律,感觉挺好用的。
具体说来,首先就是对 tr(T1XT2XTT3) 中所有的 X 分别计算,对于 tr 中出现的 X ,结果就是 X 前面部分整体的转置乘以 X 后面部分整体的转置,对于 tr 中出现的 XT ,结果就是 XT 前面部分整体的转置乘以 X 后面部分整体的转置,然后再整体来一个转置。或者进一步简化,结果就是 XT 后面的整体部分乘以 XT 前面的部分。
形式化的式子:
∂∂Xtr(T1XT2XTT3)=TT1(T2XTT3)T+{(T1XT2)TTT3}T
或者进一步化为:
∂∂Xtr(T1XT2XTT3)=TT1(T2XTT3)T+{T3(T1XT2)}
上面式子中, T1、T2、T3 为任意长的矩阵连乘表达式,可以包含 X 。
对上面列出的例子进行计算,发现都符合。举一个例子。
∂∂Xtr(AXk)=∑k−1r=0(XrAXk−r−1)T
使用上面的计算规则计算,共有 k个X ,所以结果有 k 项,对每一个 X 依次计算:
∂∂Xtr(AXk)=AT(Xk−1)T+(AX)T(Xk−2)T+(AX2)T(Xk−3)T+...+(AXk−2)T(X)T+(AXk−1)T
相信聪明的读者已经看出规律了,写成求和的形式就是:
∂∂Xtr(AXk)=∑k−1r=0(XrAXk−r−1)T
和上面给出的式子一模一样的!
举个例子, Y=XW+E ,这里 Y、X、W、E 都是矩阵,这可以看作是机器学习中的回归的问题, Y 是输出矩阵, X 是特征向量, W 是待学习的特征权重, E 是误差, E=Y−XW ,是真实值和预测值的差,机器学习中希望学习到一个参数矩阵 W 使得误差最小,即 E 的F模最小(这里 E 是矩阵,如果是向量,可以直接取向量的模就可以)
||E||F=tr(ETE)=tr[(Y−XW)T(Y−XW)]=tr(YTY−YTXW−WTXTY+WTXTXW)
∂∂W||E||F=∂∂Wtr(ETE)=∂∂Wtr(YTY−YTXW−WTXTY+WTXTXW)
∂∂W||E||F=−XTY−XTY+XTXW+XTXW=−2XTY+2XTXW=0
XTY=XTXW
最后的结果就是:
W=(XTX)−1XTY
参考:
APPENDIX D VECTOR AND MATRIX DIFFERENTIATION
INTRODUCTION TO VECTOR AND MATRIX DIFFERENTIATION
Matrix CookBook <这个比较全>