数学基础:矩阵求导

本文主要参考B站UP主GRNovmbrain的推导视频,链接如下:
https://www.bilibili.com/video/BV1xk4y1B7RQ/?vd_source=eef9eaf7d8271401f6cbf1b7afa000c0

矩阵求导的本质

矩阵\boldsymbol{A}对矩阵\boldsymbol{B}求导,表示为\frac{d\boldsymbol{A}}{d\boldsymbol{B}},本质是矩阵\boldsymbol{A}中的每个元素对矩阵\boldsymbol{B}中的每个元素求导。

求导后\frac{d\boldsymbol{A}}{d\boldsymbol{B}}中元素的个数:

  • \boldsymbol{A}1*1矩阵,\boldsymbol{B}1*1矩阵,则 \frac{d\boldsymbol{A}}{d\boldsymbol{B}} 中元素个数为1
  • \boldsymbol{A}1*p矩阵,\boldsymbol{B}1*n矩阵,则 \frac{d\boldsymbol{A}}{d\boldsymbol{B}} 中元素个数为p*n
  • \boldsymbol{A}q*p矩阵,\boldsymbol{B}m*n矩阵,则 \frac{d\boldsymbol{A}}{d\boldsymbol{B}} 中元素个数为q*p*m*n

矩阵求导元素布局方法

矩阵\boldsymbol{A}对矩阵\boldsymbol{B}求导,得到的结果为\frac{d\boldsymbol{A}}{d\boldsymbol{B}},本质上就是矩阵\boldsymbol{A}中的每个元素对矩阵\boldsymbol{B}中的每个元素求导;那么,不同的元素布局方式,就能得到不同的求导结果(指不同的结果矩阵)。元素的布局可以分为:1)分母布局2)分子布局,两种布局的关系为:将分母布局得到的结果矩阵进行转置,即可得到分子布局的结果。

本文的例子中采用的是分母布局的形式,也是目前比较主流的机器学习矩阵求导布局形式。有些金融类的教材可能会采用分子布局的形式,两种布局没有优劣之分,为了计算会推导的方便可以采用任意一种布局。需要注意的是:在同一个项目中需保持布局的一致性。

分母布局口诀

  • 标量保持不变,向量需要拉伸;
  • 分子横向拉伸,分母纵向拉伸;

【例1】 f(\boldsymbol{x})为标量,\boldsymbol{x}=[x_1, x_2, ... , x_n]^{T}为列向量,求\frac{\partial f(\boldsymbol{x})}{\partial \boldsymbol{x}}

此例中,分子f(\boldsymbol{x})为标量,分母\boldsymbol{x}为向量,求导获得的矩阵共有n个元素。依照布局口诀,分子为标量,保持不变,分母为向量,需将其各元素纵向拉伸。由此,我们可以得到:

\frac{\partial f(\boldsymbol{x})}{\partial \boldsymbol{x}} = \left[ \begin{matrix} \frac{\partial f(\boldsymbol{x})}{\partial x_{1}}\\ \frac{\partial f(\boldsymbol{x})}{\partial x_{2}} \\ \vdots \\ \frac{\partial f(\boldsymbol{x})}{\partial x_{n}} \end{matrix} \right]

【例2】 f(x)=[f_1(x), f_2(x), ... , f_n(x)]为向量函数,x为标量,求\frac{df(x)}{dx}

此例中,分子为向量,分母为标量,求导获得的矩阵共有n个元素。依照布局口诀,分子为向量,需将其各元素横向拉伸,分母为标量,保持不变。由此,我们可以得到:

\frac{df(x)}{dx} = \left[ \begin{matrix} \frac{df_{1}(x)}{dx} & \frac{df_{2}(x)}{dx} \cdots & \frac{df_{n}(x)}{dx} \end{matrix} \right]

【例3】 f(\boldsymbol{x})=[f_1(\boldsymbol{x}), f_2(\boldsymbol{x}), ... , f_n(\boldsymbol{x})]为向量函数,\boldsymbol{x}=[x_1, x_2, ... , x_n]^{T}为列向量,求\frac{\partial f(\boldsymbol{x})}{\partial \boldsymbol{x}}

此例中,分子为向量,分母为也为向量,求导获得的矩阵共有n^2个元素。依照布局口诀,分子为向量,需将其各元素横向拉伸,分母为向量,需将其各元素纵向拉伸。我们先将分母纵向拉伸,再将分子横向拉伸,可以得到:

\frac{\partial f(\boldsymbol{x})}{\partial \boldsymbol{x}} = \left[ \begin{matrix} \frac{\partial f(\boldsymbol{x})}{\partial x_{1}}\\ \frac{\partial f(\boldsymbol{x})}{\partial x_{2}} \\ \vdots \\ \frac{\partial f(\boldsymbol{x})}{\partial x_{n}} \end{matrix} \right]= \left[ \begin{matrix} \frac{\partial f_{1}(\boldsymbol{x})}{\partial x_1} & \frac{\partial f_{2}(\boldsymbol{x})}{\partial x_1} & \cdots & \frac{\partial f_{n}(\boldsymbol{x})}{\partial x_1} \\ \frac{\partial f_{1}(\boldsymbol{x})}{\partial x_2} & \frac{\partial f_{2}(\boldsymbol{x})}{\partial x_2} & \cdots & \frac{\partial f_{n}(\boldsymbol{x})}{\partial x_2} \\ \vdots & \vdots & \cdots & \vdots \\ \frac{\partial f_{1}(\boldsymbol{x})}{\partial x_n} & \frac{\partial f_{2}(\boldsymbol{x})}{\partial x_n} & \cdots & \frac{\partial f_{n}(\boldsymbol{x})}{\partial x_n} \end{matrix} \right]

常用矩阵求导公式

  • \frac{\partial \boldsymbol{a}^{T}\boldsymbol{x}}{\partial \boldsymbol{x}} = \frac{\partial \boldsymbol{x}^{T}\boldsymbol{a}}{\partial \boldsymbol{x}}= \boldsymbol{a}

  • \frac{\partial \boldsymbol{x}^{T}\boldsymbol{A}\boldsymbol{x}}{\partial \boldsymbol{x}} = (\boldsymbol{A} + \boldsymbol{A}^{T})\boldsymbol{x}

符号说明:

  • \boldsymbol{a}, \boldsymbol{x}为列向量;
  • \boldsymbol{A}为矩阵。

推荐书籍

The Matrix Cookbook : http://www2.imm.dtu.dk/pubdb/edoc/imm3274.pdf

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 向量、矩阵求导其实就两个内容 分子每个元素对分母每个元素求导 将结果以一定方式布局 对于 1,没什么特别的,就是标...
    找不到工作阅读 2,738评论 0 0
  • 对一个数求导大家都比较熟悉,那么对向量求导呢?看如下的例子:假设有矩阵和向量: 很容易求出, 现在令,则向量对向量...
    Jarkata阅读 9,710评论 0 2
  • title: 闲话矩阵求导原始文件没有办法把latex公式正常显示,所以一个一个弄出来了,保留了原来的公式。原始文...
    kylinxue阅读 20,319评论 3 21
  • old Table of Contents 1. 布局(Layout) 2. 基本的求导规则(定义) 3. 维度分...
    场景为王阅读 11,177评论 2 1
  • 求导布局: 分子布局(numerator layout): m维列向量对标量求导结果为m维列向量,标量对m*n维矩...
    米斯特芳阅读 5,338评论 0 1