矩阵求导

randolf2022年8月9日
大约 25 分钟

矩阵求导

矩阵求导

理解矩阵求导

矩阵的求导在很多领域有所应用,比如控制论、优化等。这里对矩阵求导的主要内容进行分析和介绍,力图使得读者能够从更完善的角度理解矩阵求导。

这里,使用小写字母 代表标量/向量(根据语境可以看出),大写字母 代表矩阵。

宏观上理解矩阵求导

从定义上来看,标量对矩阵的导数可以定义为:

也就是 f 对 X 逐元素求导,同时保证结果和 X 相同纬度。这个定义对 X 的每个元素进行一样的操作,在实际应用上就会出现很大的问题。因为对于复杂函数以及后面介绍的矩阵对矩阵求导的情形,我们很难将每个元素拆分后进行求导。从更加本质的角度来看,我们实际上可以找一个不依赖于 个体 的方法,也就是针对矩阵整体进行分析。

我们考虑一元函数的导数:

也就是说,我们可以从微分的角度定义导数。

note

事实上,回忆一开始定义导数的时候,我们就是通过微分的角度来定义的,现在只是返回了更原始的定义罢了

根据上面一维的情形,我们整理导数为:

lemma

全微分是梯度向量和微分向量的内积

我们可以类似的将矩阵的导数和微分建立这样的联系:

definition

^a57269

注意上面的红色代表我们想要求的矩阵导数,tr 代表矩阵的迹 (trace),用来定义矩阵空间中的内积。(事实上,矩阵的一种内积定义方式就是 )

得到了这样全微分关系是,我们需要考虑如何求解其中的每一项。首先是

很普遍的一种思路是首先建立一些基本元素的微分关系,然后建立在一些法则下的微分运算法则,从何可以组合得到最终的微分结果,这里也采用这一思路。 ^bd1e3b

  • 基本运算 ^b44308
    • 加减法
    • 矩阵乘法
    • 转置
      • 可以从 得到
  • 行列式
    • ,其中 是X的伴随矩阵
    • 在 X 可逆时,有
    • 证明参考 行列式微分形式的推导 - 知乎open in new window
      • 伴随矩阵的元素满足 ,其中 为矩阵 X 删掉第 i 行和第 j 列后的剩余矩阵。需要注意,由于伴随矩阵按照列布局代数余子式,因此 的下标颠倒
      • 假定算符 代表对矩阵位置 (i, j) 中的元素增加某个量,根据偏导数定义有:

- 逐元素乘法
	- $\mathrm{d}\left( X\odot Y \right) =\mathrm{d}X\odot Y+X\odot \mathrm{d}Y$
	- 其中 $\odot$ 代表尺寸相同的矩阵逐元素相乘
- 逐元素函数
	- $\mathrm{d}\sigma \left( X \right) =\sigma '\left( X \right) \odot \mathrm{d}X$,其中 $\sigma \left( X \right) =\left[ \sigma \left( X_{ij} \right) \right]$ 是逐元素标量函数运算

标量对矩阵的求导

根据上面的思考,我们已经得到了 矩阵微分和求导的关系 ^a57269 的微分形式 ^b44308

从而下面需要做的就是得到右边的结果,这里只需要一些简单的迹技巧:

  • 标量套上迹:
  • 转置:
  • 线性:
  • 矩阵乘法交换: ,其中 尺寸相同。
  • 矩阵乘法/逐元素乘法交换: ,其中两侧的元素都等于

通过上面的迹技巧,可以将 转换为 的形式,那么 就是需要求的

需要注意这里还有最后一点需要注意,即 复合函数。在这里不能直接沿用微积分中的标量求导的链式法则,因为矩阵对矩阵的导数目前还没有定义。

这里从微分的角度入手建立复合法则。基本原则是:首先写出 ,然后将 写成 进行带入并使用迹技巧将其他项交换到 左侧,从而解决问题。

一个常见的情形是 ,此时:

从而 。注意这里

下面演示一些算例。

Case 1

problem

,其中a是mx1的列向量,X是mxn的矩阵,b是nx1的列向量。

因此求导结果为:

Case 2

problem

,其中a是mx1的列向量,X是mxn的矩阵,b是nx1的列向量。exp表示逐元素求指数。

这表明

Case 3

problem

,其中W是lxm矩阵,X是mxn矩阵,Y是lxn矩阵,M是lxl对称矩阵,σ是逐元素函数。

这表明

另外,有:

从而有:

Case 4- 线性回归

problem

,求w的最小二乘估计,也就是求的零点。其中y是mx1的列向量,X是mxn矩阵,w是nx1列向量。

从而

因此最小二乘估计满足:

case5- 方差的最大似然估计

problem

样本,求方差的最大似然估计,即:, 求的零点。其中xi是mx1列向量,是样本均值,是mxm对称正定矩阵,l是标量。

首先计算 ,这里使用了前面 det 的微分形式。 对第二项有,

其中 是样本方差矩阵。因此综上可以得到:

因此零点满足 ,也即其最大似然估计。

case6- 多元 Logistic 回归

problem

,其中y是除了一个元素为1外其他元素为0的mx1列向量,W是mxn矩阵,x是nx1列向量。

方法 1

进一步进行微分:

因此

方法 2

定义 ,那么

类似上面思路求出 ,那么利用复合法则,有:

从而可以得到:

case7- 二层神经网络

problem

,求。其中y是一个除一个元素为1以外其余元素全为0的mx1列向量,W2是mxp矩阵,W1是pxn矩阵,,σ是逐元素sigmoid函数

