神经网络后馈算法剖析
2013-05-29 15:45
381 查看
在coursera中Ng的机器学习课程中,他介绍了神经网络中的前向传播算法以及后馈算法,但是对于后馈算法中,为什么要那么做,只用了一句需要使用复杂的数学来证明。我查阅了相关的资料,对这一部分的原理进行了学习,现将这部分知识记录下来,以供共同学习。
————(1)
而在一个线性模型中,第k个输出yk是输入xi的线性组合:
————(2)
其中,wki是第i个输入到第k个输出的边权。对于某个输入数据(另外一种讲法叫模式)n,它的误差函数被定义为:
————(3)
其中,ynk为:
————(4)
tnk是输入数据n是先所打上的标签,即真实结果。
由(3)和(4)可求得:
————(5)
我们可以看到,误差对某个边权wji的偏导,等于这个边所连输出端的误差信号(ynj-tnj)与这个边所连输入端的变量的乘积。
这个神经网络有1个输入层,2个隐层以及1个输出层;对于某个unit(神经元),它的输入等于各个前一层神经元的加权和:
————(6)
其中,带括号的上标表示层数,(6)也可以写成向量的形式:
————(7)
经过每个神经元activation函数h()的处理后,第l层第j个神经元的输出为:
————(8)
需要注意的是,我们可以在每一层中,加入一个修正神经元,它的activation输出始终是+1。神经网络不断地重复(6)、(8),直到输出层产生相应的输出,神经网络的输出层神经元直接将输入加权作为结果输出,而不经过h()的处理。这是神经网络的前馈过程。
————(9)
我们定义:
————(10)
它表示(l+1)层神经元j的误差。而:
————(11)
将(10)、(11)代入(9),可得:
————(12)
(12)说明在神经网络中,误差对l层某个边权wji的偏导,等于这个边所连输出端(l+1层第j个神经元)的误差与这个边所连输入端(l层第i个神经元的输出)的乘积。(12)写成向量的形式为:
————(13)
这个就是最终的结论!
。
在输出层中,有:
————(14)
而对于隐层或者输入层,有:
————(15)
(15)式实际上表示了一个误差后馈的过程,l层的误差是l+1层的误差通过w(l)传递过来的。由于:
————(16)
由(6)、(7)式可得:
————(17)
(16)、(17)代入(15)可以得到:
————(18)
(18)写成向量的形式为:
————(19)
其中.*表示点乘。
使用(14)式计算输出层的误差δ;
后馈输出层的δ,并计算每一个隐层的δ。
使用(13)计算所求的偏导。
1、简单的线性模型中误差分析
使用一个大小为N的训练集对一个预测(分类)模型进行训练时,总误差为:————(1)
而在一个线性模型中,第k个输出yk是输入xi的线性组合:
————(2)
其中,wki是第i个输入到第k个输出的边权。对于某个输入数据(另外一种讲法叫模式)n,它的误差函数被定义为:
————(3)
其中,ynk为:
————(4)
tnk是输入数据n是先所打上的标签,即真实结果。
由(3)和(4)可求得:
————(5)
我们可以看到,误差对某个边权wji的偏导,等于这个边所连输出端的误差信号(ynj-tnj)与这个边所连输入端的变量的乘积。
2、神经网络的后馈算法
2.1 前馈过程
一个简单的神经网络模型如下图所示:这个神经网络有1个输入层,2个隐层以及1个输出层;对于某个unit(神经元),它的输入等于各个前一层神经元的加权和:
————(6)
其中,带括号的上标表示层数,(6)也可以写成向量的形式:
————(7)
经过每个神经元activation函数h()的处理后,第l层第j个神经元的输出为:
————(8)
需要注意的是,我们可以在每一层中,加入一个修正神经元,它的activation输出始终是+1。神经网络不断地重复(6)、(8),直到输出层产生相应的输出,神经网络的输出层神经元直接将输入加权作为结果输出,而不经过h()的处理。这是神经网络的前馈过程。
2.2 后馈过程
现在我们考虑后馈的过程,En对wji的偏导只通过输入ai传导到神经元j,应用偏导的链式法则有:————(9)
我们定义:
————(10)
它表示(l+1)层神经元j的误差。而:
————(11)
将(10)、(11)代入(9),可得:
————(12)
(12)说明在神经网络中,误差对l层某个边权wji的偏导,等于这个边所连输出端(l+1层第j个神经元)的误差与这个边所连输入端(l层第i个神经元的输出)的乘积。(12)写成向量的形式为:
————(13)
这个就是最终的结论!
2.3 误差的后馈传播
下面介绍如何计算。
在输出层中,有:
————(14)
而对于隐层或者输入层,有:
————(15)
(15)式实际上表示了一个误差后馈的过程,l层的误差是l+1层的误差通过w(l)传递过来的。由于:
————(16)
由(6)、(7)式可得:
————(17)
(16)、(17)代入(15)可以得到:
————(18)
(18)写成向量的形式为:
————(19)
其中.*表示点乘。
2.3 误差后馈总结
将一个输入向量xn输入到网络中,使用公式(6)、(8)前向转播;使用(14)式计算输出层的误差δ;
后馈输出层的δ,并计算每一个隐层的δ。
使用(13)计算所求的偏导。
相关文章推荐
- 回馈式(RNN)神经网络中梯度更新的2个经典算法的证明和剖析
- 基于微软案例数据挖掘之Microsoft 神经网络分析算法原理篇
- 深度学习算法实践3---神经网络常用操作实现
- 线性神经网络模型与学习算法
- 手把手实战:利用LM神经网络算法自动识别窃电用户(附代码)
- Spark机器学习(12):神经网络算法
- 【猜测】使用神经网络算法的时候权值可视化观察
- 25径向基函数神经网络模型与学习算法.ppt
- 三种循环神经网络(RNN)算法的实现(From scratch、Theano、Keras)
- 线性神经网络模型与学习算法
- 神经网络学习(三)反向(BP)传播算法(1)
- 深度学习算法之卷积神经网络简介
- 数模算法-最优化理论的三大经典算法:模拟退火法、神经网络、遗传算法
- 深度神经网络(DNN)模型与前向传播算法
- 神经网络算法学习---图像数据预处理
- 感知器算法与神经网络
- 神经网络中的优化算法
- 【神经网络入门】用JAVA实现感知器算法
- 深度学习算法实践3---神经网络常用操作实现
- 感知神经网络模型与学习算法