[Quant 1.4] 矩阵微积分Matrix Calculus基础 (1)
资源是MIT 2020年的一节网课,教授是Alan Edelman
https://www.youtube.com/watch?v=oGZK3yGF-6k
我在B站没找到搬运的资源,所以要看这个视频需要🪜
还有一个问答的链接,我下面也提到了
https://math.stackexchange.com/questions/3724359/does-there-exist-a-gradient-chain-rule-for-this-case
本来我想写一期RNN的笔记的。结果发现有一个很重要的部分的数学我已经忘的差不多了,而且知识点还很多,所以决定单独拿出来写一篇。

1. Vector到Scalar的函数梯度
假设我们现在有一个向量,还有作用于
的函数
。那么
和
作用在
上的梯度就可以写成
我个人习惯让做列向量,因为后面的
也是个列向量,因此
是一个行向量 (为什么梯度是行向量呢?详见https://math.stackexchange.com/questions/3724359/does-there-exist-a-gradient-chain-rule-for-this-case)。
上面是我们在微积分课程中学过的求偏导/梯度,我们举一个简单的例子
那么它的梯度就可以写成
这里面是一个
的行向量。梯度也可以用全微分的形式表现出来

但是在矩阵微积分中,有些函数的变量可以写成整体的矩阵或者向量的形式,而不是把他们中每一个单个的项拿出来做变量。换句话说,上面的函数表达式在矩阵微积分中就可以写成
它的梯度也可以写成
全微分的形式就可以写成
这里面的和上面的
一样,需要理解成列向量
我们可以证明,对于,它的梯度可以写成以下两种形式中的任何一种

再看另一个例子:
想要求这个函数的梯度,我们需要先介绍一个公式(下面称它为AB公式)。这个公式不仅好记而且管用,后面在求matrix到scalar的函数梯度的时候也经常用:
其中是矩阵,因此也可以是向量。我们把
代入到这个公式里面去,得到梯度的全微分形式:
因为第一行相加的两项都是scalar,取转置之后数值不变。把第一项取转置之后就和第二项相等了。所以梯度也可以写成

当然,不是所有的的函数都可以写成向量的形式。这种情况下还是要用微积分里面学到的最原本的公式(开头的公式)来求梯度。在机器学习里面会出现的Vector到Scalar的函数梯度,我们掌握上面两种情况还有AB公式就够用了。

2. Vector到Vector的函数梯度
假设我们的自变量向量长度为:
函数可以展开为
Element-wise,这个函数的梯度要写成
这个矩阵就是微积分里面也讲过的Jacobian matrix,它十分重要,在多元积分换元的时候也要用到。Vector到Vector函数的梯度就是Jacobian matrix。
此外,值得注意的一点是,Vector到Vector函数的梯度(即Jacobian矩阵)的维度是
。特别的,当
的时候,梯度就是一个
的矩阵,即行向量,这一点我在Vector到Scaler函数的梯度中提到过。
对于一般形式的Vector到Vector函数,我们只需要一个接着一个求偏导,把这个的矩阵填满就行了。但是,有些Vector到Vector函数是可以整体表达成矩阵乘法形式的,例如多元线性函数。

例如函数
这里面的对应的就是一般形式中的
,
则对应
。我们应用一下Jacobian的公式,可以得到
以此类推,对于,其梯度可以写成
或者

上面的例子就是Vector到Vector的多元线性函数可以写成矩阵乘法形式的例子,接下来再介绍一个例子,这个实际上是Vector到Scalar,但是需要怎们学了上面的例子之后才能做
这里我们可以使用AB公式。AB公式就像分步求导法则一样的:当我们不知道函数整体如何求道,但是知道函数是两个容易求道的函数的乘积,那么我们就可以使用AB公式
因为是scalar,所以它的转置就是它本身,所以
多说一句,这里因为是一个凸函数,所以求导之后让导函数=0可以求出来全局最大值或者最小值(这里是最小值)。最后反推出来的
就有两种解释:第一个是方程
当b不在
中的情况下的最优近似解;另一个是关于样本数据矩阵
的最小二乘法线性回归系数。

第三个例子其实还是一个Vector到Scalar的例子,但是也要用这里第一个例子的结果:
再次运用AB公式
也就是说
注意,这里我可能跟大多数教材的习惯不一样。因为我默认是一个列向量,所以梯度应该是一个行向量。很多地方喜欢把这个结果写成它的转置的形式。大家可以依照自己的习惯来记忆。
