在矩阵向量求导前4篇文章中,我们主要讨论了标量对向量矩阵的求导,以及向量对向量的求导。本文我们就讨论下之前没有涉及到的矩阵对矩阵的求导,还有矩阵对向量,向量对矩阵求导这几种形式的求导方法。
本文所有求导布局以分母布局为准,为了适配矩阵对矩阵的求导,本文向量对向量的求导也以分母布局为准,这和前面的文章不同,需要注意。
篇主要参考了张贤达的《矩阵分析与应用》和长躯鬼侠的矩阵求导术
1. 矩阵对矩阵求导的定义
假设我们有一个 p × q p \times q p×q的矩阵 F F F要对 m × n m \times n m×n的矩阵 X X X求导,那么根据我们第一篇求导的定义,矩阵 F F F中的pq个值要对矩阵 X X X中的mn个值分别求导,那么求导的结果一共会有mnpq个。那么求导的结果如何排列呢?方法有很多种。
最直观可以想到的求导定义有2种:
第一种是矩阵 F F F对矩阵 X X X中的每个值 X i j X_{ij} Xij求导,这样对于矩阵 X X X每一个位置(i,j)求导得到的结果是一个矩阵 ∂ F ∂ X i j \frac{\partial F}{\partial X_{ij}} ∂Xij∂F,可以理解为矩阵X的每个位置都被替换成一个 p × q p \times q p×q的矩阵,最后我们得到了一个 m p × n q mp \times nq mp×nq的矩阵。
第二种和第一种类似,可以看做矩阵 F F F中的每个值 F k l F_{kl} Fkl分别对矩阵 X X X求导,这样矩阵 F F F每一个位置(k,l)对矩阵 X X X求导得到的结果是一个矩阵 ∂ F k l ∂ X \frac{\partial F_{kl}}{\partial X} ∂X∂Fkl, 可以理解为矩阵F的每个位置都被替换成一个 m × n m \times n m×n的矩阵,最后我们得到了一个 m p × n q mp \times nq mp×nq的矩阵。
这两种定义虽然没有什么问题,但是很难用于实际的求导,比如类似我们在机器学习中的矩阵向量求导(三) 矩阵向量求导之微分法中很方便使用的微分法求导。
目前主流的矩阵对矩阵求导定义是对矩阵先做向量化,然后再使用向量对向量的求导。而这里的向量化一般是使用列向量化。也就是说,现在我们的矩阵对矩阵求导可以表示为:
∂ F ∂ X = ∂ v e c ( F ) ∂ v e c ( X ) \frac{\partial F}{\partial X} = \frac{\partial vec(F)}{\partial vec(X)} ∂X∂F=∂vec(X)∂vec(F)
对于矩阵 F F F,列向量化后,vec( F F F)的维度是 p q × 1 pq \times 1 pq×1的向量,同样的,vec(