矩阵求导的Trace Trick

公式推导

Posted by viewsetting on May 17, 2020

定义

对于标量函数对于矩阵的导数,可以记做: 首先对于标量函数对于标量的微分,可以写作: 然后推广到标量函数对于向量的微分,可以理解为每一个向量的分量对于标量微分的贡献之和。 观察上面的式子,向量微分的左边是函数对于向量的偏微分的转置,从而转化为了向量的内积形式。因此,推广到矩阵 : 上式中,表示的是矩阵的trace,迹,含义是矩阵主对角线元素之和,之所以映入矩阵的trace是因为它能带来运算的简化,将矩阵运算转换为标量计算。和向量内积相似,上面的矩阵转置乘矩阵的形式是矩阵的内积,而矩阵的内积刚好就是矩阵的trace。证明如下:

对于大小相同的矩阵,大小为m*n。所以能得到矩阵,因此矩阵的trace为:

又考虑到,代入得:

于是在等式右边得到了矩阵内积的定义,因此矩阵的内积为的trace。

因此,在实际运算中,我们只需要先展开函数的微分,然后在式子右边凑出,最后将前面的余项转换为转置即为标量函数对矩阵的求导结果。

规则

首先给出矩阵微分的规则:

  • ,加减运算可以直接提出来
  • 矩阵乘法的微分,注意每个分量中的矩阵顺序不能改变,这是由矩阵乘法不可交换的性质决定的。
  • 转置可以提出来
  • trace同上

证明:

因此,

  • $$d X = tr(X^{#}dX)X^{#}X$$的伴随矩阵
  • 为矩阵的内积,即逐元素积
  • 这里是将作用于标量的函数拆出,通过对应矩阵生成函数矩阵,然后将其与矩阵的微分$dX$乘起来。

接下来给出trace的一些性质:

  • 标量转换
  • 转置trace一样
  • 线性拆分
  • 满足交换律
  • ,这里三个矩阵的大小相同。证明略。

举例

1

,其中:

求微分: 由于无关,所以一三项消去,得到: 由于为标量,所以引入trace: 通过交换律: 由: 得到:

2

,其中:

求微分: 消去,得到: 等式右边引入trace运算,同时通过trace的线性分解性质得到: 又由于trace中转置不变性,将第一项内的矩阵乘积转置后得到项,为: 由于trace的线性,最后将两个项合并得到: 所以:

3 线性回归的最小二乘法求导

由定义得: 上式中,为偏置量,可以看作向量,也可以看作标量,只需要将向量的每个分量赋同一个值。是向量,表示数据的值,是每个数据及其各个feature的矩阵,最后是衡量每个数据点点个feature对于最后结果的贡献程度的向量。损失函数自然是使用最小二乘法优化,最后的零点即为最优的。这个损失函数是L2范数也就是向量的内积,因此可以看作为两个向量的转置与自身的乘积:

第一项首先将转置提出来 接着去除微分项中不含的部分: 接着引入trace: 得到: 由于: 代入得: 所以 另上面的结果为0,得到: 化简得到: 如果不考虑偏置,为: