1986年Rumelhart和McClelland提出此概念。BP神经网络现在作为深度学习算法的基础,是一种按照误差逆向传播的算法的多层前馈神经网络
最简单且常见的一个代价函数是均方差(Mean-Square Error, MSE)代价函数,也称为二次
代价函数可以用大写字母表示也可以用小写字母表示,当用大写字母表示时,T是真实标签向量,Y表示网络输出向量,N表示样本数据的个数。当用小写字母表示时候,i表示第i个数据,表示第i个标签的真实值,表示第i个标签的真实值。
我们通过举例说明会让读者的认识更加清晰。
假设真实的线性回归的值是T=(12,13,45),我们写的模型的预测值是Y=(10,15,46),那么T-Y=(2,-2,-1)我们将它进行向量的平方运算,=2*2+-2*-2+1*1=9。那么我们为什么要除以2N呢?其实也没啥意思,除以2是是为了在求导的时候计算方便。除以N表示求每个样本误差的平均值,顾名思义这叫做均方差。
前置知识:导数和偏导数(微分学)
在有这个知识的基础的情况下就可以理解梯度下降法是怎么回事儿,
梯度下降法-既然在变量空间的某一点处,函数沿梯度方向具有最大的变化率,那么在优化代价函数的时候,就可以沿着负梯度方向去减小代价函数的值。计算过程可以描述如下。
repeat表示不断的重复直到x达到我们设定的目标为止
表示学习率,学习率不宜过大
为了大家更加直观的理解梯度下降,我们通过把一个二维的例子和3维度的例子来进行详细的说明
我们已经知道了代价函数的定义,代价函数的值越小,说明模型的预测值越接近真实标签的值。代价函数中的预测值y是跟神经网络中的参数w和b相关的。我们可以先考虑一个简单的情况,假如神经网络只有一个参数w,参数w与代价函数loss的关系如下如图所示。
假设w的初始值为-3,我们需要使用梯度下降法来不断优化w的取值,使得loss不断减少。首先我们应该先计算w=-3时的梯度,
从图4.3中我们可以看出,当w为-3时,w所处位置的梯度应该是一个负数,梯度下降法在优化代价函数的时候,是沿着负梯度方向去减小代价函数的值的,所以负梯度是一个正数,w的值应该变大。根据梯度下降法的优化公式:
学习率η一般是一个大于0的数,为负数,我们可以判断出w的值会变大。变大的数值跟学习率η有关,也跟函数f在w处的梯度大小有关。
假设w变大移动到了w=2的位置,我们需要再次计算w=2时的梯度,如下图所示
我们可以看出,当w为2时,w所处位置的梯度应该是一个正数,梯度下降法在优化代价函数的时候,是沿着负梯度方向去减小代价函数的值的,所以负梯度是一个负数,w的值应该变小。
学习率η一般是一个大于0的数,为正数,我们可以判断出w的值会变小。变小的数值跟学习率η有关,也跟函数f在w处的梯度大小有关。
我们可以发现,不管w处于哪一个位置,当w向着负梯度的方向进行移动时,实际上就是向着可以使loss减小的方向进行移动。这就有点类似一个小球在山坡上面,它总是往坡底的方向进行移动,只不过它每一次是移动一步,这个步子的大小会受到学习率和所处位置梯度的大小所影响。
我们可以再考虑一个稍微复杂一点的情况,假如神经网络有两个参数w1和w2,参数w1和w2与代价函数loss的关系如图
我们在图中随机选取w1和w2的初始值p1和p2,然后从p1和p2这两个初始位置开始使用梯度下降法优化网络参数,得到如图结果
从图中可以看到网络参数的优化过程其实就是p1和p2两个“小球“从初始点开始,每次移动一步,不断向坡底进行移动。在这个过程中,整个网络的Loss是在不断变小的。
同时我们还可以观察到一个现象,p1“小球“最后走到了图中的全局最小值(Global Minimum),而p2“小球”最后走到的位置是一个局部极小值(Local Minimum)。说明我们在使用梯度下降法的时候,不同的初始值的选取可能会影响最后的结果,有些时候我们可以得到Loss的全局最小值,或者称为全局最优解。而有些时候,我们得到的结果可能是Loss的局部极小值,或者称为局部最优解。不同的权值初始值会得到不同的结果,这算是梯度下降法存在的一个缺点。
但大家不用太担心这个问题,一般实际模型训练的时候,局部极小值的情况不常出现。如果我们担心模型得到的结果是局部极小值,则可以让模型多训练几次,然后取最好的那一次的结果作为模型的最终结果就可以了。
Delta学习规则是一种利用梯度下降法的一般性的学习规则,其实就是利用梯度下降法来最小化代价函数。例如,代价函数为均方差代价函数为了简单,我们只计算一个样本的均方差公式。如果是计算多个样本,可以求所有样本代价函数的平均值。一个样本的均方差公式定义如下:
误差E是W的函数,我们可以使用梯度下降法来最小化E的值,权值矩阵的变化ΔW等于负的学习率(-η)乘以E对W进行求导:
注意,这里的X和W都是矩阵,所以这里求导的时候是对矩阵W进行求导,矩阵求导的方式跟单个元素求导的方式有一些不同。
这里的δ符号没有什么特别的含义,就是用来替代(t-y)f′(WX)。Δwi表示第i个权值的变化。