人工神经网络(后向传播算法上)

这一节我们基于一个非常简单的神经网络推导了后向传播算法
在下一节中我们会针对多层神经网络的一般情况
再次推到后向传播算法

在上一讲中
我们主要讲解了利用梯度下降法求解
人工神经网络目标函数的局部极值的原理
在这一讲中
我们将针对一个具体的神经网络讲解梯度下降法求解的具体过程
我们仍然来看这个简单的神经网络
前面讲到了这个神经网络带估计的参数总共有九个
它们分别是欧米伽一一
欧米伽一二
欧米伽二一
欧米伽二二
欧米伽一
欧米伽2b1 b2 和b3
我们假设目标函数为最小化
aea b等于1/2小y减大y的平方
而小y的计算是按照如下这些公式获得的
这也是我们前面所讲过的
那么相应的梯度下降法也要求我们求如下九个偏导数
分别是e对欧米伽一一
欧米伽一二
欧米伽二一
欧米伽二二
欧米伽一
欧米伽2b1 b2 和b3 的偏导数
虽然我们可以逐一的计算这些偏导数
但是这样做计算量太大
我们这节课的重点是讲解
如何根据神经网络这种分层的结构来简化求解偏导数的计算
这节课讲到的算法有个好听的名字叫做后向传播算法
ack propagation algorithm
后向传播算法的核心是这九个偏导数是相互关联的
根据偏导数的链式求导法则
可以用已经算出的一些偏导数去计算还没有算出的另一些偏导数
这比直接计算九个偏导数要方便很多
在这个网络中
我们要先计算红圈的三个点的偏导数
这三个点是整个网络的枢纽
其他的偏导数都可以很容易地通过这三个点算出来
接下来我们来算这三个红圈标出来的点的偏导数
首先由于目标函数e等于1/2小y减大y的平方
所以e对y的偏导数就等于小y减大y
接下来我们根据偏导数的链式求导法则
就可以得出
对a一的偏导数将会等于e对y的偏导数乘以y对a一的偏导数
我们再次利用链式求导法则
我们能够得到y对a一的偏导数等于y对z的偏导数
乘以z一对a一的偏导数
综合上面两个式子
我们可以得到一对a一的偏导数
等于e对y的偏导数乘以y对z的偏导数乘以z一对a一的导数
前面我们已经计算出来了
对y的偏导数等于小y减大y另一方面
又因为小y等于欧米伽一乘以z一加上欧米伽二乘以z2 加上b3
所以小y对z的偏导数等于欧米伽一
同理因为z一等于fa 1
其中fi是连接两层的非线性函数
所以z一对a一的导数d z e d a1
它将等于φ一撇a1
也就是five对a一的导数
综合起来
我们可以得到e对a一的偏导数
等于欧米伽一乘以小y减大y再乘以f一撇a1
同理经过相似的推导
我们可以得到e对a2 的偏导数将会等于e对y的偏导数
乘以y对z2 的偏导数乘以z2 对a2 的导数
它将等于欧米伽二乘以小y减大y再乘以f一撇a2
接下来我们将会发现通过这三个枢纽位置的偏导数
我们很容易求出前面的九个偏导数
首先由于小y等于欧米伽一乘以z1
加上欧米伽二乘以z2
加上b3
因此偏一偏欧米伽一等于偏e偏y乘以偏y偏我米伽一
又由于偏移偏y等于小y减大y而偏y偏欧米伽一等于z1
综合两个式子
我们能够得到偏一偏欧米伽一等于小y减大y乘以z1
同样的道理
偏偏我米伽二等于偏e偏y乘以偏y偏我一打二
它将等于小y减大y乘以z2
偏异偏b3 等于偏e偏y乘以偏y偏b3
它将等于小y减大y其次由于a一等于欧米伽一一乘以x1
加上我们改一二乘以x2
加上b1
因此我们可以得到偏一偏欧米伽一一等于偏e偏a一乘以偏a1
偏欧米伽一一
又由于偏e偏a1
前面我们已经得到了
它等于的是欧米伽一乘以小y减大y乘以y一撇a一而偏a1
偏欧米伽一一
根据前面a一等于欧米伽一一乘以x1
加上我们改一二乘以x2 加上b1
这个公式我们很容易算出pa一偏欧米伽一一等于x1
综合两个式子
我们能够得到偏一偏欧米伽一一
它等于的是欧米伽一乘以小y减到y乘以y一撇a一乘以x1
同样的道理
我们可以算出偏移偏欧米伽一二等于偏意偏a一乘以偏a一偏
我没改一二等于欧米伽一乘以小y减大y乘以y一撇a一乘以x2
偏偏b一等于偏e偏a一乘以偏a1
偏b一等于欧米伽一乘以小y减大y乘以f一撇a1
另外由于a2 等于欧米伽21x一加上欧米伽22×2 加上b2
我们可以得到偏一偏欧米伽二一等于偏e偏a2 乘以偏a2
偏欧米伽二一
前面我们已经得到偏e偏a2
等于的是欧米伽二乘以小y减大y乘以f一撇a2 而偏a2
偏欧米伽二一
根据a2 等于欧米伽二一乘以x一加上欧米伽二二乘以x2 加上b2
这个公式我们容易得出偏a2
偏欧米伽二一等于x1
综合两个式子
我们可以得出偏一偏欧米伽二一
等于欧米伽二乘以小y减大y乘以发一撇a2 乘以x1
利用同样的道理
我们也可以得出偏一偏欧米伽二二等于偏e偏a2 乘以偏a2
偏欧米伽二二
它将等于欧米伽二乘以小y减大y乘以y一撇a2 乘以x2
偏偏b2 等于偏e偏a2 乘以偏a2
偏b2 等于欧米伽二乘以小y减大y乘以y一撇a2
以上的计算并不复杂
请大家自己详细推导
并仔细体会
在这九个偏导数的计算当中
三个枢纽偏e偏外偏一偏a一偏偏a2 是如何多次被利用
从而简便地完成了对九个偏导数的计算
这种根据神经网络结构求解偏导数的简便算法
之所以被称为后向传播算法
ack propagation algorithm
是因为它的整个过程是从输出往输入推的
即从后往前推
我们先计算出离输出较近的变量的偏导数
然后基于这些偏导数的值
再计算离输出较远的偏导数
因此偏导的计算是由后往前不断传递的
这也是后向传播算法得名的原因
最后我们总结一下人工神经网络后向传播算法的步骤
第一部
对神经网络每一层的各个神经元随机选取相应的omega和b的值
第二步设置目标函数e例如在这个例子当中
目标函数e等于1/2小y减大y的平方
接下来用后向传播算法对每一个omega和b计算偏移偏欧米伽和偏一偏僻
第三步利用如下的迭代公式更新omega和b的值
第n加一部的omega等于第n步的欧米伽
减掉阿尔法e对omega的偏导
在第n部的欧米伽和第n部的b上的值
n加一部的b等于第n部的b减掉阿尔法e对b的偏导
在第n部的欧米伽和第n部的b上的值
其中阿尔法是一个超参数
叫做学习率
第四步我们回到第二步
不断地循环
直到所有的偏移偏欧米伽和偏移偏僻很小为止
退出循环
这一节我们基于一个非常简单的神经网络推导了后向传播算法
在下一节中我们会针对多层神经网络的一般情况
再次推到后向传播算法
本节的内容就到这里
谢谢大家

发表评论

邮箱地址不会被公开。 必填项已用*标注