00 矩阵求导

00 矩阵求导矩阵求导 main idea 函数的输出如果不是标量,那么求导就是对他的每一个输出分别求,于是问题退化成了输出是标量

矩阵求导

参考 zhuanlan.zhihu.com/p/273729929

main idea

  • 函数的输出如果不是标量,那么求导就是对他的每一个输出分别求,于是问题退化成了输出是标量、输入是矩阵的求导,不用太纠结,因为只要位置映射的对就可以了

  • 关于矩阵
    X X
    求导,求导完的结果和
    X X
    的形状是一样的。

  • 定义方法求导

    • 假设
      f R m × n R f:R^{m\times n} \rightarrow R
      那么求导结果是一个
      m × n m \times n
      的矩阵,第
      i i
      行第
      j j
      列表示
      f f
      关于
      x i j x_{ij}
      的求导结果。
    • 根据这个定义,导数的运算法则全都适用。包括函数的和差积商、数乘、复合。对常数求是0矩阵

4 定义法两个基本题目

eg1.
f ( X ) = X f(X)=|X|

X X

n × n n\times n
的矩阵,求
f X \frac{\partial f}{\partial X}

​ 按照定义,对每个位置分别求导


f X = [ X x 11 X x 12 . . . X x 1 n X x 21 X x 22 . . . X x 2 n . . . . . . . . . X x n 1 X x n 2 . . . X x n n ] \frac{\partial f}{\partial X} =\begin{bmatrix} \frac{\partial |X|}{\partial x_{11}}\frac{\partial |X|}{\partial x_{12}}&…&\frac{\partial |X|}{\partial x_{1n}}\\ \frac{\partial |X|}{\partial x_{21}}\frac{\partial |X|}{\partial x_{22}}&…&\frac{\partial |X|}{\partial x_{2n}}\\ …&…&…\\ \frac{\partial |X|}{\partial x_{n1}}\frac{\partial |X|}{\partial x_{n2}}&…&\frac{\partial |X|}{\partial x_{nn}}\\ \end{bmatrix}

对于
X x i j \frac{\partial |X|}{\partial x_{ij}}
按照他所在的行展开计算行列式,则可变化为
A i 1 x i 1 + . . . + A i j x i j + . . . + A i n x i n x i j = A i j \frac{A_{i1}x_{i1}+…+A_{ij}x_{ij}+…+A_{in}x_{in}}{\partial x_{ij}}=A_{ij}
其中
A i j A_{ij}
为代数余子式(有符号)。所以按照定义,求导后就是


[ A 11 A 12 . . . A 1 n . . . . . . . . . . . . A n 1 A n 2 . . . A n n ] \begin{bmatrix} A_{11}&A_{12}&…&A_{1n} \\ …&…&…&…\\A_{n1}&A_{n2}&…&A_{nn}\end{bmatrix}

所以这个导数就是伴随矩阵
X X^*
,伴随矩阵、原矩阵和逆矩阵有如下关系:
X X = X X = X I XX^*=X^*X=|X|I

所以可以进一步化为
f X = X X 1 \frac{\partial f}{\partial X}=|X|X^{-1}

利用全微分 + trace的方法求导

  • 这种方法的核心思想是引入了trace,引入trace的好处是只关注矩阵的对角线,因此很多操作在只看trace的情况下是成立的。这为化简提供了便利。

  • 全微分在矩阵条件下和实值变量情况下是一样的,为
    X X
    的各个分量的偏导数*该分量的微分最后求和

    例如
    d f ( X ) = f x 11 d x 11 + . . . + f x m n d x m n df(X)=\frac{\partial f}{\partial x_{11}}dx_{11}+…+\frac{\partial f}{\partial x_{mn}}dx_{mn}

    他可以进一步写成
    d f ( X ) = t r ( f X T d X ) df(X)=tr(\frac{\partial f}{\partial X^T}dX)
    这其实是矩阵trace的一个性质,如果两个矩阵形状相同,那第一个转置乘第二个再求trace恰好就是对应位置元素相乘再求和。

  • 上面的写法有一个好处,当我们试图求
    f X \frac{\partial f}{\partial X}
    的时候,可以先求
    f X T \frac{\partial f}{\partial X^T}
    再转置。而后者求法,则可以先求
    d f ( X ) df(X)
    。但是直接求微分无法出现trace符号,但标量函数的全微分是一个标量,它的trace等于自身,因此
    d f ( X ) = t r ( d f ( X ) ) df(X)=tr(df(X))

