简介:
无论是最小二乘法,还是神经网络反向传播算法,到处可以见到矩阵求导的身影,所以矩阵求导在机器学习中还是比较重要的。
下面将从输入和输出的形式来分开介绍矩阵求导:
首先,我们要明确矩阵求导的本质,即,矩阵A对矩阵B求导的本质是矩阵A中的每一个元素对矩阵B中的每一个元素进行求导。求导结果中含有元素的大小,为矩阵A的元素个数乘以矩阵B中元素的个数。
求导秘术:拉伸:
- 标量不变,向量拉伸。
- 前面横向拉伸,后面纵向拉伸。
-
输入为标量,输出为标量
这种情况,没有啥好介绍的,使用常规求导公式。
-
输入为标量,输出为向量
例子:输入为,输出
这里输出是标量无法纵向拉伸,输出是向量,可以横向拉伸,结果为:
-
输入X为向量,输出为标量
例子:输入为,输出
这里输入是向量可以纵向拉伸,输出是标量无法横向拉伸,结果为:
-
输入为向量,输出为向量
例子:输入为,输出为
这里输入和输出都是向量,既要纵向拉伸也要横向拉伸,结果为:
-
输入为标量,输出为矩阵
例子:输入为,输出为
结果为:
-
输入为向量,输出为矩阵
例子:输入为,输出为
结果为:
两种布局:
- 分母布局------YX拉伸术(前面使用的正是这种布局)。
- 分子布局------XY拉伸术(不同之处为,X为横向拉伸,Y为纵向拉伸,其他都一样)。
-
常见矩阵求导公式推导:
公式一:,其中,,求
已知,因此,,同时,我们知道,因此.
公式二:,其中,,通过维度推导,我们知道为一个标量,即
,故
即:
Hessian矩阵
好了,有了前面的知识,我们来看看Hessian矩阵是个什么东东,简单来说,Hessian矩阵就是一个来储存函数的二阶导数信息。若已知n元函数的二阶导数存在,那么对应的Hessian矩阵为如下所示:
下面举个例子:的Hessian矩阵为.
如果直接套用Hessian矩阵的公式为:,那么为啥为啥直接是该多项式的Hessian矩阵呢?我们知道Hessian矩阵就是一个来储存函数的二阶导数信息,即Hessian矩阵为,,于是。
Hessian矩阵常用于牛顿法解决优化问题,利用Hessian矩阵可判定多元函数的极值问题。在工程实际问题的优化设计中,所列的目标函数往往很复杂,为了使问题简化,常常将目标函数在某点邻域展开成泰勒多项式来逼近原函数,此时函数在某点泰勒展开式的矩阵形式中会涉及到Hessian矩阵。
jacobin矩阵
得知了Hessian矩阵,我们接下来看看jacobin矩阵又是个什么东东,我们知道了Hessian矩阵就是一个来储存函数的二阶导数信息,而jacobin矩阵存储的是一阶导数信息,即: