矩阵、向量微分计算

定义1. 梯度(Gradient)[标量对列向量微分]
f(x) 是一个变量为 x 的标量函数,其中 x=x1...xNT 。那么定义 f(x) x 的梯度为 df(x)dx
这里写图片描述
梯度的转置是一个行向量:
这里写图片描述

定义2. 海塞矩阵(Hessian matrix)【海塞矩阵是二阶梯度】
f(x) 是一个二阶可微分的标量函数,其中 x=x1...xNT 。那么定义 f(x) x 的海塞矩阵为 d2f(x)dxdxT
这里写图片描述
海塞矩阵是对称阵。

定义3. 雅可比矩阵(Jacobian matrix)【雅可比矩阵本质上是一阶梯度,向量对向量微分】
f(x) 是一个K X 1的列向量函数
这里写图片描述
其中 x=x1...xLT 。那么定义 f(x) x 的雅可比矩阵为 df(x)dxT
这里写图片描述

定义4. [矩阵对标量微分]
M×N 的矩阵 A 的元素是一个向量 x 的元素 xq 的函数,定义 Axq 为:
这里写图片描述

矩阵的二阶微分:
这里写图片描述

定理1. 矩阵的乘积微分
A K×M 的矩阵,B是 K×L 的矩阵, C=AB 。设 AB 的元素是向量 x 的一个元素 xq 的函数,那么:
这里写图片描述

证明过程如下:
矩阵、向量微分计算_第1张图片

定理2.
A M×N 的非奇异矩阵,设 A 的元素是向量 x 的一个元素 xq 的函数,那么 A1 x 的一阶微分和二阶微分分别为:
矩阵、向量微分计算_第2张图片

证明过程如下:


二次函数 f(x)=xTVx ,其中 x=x1...xkT k×kA 。则 f(x) k×1 的列向量 x 的微分为: d(xTVx)dx=(V+VT)x
以k=3的情况举例说明:

矩阵微分的应用
这里写图片描述


矩阵迹的微分(Derivative of Traces)
在机器学习中,有时候需要对一个矩阵的F模进行微分,而矩阵的F是可以转换为矩阵的迹,矩阵的迹的微分的计算可以帮助我们计算矩阵的F模的微分。比如在线性回归模型中,输出不是0和1,而是一个向量,这时整个输出矩阵就不是向量而是矩阵的。这会在最后的例子中具体说明。

矩阵的F模和迹的关系:
这里写图片描述
其中 A A 的共轭转置。

矩阵的迹的性质:
这里写图片描述

上面的两点会在后面的例子中用到。

Matrix Cookbook中给出了矩阵迹的微分的一般表达式:
xtr(F(x))=f(x)T 其中, f() F() 的微分。

一阶:
矩阵、向量微分计算_第3张图片

二阶:

高阶:
矩阵、向量微分计算_第4张图片

看了给的这些例子后,感觉有些情况下计算 F() 的微分 f() 还是有点困难,不明白到底计算的规则是怎么样的。比如高阶中的前两个例子, Xtr(Xk)=k(Xk1)T Xtr(AXk)=k1r=0(XrAXkr1)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)}
上面式子中, T1T2T3 为任意长的矩阵连乘表达式,可以包含 X

对上面列出的例子进行计算,发现都符合。举一个例子。
Xtr(AXk)=k1r=0(XrAXkr1)T
使用上面的计算规则计算,共有 kX ,所以结果有 k 项,对每一个 X 依次计算:
Xtr(AXk)=AT(Xk1)T+(AX)T(Xk2)T+(AX2)T(Xk3)T+...+(AXk2)T(X)T+(AXk1)T
相信聪明的读者已经看出规律了,写成求和的形式就是:
Xtr(AXk)=k1r=0(XrAXkr1)T
和上面给出的式子一模一样的!


举个例子, Y=XW+E ,这里 YXWE 都是矩阵,这可以看作是机器学习中的回归的问题, Y 是输出矩阵, X 是特征向量, W 是待学习的特征权重, E 是误差, E=YXW ,是真实值和预测值的差,机器学习中希望学习到一个参数矩阵 W 使得误差最小,即 E 的F模最小(这里 E 是矩阵,如果是向量,可以直接取向量的模就可以)
||E||F=trETE=tr[(YXW)T(YXW)]=tr(YTYYTXWWTXTY+WTXTXW)

W||E||F=Wtr(ETE)=Wtr(YTYYTXWWTXTY+WTXTXW)

W||E||F=XTYXTY+XTXW+XTXW=2XTY+2XTXW=0
XTY=XTXW

最后的结果就是:
W=(XTX)1XTY


参考:
APPENDIX D VECTOR AND MATRIX DIFFERENTIATION
INTRODUCTION TO VECTOR AND MATRIX DIFFERENTIATION
Matrix CookBook <这个比较全>

你可能感兴趣的:(math,函数,matrix)