矩阵求导
参考 zhuanlan.zhihu.com/p/273729929
main idea
4 定义法两个基本题目
eg1.
f(X)=∣X∣,
X是
n×n的矩阵,求
∂X∂f
按照定义,对每个位置分别求导
∂X∂f=⎣
⎡∂x11∂∣X∣∂x12∂∣X∣∂x21∂∣X∣∂x22∂∣X∣…∂xn1∂∣X∣∂xn2∂∣X∣…………∂x1n∂∣X∣∂x2n∂∣X∣…∂xnn∂∣X∣⎦
⎤
对于
∂xij∂∣X∣ 按照他所在的行展开计算行列式,则可变化为
∂xijAi1xi1+…+Aijxij+…+Ainxin=Aij 其中
Aij为代数余子式(有符号)。所以按照定义,求导后就是
⎣
⎡A11…An1A12…An2………A1n…Ann⎦
⎤
所以这个导数就是伴随矩阵
X∗,伴随矩阵、原矩阵和逆矩阵有如下关系:
XX∗=X∗X=∣X∣I
所以可以进一步化为
∂X∂f=∣X∣X−1
利用全微分 + trace的方法求导
-
这种方法的核心思想是引入了trace,引入trace的好处是只关注矩阵的对角线,因此很多操作在只看trace的情况下是成立的。这为化简提供了便利。
-
全微分在矩阵条件下和实值变量情况下是一样的,为
X的各个分量的偏导数*该分量的微分最后求和
例如
df(X)=∂x11∂fdx11+…+∂xmn∂fdxmn
他可以进一步写成
df(X)=tr(∂XT∂fdX) 这其实是矩阵trace的一个性质,如果两个矩阵形状相同,那第一个转置乘第二个再求trace恰好就是对应位置元素相乘再求和。
-
上面的写法有一个好处,当我们试图求
∂X∂f 的时候,可以先求
∂XT∂f 再转置。而后者求法,则可以先求
df(X)。但是直接求微分无法出现trace符号,但标量函数的全微分是一个标量,它的trace等于自身,因此
df(X)=tr(df(X))。
因此,矩阵求导可以利用全微分的性质(和求导一样)进行一系列化简,化成
df(X)=tr(g(X)dX)的形式,那么
g(X)就是
∂XT∂f,已经有人证明了这个的唯一性。再转置回来就得到了导数。
-
tr的性质
- tr(A)=tr(A’),tr(AB’)=tr(BA’) 转置不变
- tr(AB)=tr(BA), tr(ABC)=tr(CAB)=tr(BCA) 转着乘
- 线性性
eg2. 求
∂X∂aTXXTb
d(aTXXTb)=tr(d(aTXXTb))=tr(aTd(XXT)b)=tr(aTdXXTb)+tr(aTXdXTb) 利用性质2,把dX放在最右面,把前面凑成导数转置:
d(aTXXTb)=tr(aTdXXTb)+tr(aTXdXTb)=tr(XTbaTdX)+tr(baTXdXT)
对第二项,联合运用转置和交换率,得
d(aTXXTb)=tr(XTbaTdX)+tr(XTabTdX)=tr((XTbaT+XTabT)dX) 所以导数就是
(XTbaT+XTabT)T=abTX+baTX
eg3. 求
dX−1,
X是
n×n的矩阵
XX−1=I 两侧取微分
dX−1=−X−1dXX−1
这个如果求微分的话,是矩阵对矩阵求微分,用到克罗内克积,很复杂。克罗内克积用
⊗表示,含义为第一个矩阵的每一个元素和第二个矩阵相乘,结果是一个分块矩阵。记住
dX/dX=I⊗I 结果是一个
n2×n2的矩阵。
对于对称矩阵求导的处理
如果求导的矩阵是对称的,那么其实上面求出的导数并不彻底,因为对称位置的变量是相同的,他们可以进一步看作是关于某个参数t的函数,所以根据链式求导法则还得再求一次。
因此分为两个步骤,第一步是按照上面求法求出
A=∂XT∂f,这个求解过程中不要使用任何对称的性质。
在此基础上,得到
A′=A+A−tr(ATI) 。这样相当于把对称位置的导数变成了
xij∂f+xji∂f
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/14309.html