矩阵求导,本质是多元函数求导,仅仅是把函数的⾃变量以及求导的结果排列成了矩阵的形式,⽅便表达与计算。类似地,复合函数的求导法则本质上也是多元函数求导的链式法则,只是将结果整理成了矩阵的形式。从原理上讲,可以对矩阵的每个分量逐元素地求导,得到最终结果;但是这样做太繁琐,极其容易出错,因此推导并记住⼀些常⽤的结论在实践中是⾮常必要的。
不同的矩阵求导方法采取不同的导数排列方法,以便于所求导数可以方便后续计算。主要存在两种符号约定。
1. 概述
矩阵微积分的自变量可以是标量,向量,或者是一个矩阵,因变量也可以是上述的三者之一。每一种不同的自变量和因变量的组合都有不同的一套运算规则。
标量 | 向量 | 矩阵 | |
---|---|---|---|
标量 | \(\frac{\partial y}{\partial x}\) | \(\frac{\partial {\boldsymbol y}}{\partial x}\) | \(\frac{\partial {\bf Y}}{\partial x}\) |
向量 | \(\frac{\partial y}{\partial {\boldsymbol x}}\) | \(\frac{\partial {\boldsymbol y}}{\partial {\boldsymbol x}}\) | |
矩阵 | \(\frac{\partial y}{\partial {\bf X}}\) |
向量和标量可以看作矩阵的特殊形式。表中用粗体小写字母代表向量,粗体大写字母代表矩阵。
上表中空白的部分求导结果维度太高,而且没有统一的符号约定。
以下说明采用“分子布局”。
2. 分子布局下的求导
2.1 向量对标量求导
在向量微积分中,向量 \({\boldsymbol y}\) 相对于标量 \(x\) 的导数被称为向量 \({\boldsymbol y}\) 的切向量。
2.2 标量对向量求导
这是标量函数 \(f({\boldsymbol x})\) 梯度的转置。
2.3 向量对向量的求导
此即雅可比矩阵。
2.5 矩阵对标量求导
称为切矩阵。
2.6 标量对矩阵求导
矩阵标量 \(f({\bf X})\) 在矩阵 \({\bf Y}\) 方向上的方向导数为:
2.7 其他矩阵求导
对于向量对矩阵求导,矩阵对向量求导,矩阵对矩阵求导。它们没有统一的符号,也没有统一的应用。
与向量相关的两种矩阵导数,可以被看作是一个只有一列的矩阵和另一个矩阵导数的特例。下面只考虑如何写出一个矩阵对另一个矩阵求导的导数结果。
3. 标量对矩阵求导计算方法
3.1 全微分公式
对于实值函数对矩阵求导,我们可以写出:
3.2 微分法则
- 加减:\(d({\bf X}\pm{\bf Y})=d{\bf X}\pm d{\bf Y}\)
- 乘法:\(d({\bf XY})=(d{\bf X}){\bf Y}+{\bf X}(d{\bf Y})\)
- 转置:\(d({\bf X}^\text{T})=(d{\bf X})^\text{T}\)
- 迹:\(d\text{tr}({\bf X})=\text{tr}(d{\bf X})\)
- 逆:\(d{\bf X}^{-1}=-{\bf X}^{-1}d{\bf X}{\bf X}^{-1}\),利用 \({\bf X}{\bf X}^{-1}=\mathbb{I}\)
- 行列式:\(d|{\bf X}|=\text{tr}({\bf X}^*d{\bf X})\),其中 \({\bf X}^*\) 表示 \({\bf X}\) 的伴随矩阵,在 \({\bf X}\) 可逆时又可以写做:\(d|{\bf X}|=|{\bf X}|\text{tr}({\bf X}^{-1}d{\bf X})\)
- 逐元素乘:\(d({\bf X}\odot{\bf Y})=d{\bf X}\odot{\bf Y}+{\bf X}\odot d{\bf Y}\),\(\odot\) 表示尺寸相同的矩阵逐元素相乘
- 逐元素函数:\(dw({\bf X})=w'({\bf X})\odot d{\bf X}\),\(w({\bf X})\) 是逐元素标量运算,\(w'({\bf X})\)是逐元素求导
3.3 其他公式
- \(\text{tr}(a)=a\),\(a\) 为标量
- \(\text{tr}({\bf A}^\text{T})=\text{tr}({\bf A})\)
- \(\text{tr}({\bf A}+{\bf B})=\text{tr}({\bf A})+\text{tr}({\bf B})\)
- \(\text{tr}({\bf AB})=\text{tr}({\bf BA})\)
- \(\text{tr}\left({\bf A}^{\text{T}}({\bf B}\odot{\bf C})\right)=\text{tr}\left(({\bf A}\odot {\bf B})^{\text{T}}{\bf C}\right)\)
3.4 求导方法
若标量函数 \(f\) 是矩阵\({\bf X}\) 经加减乘法、行列式、逆、逐元素函数等运算构成,则使用相应的运算法则对 \(f\) 求微分,再使用迹变换给 \(df\) 套上迹并将其它项交换至 \(d{\bf X}\) 左侧,即能得到导数。
例题1:\(f={\boldsymbol a}^{\text{T}}{\bf X}{\boldsymbol b}\),求:\(\frac{\partial f}{\partial {\bf X}}\)。其中 \({\boldsymbol a}\) 是 \(m\times 1\) 列向量,\({\bf X}\) 是 \(m\times n\) 矩阵,\({\boldsymbol b}\) 是 \(n\times 1\) 列向量,\(f\) 是标量。
解答:
全微分:
两边取迹:
对照全微分公式:
得到:
例题2:\(f={\boldsymbol a}^{\text{T}}\text{exp}({\bf X}{\boldsymbol b})\),求:\(\frac{\partial f}{\partial {\bf X}}\)。其中 \(\boldsymbol{a}\) 是 \(m\times 1\) 列向量,\({\bf X}\) 是 \(m\times n\) 矩阵,\(\boldsymbol{b}\) 是 \(n\times 1\) 列向量,\(\text{exp}\) 表示逐元素求指数,\(f\) 是标量。
解答:
全微分:
两边取迹:
对照全微分公式得到:
例题3:线性回归问题。\(l = \|{\bf X}\boldsymbol{w}- \boldsymbol{y}\|^2\)。求 \(\boldsymbol{w}\) 的最小二乘估计,即求 \(\frac{\partial l}{\partial \boldsymbol{w}}\) 的零点。其中 \(\boldsymbol{y}\) 是 \(m\times 1\) 列向量,\({\bf X}\) 是 \(m\times n\) 矩阵,\(\boldsymbol{w}\) 是 \(n\times 1\) 列向量,\(l\) 是标量。
解答:
改写模平方表达式:
全微分:
对照全微分公式得到:
\(\frac{\partial l}{\partial \boldsymbol{w}}\) 的零点即 \(\frac{\partial l}{\partial \boldsymbol{w}}\) 的最小二乘估计 \(\boldsymbol{w} = ({\bf X^\text{T}X})^{-1}{\bf X}^\text{T}\boldsymbol{y}\)
例题4:方差的最大似然估计。样本 \(\boldsymbol{x}_1,\dots, \boldsymbol{x}_n\sim N(\boldsymbol{\mu}, \Sigma)\),求方差 \(\Sigma\) 的最大似然估计。写成数学式是:\(l =\log|\Sigma|+\frac{1}{n}\sum_{i=1}^n(\boldsymbol{x}_i-\boldsymbol{\bar{x}})^\text{T}\Sigma^{-1}(\boldsymbol{x}_i-\boldsymbol{\bar{x}})\),求 \(\frac{\partial l }{\partial \Sigma}\) 的零点。其中 \(\boldsymbol{x}_i\) 是 \(m\times 1\) 列向量,\(\overline{\boldsymbol{x}}=\frac{1}{n}\sum_{i=1}^n \boldsymbol{x}_i\) 是样本均值,\(\Sigma\) 是 \(m\times m\) 对称正定矩阵,\(l\) 是标量。
解答:
第一项:
第二项:
第二项求迹:
定义:
为样本方差矩阵
得到:
对照全微分公式得到:
其零点即 \(\Sigma\) 的最大似然估计为 \(\Sigma = S\)
例题5:多元 logistic 回归。\(l = -\boldsymbol{y}^\text{T}\ln\text{softmax}({\bf W}\boldsymbol{x})\),求 \(\frac{\partial l}{\partial W}\)。其中 \(\boldsymbol{y}\) 是除一个元素为1外其它元素为0的 \(m\times 1\) 列向量,\({\bf W}\) 是 \(m\times n\) 矩阵,\(\boldsymbol{x}\) 是 \(n\times 1\) 列向量,\(l\) 是标量;\(\text{softmax}(\boldsymbol{a}) = \frac{\exp(\boldsymbol{a})}{\boldsymbol{1}^\text{T}\exp(\boldsymbol{a})}\),其中 \(\exp(\boldsymbol{a})\) 表示逐元素求指数,\(\boldsymbol{1}\) 代表全1向量。
解答:
首先将 softmax 函数代入并写成:
这里注意:注意逐元素 log 满足等式:
以及:
求微分:
根据:
得:
求迹化简为:
得到:
例题5:二层神经网络。\(l = -\boldsymbol{y}^\text{T}\log\text{softmax}({\bf W_2}\sigma({\bf W_1}\boldsymbol{x}))\),求 \(\frac{\partial l}{\partial {\bf W_1}}\) 和 \(\frac{\partial l}{\partial \bf{W_2}}\)。其中 \(\boldsymbol{y}\) 是除一个元素为1外其它元素为0的的 \(m\times 1\) 列向量,\({\bf W_2}\) 是 \(m\times p\) 矩阵,\({\bf W_1}\) 是 \(p\times n\) 矩阵,\(\boldsymbol{x}\) 是 \(n\times 1\) 列向量,\(l\) 是标量;\(\text{softmax}(\boldsymbol{a}) = \frac{\exp(\boldsymbol{a})}{\boldsymbol{1}^\text{T}\exp(\boldsymbol{a})}\) 同例5,\(\sigma(\cdot)\) 是逐元素 sigmoid 函数 \(\sigma(a) = \frac{1}{1+\exp(-a)}\)。
解答:
定义:
则:
在例5中已求出:
使用复合法则,注意此处 \(\boldsymbol{h}_1, {\bf W_2}\) 都是变量:
使用矩阵乘法交换的迹技巧从第一项得到:
从第二项得到:
接下来求 \(\frac{\partial l}{\partial \boldsymbol{a}_1}\),继续使用复合法则,并利用矩阵乘法和逐元素乘法交换的迹技巧:
得到:
为求 \(\frac{\partial l}{\partial {\bf W_1}}\),再用一次复合法则 :
得到: