ML的数学基础——矩阵篇
ML的数学基础——矩阵篇
太基础的就不写了,会不定时对内容继续修修补补。
表示
标量 向量 矩阵
向量求导
向量对标量求导
例如
则。这个没什么好说的,写这里主要是为了引出分子布局和分母布局,对于一个向量,有行/列向量之分,对于求导来说,结果是行还是列并没有影响,但是在ML中随便写会影响后续运算,所以我们有了布局的概念
分子布局:导数的维度以分子为主 分母布局:导数的维度以分母为主。
所以对于上述求导,为列向量,如果按照分子布局,结果就是列向量反之则为行向量。
标量对向量求导
例如二次型,是一个标量求,同样的也就是标量对向量的每个元素求导,例如对于分母布局,将得到一个列向量
我们会发现,上述就是求沿方向的方向导数,也就是的梯度,即
运算法则和标量求导一样。
向量对向量求导
有点类似叉乘,将得到一个矩阵。矩阵的维度和布局有关,例如维的向量对维的向量求导,若按照分子布局,则矩阵的第一个维度以分子为准,得到一个的矩阵。
矩阵求导
矩阵对标量求导
- 同向量。按分子布局维度不变,按分母布局则转置。
标量对矩阵求导
例如标量,其中是维矩阵。
则求也是维矩阵。原理同标量对向量求导,让标量对矩阵中的每一个元素求导即可。有
不过这种方式只适用于能够展开成多项式的形式,类似标量对向量求导中的二次型,因为我们需要每个元素单独拆开进行求导,下面我们将从微分算子进行推导导数公式。
在一元微分中有,同理多元微分中有全微分公式即
我们会发现全微分是梯度向量与微分向量的内积。我们可以将此性质扩展到矩阵当中。
对于两个矩阵,其内积也就是点乘的迹有
则对于矩阵求导时有
对此我们会发现只需要找到和便可以求出。这里需要用到矩阵微分的内容,请先参考矩阵微分部分。这里举一些例子
,求
求,有
套上迹函数,有,交换位置得到
此时根据导数与微分的联系,我们得到
,求。
这也是后续学线性回归中MSE中会遇到的实际矩阵求导问题。首先我们给这个二次多项式变形。
同样求微分,有
套上迹函数,有
此时根据导数与微分的联系,我们得到
链式法则
- 通过链式求导法则可以快速求出导数结果,同时我们约定,标量对矩阵/向量的求导使用分母布局,向量对向量的求导使用分母布局。
向量对向量求导链式法则:
其中存在依赖关系。
注意
该式中都必须是向量,不能直接适用推广至矩阵。
标量对向量的链式求导
对于向量和标量存在依赖关系
此时我们会发现直接链式维度不相容,因为按照分母布局是个的向量,而是个的矩阵,是个的向量。所以此时我们要对矩阵进行转置才能进行下一步计算,有
同理我们可以推广至更多向量的情况,若有,则链式法则为
所以标量对矩阵求导中的例2我们可以用链式求导再做一次,,求。
令,
则有
标量对矩阵的链式求导
todo
矩阵对矩阵求导
因为向量本质上是一个特殊的矩阵,所以向量对矩阵,矩阵对向量都属于矩阵对矩阵。
在向量对向量求导中,我们将得到一个矩阵,那么矩阵对矩阵求导如何定义呢?
在所有的求导中,我们都会让所有的元素两两求导,所以矩阵对矩阵求导后应该包含个偏导数,显然我们可以创造出一个三维的东西来描述它,但是这里我们不升维,而是先让矩阵降维再做运算。
我们先对向量化:
这样我们便可以变成向量对向量求导得到结果了,即
结果将是一个的矩阵,遵循分母布局。同时有其微分和导数的关系式
在求解矩阵对矩阵的导数时,做法类似标量对矩阵求导。
- 首先找到。
- 再向量化为。
- 等式右边化简后找到,根据导数与微分的关系得到
常用公式
矩阵微分
转置:
迹:
逆:
这里简要证明一下,两边微分有
移项即可得出逆矩阵微分公式。
逐元素乘法:
逐元素函数:
迹公式
- 转置:
- 线性:
- 交换律:,当然前提是能够交换(维度相同)。
向量化
线性:
矩阵乘法:。
其中为克罗内克(Kronecker)积,
转置:
其中是交换矩阵,将列优先向量化变成行优先向量化。
例如若,则有
逐元素乘法:。
其中是用的元素按列优先排成的对角阵。