因此,矩阵求导可以利用全微分的性质(和求导一样)进行一系列化简,化成
d f ( X ) = t r ( g ( X ) d X ) df(X)=tr(g(X)dX)
的形式,那么
g ( X ) g(X)
就是
f X T \frac{\partial f}{\partial X^T}
,已经有人证明了这个的唯一性。再转置回来就得到了导数。

  • tr的性质

    • tr(A)=tr(A’),tr(AB’)=tr(BA’) 转置不变
    • tr(AB)=tr(BA), tr(ABC)=tr(CAB)=tr(BCA) 转着乘
    • 线性性

eg2. 求
a T X X T b X \frac{\partial a^TXX^Tb}{\partial X}


d ( a T X X T b ) = t r ( d ( a T X X T b ) ) = t r ( a T d ( X X T ) b ) = t r ( a T d X X T b ) + t r ( a T X d X T b ) d(a^TXX^Tb)=tr(d(a^TXX^Tb))=tr(a^Td(XX^T)b)=tr(a^TdXX^Tb) + tr(a^TXdX^Tb)
利用性质2,把dX放在最右面,把前面凑成导数转置:

d ( a T X X T b ) = t r ( a T d X X T b ) + t r ( a T X d X T b ) = t r ( X T b a T d X ) + t r ( b a T X d X T ) d(a^TXX^Tb)=tr(a^TdXX^Tb) + tr(a^TXdX^Tb)=tr(X^Tba^TdX)+tr(ba^TXdX^T)

对第二项,联合运用转置和交换率,得
d ( a T X X T b ) = t r ( X T b a T d X ) + t r ( X T a b T d X ) = t r ( ( X T b a T + X T a b T ) d X ) d(a^TXX^Tb)=tr(X^Tba^TdX)+tr(X^Tab^TdX)=tr((X^Tba^T+X^Tab^T)dX)
所以导数就是
( X T b a T + X T a b T ) T = a b T X + b a T X (X^Tba^T+X^Tab^T)^T=ab^TX+ba^TX

eg3. 求
d X 1 dX^{-1}

X X

n × n n\times n
的矩阵


X X 1 = I XX^{-1}=I
两侧取微分
d X 1 = X 1 d X X 1 dX^{-1}=-X^{-1}dXX^{-1}

​ 这个如果求微分的话,是矩阵对矩阵求微分,用到克罗内克积,很复杂。克罗内克积用
\otimes
表示,含义为第一个矩阵的每一个元素和第二个矩阵相乘,结果是一个分块矩阵。记住
d X / d X = I I dX/dX=I\otimes I
结果是一个
n 2 × n 2 n^2\times n^2
的矩阵。

对于对称矩阵求导的处理

如果求导的矩阵是对称的,那么其实上面求出的导数并不彻底,因为对称位置的变量是相同的,他们可以进一步看作是关于某个参数t的函数,所以根据链式求导法则还得再求一次。

因此分为两个步骤,第一步是按照上面求法求出
A = f X T A=\frac{\partial f}{\partial X^T}
,这个求解过程中不要使用任何对称的性质。

在此基础上,得到
A = A + A t r ( A T I ) A’=A+A-tr(A^TI)
。这样相当于把对称位置的导数变成了
f x i j + f x j i \frac{\partial f}{x_{ij}}+\frac{\partial f}{x_{ji}}

今天的文章00 矩阵求导分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/14309.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注