本节是自动求导框架技术的第一节,本系列其余文章包括
本节内容主要介绍矩阵求导的相关知识主要参考了知乎的矩阵求导术这系列文章。由于自动求导框架是建立在张量(tensor)运算上的,张量在这里理解为一种多维的矩阵,因此矩阵求导的概念是自动求导框架的基础。
1. 概念
矩阵求导是针对于参数是矩阵的函数,比如函数
其中X,Y,Z都是矩阵。矩阵求导可以看做是单一变量求导的推广,以上面的函数为例, Z 对 X 求导就是 Z 矩阵中的每个元素对 X 矩阵中的每个元素求导,然后做一下简单的合并。假设矩阵 Z 是一个尺寸为 a×b 的矩阵,矩阵 X 是一个 c×d 的矩阵,矩阵 Z 对矩阵 X 的导数矩阵 G_zx 的求解分成了两步:1.求导 2.合并。在求导的时候矩阵G_zx是一个尺寸为 (ab) × (cd) 的二维矩阵,其中第 i 行中的第 j 个元素表示 Z 矩阵中的 i 号元素对 X 矩阵的 j 号元素进行求导,这样就把矩阵求导转化为了单个变量的求导过程:
观察上图中的 G_zx 矩阵,可知对于每一列而言实际上是 Z 矩阵中每个元素对于 X 矩阵的某个元素的导数,则 Z 矩阵整体对于 X 矩阵中某个元素的导数即是把 G_zx 在求导步骤的结果按行相加,得到 尺寸为1 × (cd) 的矩阵,表示 Z 矩阵整体对于 X 矩阵中的 cd 个元素分别求导的结果,这就是合并步骤需要做的事情:
上面介绍了矩阵之间的求导方法,这个方法可以较为容易的推广到多维矩阵——张量上。
2. 例子
下面采用矩阵乘法作为例子,回顾一下上述过程。这时候 X 矩阵是一个 2×2 的矩阵,Y 是一个 2×2 的矩阵,Z是一个 2×2 的矩阵,f 函数表示 X 矩阵和 Y 矩阵乘法。通过上述过程我们可以得到以下结果: