BP神经网络(1)--发展背景,代价函数,梯度下降,Delta学习规则

1.发展背景

        1986年Rumelhart和McClelland提出此概念。BP神经网络现在作为深度学习算法的基础,是一种按照误差逆向传播的算法的多层前馈神经网络

2.代价函数(Cost Function 或者Loss Function)

        最简单且常见的一个代价函数是均方差(Mean-Square Error, MSE)代价函数,也称为二次gif.latex?t_i

gif.latex?E%3D%5Cfrac%7B1%7D%7B2N%7D%28T-Y%29%5E2%3D%5Cfrac%7B1%7D%7B2N%7D%5Csum_%7Bi%3D1%7D%5E%7BN%7D%28t_i-y_i%29%5E2

        代价函数可以用大写字母表示也可以用小写字母表示,当用大写字母表示时,T是真实标签向量,Y表示网络输出向量,N表示样本数据的个数。当用小写字母表示时候,i表示第i个数据,gif.latex?t_i表示第i个标签的真实值,gif.latex?y_i表示第i个标签的真实值。

        我们通过举例说明会让读者的认识更加清晰。

        假设真实的线性回归的值是T=(12,13,45),我们写的模型的预测值是Y=(10,15,46),那么T-Y=(2,-2,-1)我们将它进行向量的平方运算,gif.latex?%28T-Y%29%5E2=2*2+-2*-2+1*1=9。那么我们为什么要除以2N呢?其实也没啥意思,除以2是是为了在求导的时候计算方便。除以N表示求每个样本误差的平均值,顾名思义这叫做均方差。

3.梯度下降法

        前置知识:导数和偏导数(微分学)

        在有这个知识的基础的情况下就可以理解梯度下降法是怎么回事儿,

        梯度下降法-既然在变量空间的某一点处,函数沿梯度方向具有最大的变化率,那么在优化代价函数的时候,就可以沿着负梯度方向去减小代价函数的值。计算过程可以描述如下。

BP神经网络(1)--发展背景,代价函数,梯度下降,Delta学习规则_第1张图片

 repeat表示不断的重复直到x达到我们设定的目标为止

gif.latex?%5Ceta表示学习率,学习率不宜过大

为了大家更加直观的理解梯度下降,我们通过把一个二维的例子和3维度的例子来进行详细的说明

3.1 二维例子        

        我们已经知道了代价函数的定义,代价函数的值越小,说明模型的预测值越接近真实标签的值。代价函数中的预测值y是跟神经网络中的参数w和b相关的。我们可以先考虑一个简单的情况,假如神经网络只有一个参数w,参数w与代价函数loss的关系如下如图所示。

BP神经网络(1)--发展背景,代价函数,梯度下降,Delta学习规则_第2张图片

         假设w的初始值为-3,我们需要使用梯度下降法来不断优化w的取值,使得loss不断减少。首先我们应该先计算w=-3时的梯度,

BP神经网络(1)--发展背景,代价函数,梯度下降,Delta学习规则_第3张图片

         gif.latex?w%3Dw-%5Ceta%20%5Cfrac%7B%5Cpartial%20f%7D%7B%5Cpartial%20w%7D从图4.3中我们可以看出,当w为-3时,w所处位置的梯度应该是一个负数,梯度下降法在优化代价函数的时候,是沿着负梯度方向去减小代价函数的值的,所以负梯度是一个正数,w的值应该变大。根据梯度下降法的优化公式:gif.latex?w%3Dw-%5Ceta%5Cfrac%7B%5Cpartial%20f%7D%7B%5Cpartial%20w%7D

        学习率η一般是一个大于0的数,gif.latex?%5Cfrac%7B%5Cpartial%20f%7D%7B%5Cpartial%20w%7D为负数,我们可以判断出w的值会变大。变大的数值跟学习率η有关,也跟函数f在w处的梯度大小有关。

        假设w变大移动到了w=2的位置,我们需要再次计算w=2时的梯度,如下图所示