定义 ,那么有

对第二项进一步分析:

进一步:

problem

对问题可以更进一步,样本满足:

其中b1是px1列向量,b2是mx1列向量

类似上面思路,定义

从而问题转换为:

类似使用复合法则,有:

从第一项有:

从第二项有:

从第三项有:

对第二项进一步使用复合法则有:


另一个求解思路如下:

使用矩阵表示 N 个样本来简化形式,定义

注意上面的 1 是用来扩展维度的。

类似上面的思路求出:

使用复合法则有:

从而得到了:

对第二项使用复合法则继续有:

矩阵对矩阵的求导

上面分析了标量对矩阵的导数,下面来分析下矩阵对矩阵的求导。

首先分析下矩阵对矩阵的导数应该有怎么样的定义:

  • 矩阵 F(pxq) 对矩阵 X(mxn) 的导数应该有所有 mnpq 个偏导数
  • 导数和微分之间应该有类似上面标量微分的关系

根据上面的思考,我们首先定义向量 f(px1) 对向量 x(mx1) 的导数:

其中结果是一个 mxp 的矩阵,满足

接下来定义矩阵的 (按列优先) 向量化,即:

definition

定义矩阵F对矩阵X的导数满足:

微分和导数之间具有联系:

note

  • 按照这个定义,标量f对矩阵X(mxn)的矩阵是mnx1的向量,和上面标量的定义之间存在矛盾,不过这里比较容易相互转换。为了避免混淆,这里使用表示上面定义的mxn矩阵,从而有:
  • 标量对矩阵的二阶导数,称为Hessian矩阵,定义为:

是对称矩阵,对向量或者矩阵求导都可以得到结果,但从矩阵出发更加简单

  • ,从而导致求导时矩阵被向量化,破坏了矩阵的整体结构,结果形式变得复杂;但好处是多元微积分中关于梯度、Hessian矩阵的结论可以沿用过来,只需要矩阵向量化即可。比如优化问题中牛顿法的更新,满足

  • 在资料中,矩阵对矩阵的导数还有其他的定义,比如

这两种定义可以兼容上面标量对矩阵导数的定义,但是微分和导数的联系等于导数中逐个mxn子块分别与dX做内积)意义不够简明,不便于计算和应用。

  • 在资料中,有分子布局和分母布局两种定义,向量对向量的导数的排布有所不同,这里使用的是分母布局,机器学习和优化中的梯度矩阵采用此定义。而控制论等领域中的Jacobian矩阵采用分子布局
    • 分母布局:

- 分子布局:

- 分子布局下,相应的导数和微分的关系转变成了

- 这两者互为转置,并无大的区别

类似标量求导的思路,现在建立运算法则。

依然使用导数和微分的联系,。求微分的思路和上面相同,但是需要一些向量化的技巧。

  • 线性:
  • 矩阵乘法:
    • 其中 代表 kronecker 积,A(mxn) 和 B(pxq) 的 Kronecker 积为:

- 此式证明见张贤达《矩阵分析与应用》第 107-108 页。
  • 转置:,其中 A 是 mxn 矩阵
    • Kmn(mnxmn) 是交换矩阵 (commutation matrix),将按列优先的向量化变为按行优先的向量化

  • 逐元素乘法:
    • 是使用 A 的元素 (按列优先) 排成的对角阵

相比于标量的导数,矩阵的导数显得更加复杂,这也是应该的,因为我们将一个本来是 4 维的向量投射到 2 维来进行运算,能保持运算就不错了:(

此外,考虑复合的情况。假设已知 ,Y 是 X 的函数,从导数和微分的联系入手有:

注意上面式子是依赖于选取的分子/分母形式的,分子布局的应为下面形式:

此外,这里有一些关系 Kronecker 积的恒等式:

    • 这可以通过对 求导证明
      • 直接求导有:
      • 另一方面:

  • ,其中 A 是 mxn 矩阵,B 是 pxq 矩阵
    • 可以对 进行分析得到

case1

problem

,其中X是mxn矩阵,求

如果 X 退化为向量,那么有:

case2

problem

,X是nxn矩阵,求

使用上面标量计算的结果,。为了计算 ,首先考虑微分:

从而结果为:

这里注意上面是一个对称矩阵,所以消掉了转置。

当 X 是对称矩阵时,有:

case3

problem

,A是lxm矩阵,X是mxn矩阵,B是nxp矩阵,exp是逐元素函数。

从而有:

case4- 一元 Logistic 回归

problem

,求

使用上面标量乘法的结论,有

为了求 ,首先考虑微分

按照导数和微分的关系,得到:

推广问题:

problem

,求

解法 1:先对每个样本求导,然后相加

解法 2:定义矩阵

将 l 写成矩阵形式有 从而有:

case5- 多元 Logistic 回归

problem

,求 其中y是一个除一个元素为1外其它元素为0的mx1列向量,W是mxn矩阵,x是nx1列向量

前面标量求导已经有

进一步求

注意这里化简去掉了逐元素乘法。 第一项 第二项

进一步有:

最后,进行一个总结。从 整体 出发的矩阵求导的技术,重点在于联系微分和导数。通过建立基本的微分形式和运算规则,可以得到想要求的导数结果。

  • 对于标量对矩阵的微分,有
  • 对于矩阵对矩阵的微分,有

矩阵求导例子

标量求导

矢量求导

矩阵求导

参考

Loading...