内容包括梯度下降基本原理,矩阵求导基础。
前置知识
在推导之前先复习一下一些基础知识。
一阶导数定义
多元函数偏导数定义
方向导数的定义
偏导数定义只是沿着某个坐标轴方向的导数,多元函数的自变量在某点可以沿无数个方向运动,多元函数沿着某个方向上的变换率称为 ==方向导数== ,它的推导过程如图所示(2个变元的情况)
梯度的定义
多元函数在某一点的梯度是一个非常特殊的向量,其由多元函数对每个变量的偏导数组成,(这即是为什么求梯度的时候需要对各个变量求偏导的原因),其方向为函数在该点增加最快的方向,大小(向量的模长)为函数在该点的最大变化率。
将上面的方向导数写成两个向量相乘的格式,就得到了:
设有两个变量 和
为两个向量之间的夹角,所以该向量点乘结果(也就是方向导数)
梯度下降原理
因为梯度指示了函数变化率最大的地方,因此只要每次沿着梯度指示方向的反方向更新当前网络的参数并一直迭代,就可以将函数优化到最低点。
矩阵求导
由于在机器学习中,我们使用最多的数据一般都是向量或者矩阵形式的,很少有标量的情况,因此我们还需要学习矩阵求导的相关知识。
矩阵求导和函数求导还是不太一样的,具体学习可以参考下面这两个链接。矩阵求导的本质就是 一个函数 的每一个对变元中的每个元素逐个求偏导。但是在神经网络中一般涉及到的形式一般是输入一组矩阵或者向量,最后输出的值一般为一个标量用于衡量网络的性能。所这里就只考虑是一个矩阵变元的实值标量函数,我们需要使用梯度下降优化这个函数的参数,使该函数的输出值最小。
这里推荐两篇文章,这里只是对这两篇文章的一些总结,更详细的内容可以直接看原文。
矩阵求导术
矩阵求导
矩阵求导布局
- 分子布局:求导的 是列向量的形式,分子是行向量的形式
- 分母布局:求导的 是行向量的形式,分子是列向量的形式
分子布局和分母布局互为转置。
矩阵求导常用的四个法则以及公式
矩阵求导的四个法则跟一元函数求导的法则是一致的,可以直接借鉴过来
一些补充公式
矩阵求导的进阶技巧
上面写都是矩阵求导的基本法则,类似于使用定义法求一元函数的导数,使用的场合不多,更为常用的方法是使用迹技巧去求解。
首先来看迹的定义:
一些常见的迹的公式
注意上面画横线的那个公式的意思是两个矩阵相乘的迹,可以将后 一个的矩阵提到前面去,结果不改变。
矩阵乘积的迹,(注意这里迹的表示,这对理解为什么可以利用迹来求导至关重要)
设有两个矩阵,和
如果有,则两个矩阵相乘的迹等于对应位置的元素相乘并相加,可以理解为向量的点积在矩阵上的推广。
设有标量函数 ,求
可以发现,的结果其实就是两个矩阵和对应位置相乘并相加,所以该式就可以写为迹的形式:
所以就可以得出结论:
如何使用矩阵微分求导
对于实值标量函数,, ,所以有
上面的公式表明,迹和求微分是可以交换的
下面计算一个简单的例题:证明正面下面结论。