BP神经网络(1)--发展背景,代价函数,梯度下降,Delta学习规则_第4张图片

        我们可以看出,当w为2时,w所处位置的梯度应该是一个正数,梯度下降法在优化代价函数的时候,是沿着负梯度方向去减小代价函数的值的,所以负梯度是一个负数,w的值应该变小。

        学习率η一般是一个大于0的数,gif.latex?%5Cfrac%7B%5Cpartial%20f%7D%7B%5Cpartial%20w%7D为正数,我们可以判断出w的值会变小。变小的数值跟学习率η有关,也跟函数f在w处的梯度大小有关。

        我们可以发现,不管w处于哪一个位置,当w向着负梯度的方向进行移动时,实际上就是向着可以使loss减小的方向进行移动。这就有点类似一个小球在山坡上面,它总是往坡底的方向进行移动,只不过它每一次是移动一步,这个步子的大小会受到学习率和所处位置梯度的大小所影响。

        3.2 三维例子

        我们可以再考虑一个稍微复杂一点的情况,假如神经网络有两个参数w1和w2,参数w1和w2与代价函数loss的关系如图

 BP神经网络(1)--发展背景,代价函数,梯度下降,Delta学习规则_第5张图片

 我们在图中随机选取w1和w2的初始值p1和p2,然后从p1和p2这两个初始位置开始使用梯度下降法优化网络参数,得到如图结果

BP神经网络(1)--发展背景,代价函数,梯度下降,Delta学习规则_第6张图片

         从图中可以看到网络参数的优化过程其实就是p1和p2两个“小球“从初始点开始,每次移动一步,不断向坡底进行移动。在这个过程中,整个网络的Loss是在不断变小的。

        同时我们还可以观察到一个现象,p1“小球“最后走到了图中的全局最小值(Global Minimum),而p2“小球”最后走到的位置是一个局部极小值(Local Minimum)。说明我们在使用梯度下降法的时候,不同的初始值的选取可能会影响最后的结果,有些时候我们可以得到Loss的全局最小值,或者称为全局最优解。而有些时候,我们得到的结果可能是Loss的局部极小值,或者称为局部最优解。不同的权值初始值会得到不同的结果,这算是梯度下降法存在的一个缺点。

        但大家不用太担心这个问题,一般实际模型训练的时候,局部极小值的情况不常出现。如果我们担心模型得到的结果是局部极小值,则可以让模型多训练几次,然后取最好的那一次的结果作为模型的最终结果就可以了。

4 Delta学习规则

        Delta学习规则是一种利用梯度下降法的一般性的学习规则,其实就是利用梯度下降法来最小化代价函数。例如,代价函数为均方差代价函数为了简单,我们只计算一个样本的均方差公式。如果是计算多个样本,可以求所有样本代价函数的平均值。一个样本的均方差公式定义如下:

gif.latex?E%3D%5Cfrac%7B1%7D%7B2%7D%28T-Y%29%5E2%3D%5Cfrac%7B1%7D%7B2%7D%28t-y%29%5E2%3D%5Cfrac%7B1%7D%7B2%7D%28t-f%28WX%29%29%5E2

误差E是W的函数,我们可以使用梯度下降法来最小化E的值,权值矩阵的变化ΔW等于负的学习率(-η)乘以E对W进行求导:

a6eb6e8f111a4fb680717c68d044ea7a.png

         注意,这里的X和W都是矩阵,所以这里求导的时候是对矩阵W进行求导,矩阵求导的方式跟单个元素求导的方式有一些不同。

b93a771e922141c29190007743b0de16.png

 这里的δ符号没有什么特别的含义,就是用来替代(t-y)f′(WX)。Δwi表示第i个权值的变化。

 

你可能感兴趣的:(深度学习-TF,神经网络,深度学习,人工智能)