本文的目标读者是想快速掌握矩阵、向量求导法则的学习者,主要面向矩阵、向量求导在机器学习中的应用。因此,本教程而非一
份严格的数学教材,而是希望帮助读者尽快熟悉相关的求导方法并在实践中应用。另外,本教程假定读者熟悉一元函数的求导。
所谓
矩
阵
求
导
,
本
质
上
只
不
过
是
多
元
函
数
求
导
,仅仅是把把函数的自变量以及求导的结果排列成了矩阵的形式,方便表达与计算
而已。复合函数的求导法则本质上也是多元函数求导的链式法则,只是将结果整理成了矩阵的形式。只是对矩阵的每个分量逐元素
地求导太繁琐而且容易出错,因此推导并记住一些常用的结论在实践中是非常有用的。
矩阵求导本身有很多争议,例如:
对于求导结果是否需要转置?
不同教材对此处理的结果不一样,这属于不同的Layout Convention。本文
以
不
转
置
为
准
,即求导结果与原矩阵/向量同
型,术语叫Mixed Layout。
矩阵对向量、向量对矩阵、矩阵对矩阵求导的结果是什么?
最自然的结果当然是把结果定义成三维乃至四维张量,但是这并不好算。也有一些绕弯的解决办法(例如把矩阵抻成一个
向量等),但是这些方案都不完美(例如复合函数求导的链式法则无法用矩阵乘法简洁地表达等)。在本教程中,我们认
为,
这
三
种
情
形
下
导
数
没
有
定
义
。凡是遇到这种情况,都通过其他手段来绕过,后面会有具体的示例。
因此,本教程的符号体系有可能与其他书籍或讲义不一致,求导结果也可能不一致(例如相差一次矩阵转置,或者是结果矩阵是否
平铺成向量等),使用者需自行注意。另外,本教程中有很多笔者自己的评论,例如关于变形的技巧、如何记忆公式、如何理解其
他的教程中给出的和本教程中形式不同的结果等。
文中如有错漏,欢迎联系 ruanchong_ruby@163.com,我会尽快订正。
标量用普通小写字母或希腊字母表示,如 等。
向量用粗体小写字母或粗体希腊字母表示,如 等,其元素记作 (注意这里 没有加粗。加粗的小写字母加下标,例如
等,表示这是两个不同的常数向量)。向量默认为列向量,行向量需要用列向量的转置表示,例如 等。
矩阵用大写字母表示,如 等,其元素记作 (注意这里 用的是小写字母。大写字母加下标,例如 等,表示不同
的常数矩阵)。
用字母表中靠前的字母(如 等)表示常量,用 或字母表中靠后的字母(如 等)等表示变量或函数。
有特殊说明的除外。
综上所述,本文进行如下约定:
矩阵/向量值函数对实数的导数:
要点:求导结果与函数值同型,且每个元素就是函数值的相应分量对自变量 求导
若函数 ,则 也是一个 维矩阵,且 ,也可用劈形算子将导数记作
,或记作 。
由于向量是矩阵的特殊情形,根据上面的定义也可以得到自变量为向量时的定义:若函数 ,则 也是
一个m维向量,且 。若函数值 是行向量则结果为行向量,可记作 或 ;若函数值
是列向量则求导结果为列向量,可记作 或 。
注:本文开头即说明过,变量为向量时仅仅是将其看作多个实数,无所谓行向量与列向量之分。这里用行向量或列向量的
说法仅仅为了把公式用矩阵相乘的方式表示出来方便,因为在数学公式总要指定向量是行向量或者列向量中的某一个,才
能与公式里的其他部分做矩阵运算时维度相容。下同。
实值函数对矩阵/向量的导数:
要点:求导结果与自变量同型,且每个元素就是 对自变量的相应分量求导
若函数 ,则 也是一个 维矩阵,且 。也可使用劈形算子将导数记
作 。
由于向量是矩阵的特殊情形,根据上面的定义也可以得到自变量为向量时的定义:若函数 ,则 也
是一个 维向量,且 。若自变量是行向量则结果为行向量,可记作 或 ;若自变量
是列向量则求导结果为列向量,可记作 或 。
机
器
学
习中
的
矩
阵
、
向
量
求
导
写
在
前
面
符
号
表
示