BP反向传播算法的具体计算

BP反向传播算法的具体思想和计算方式

  • BP算法采用有监督学习方式,基于梯度下降算法,极小化误差函数
  • 主要思想:将学习过程分为信号正向传播过程和误差反向传播过程两个阶段。
  • 什么是梯度下降算法?梯度下降算法:如果移动是在误差曲面上沿着梯度下降的方向进行,称作最速梯度下降法。BP算法基于梯度下降算法。在梯度下降算法中,权值的修正量正比于误差函数E(W)对W的负梯度,即
  • 它的算法描述如下

  • 在jiawei han的数据挖掘一书中,有这样一个例子:
    假设训练样本s的属性值为{1,0,1},实际类别为1,两层前馈神经网络如图1所示,初始权重和神经元阈值如表下表所示,学习率为η=0.9,结点转移函数为sigmoid函数。写出该神经网络一次学习完整过程

解题过程也已经给出,如下所示:
(1)计算单元4、5、6的输入、输出

(2)计算4、5、6的误差

(3)更新神经网络中每条有向加权边的权重、每个隐藏层与输出层单元的阈值

在这里起初我有一些不太明白的地方,即在误差是怎么计算的,为什么单元6的误差与单元4和单元5的计算方式不一样,后来看了斯坦福大学feifei-li等教授的cs231n课程,明白了:
求误差的过程其实是求梯度的过程,只不过误差=梯度x偏差值,偏差值即实际值与结果值的差。举一个简单的例子,如图所示一个简单神经网络,f(x,y,z) = (x + y) * z,其中x = -2, y = 5, z = -4

我们可以让q = x + y, 那么原式可以写为f = qz,分别求偏导


我们最终想要得到的是 这里写图片描述,这也就是梯度,容易求出 这里写图片描述为1, 这里写图片描述为3, 这里写图片描述为-4,那么x与y的偏导是多少,怎么求呢?学过高数的都知道

结果为-4,x也一样,偏导同样为-4,最终得到梯度如下所示:

这也就解释了在Jiawei Han的例子中误差的计算问题,因为使用的是Sigmoid函数

而Sigmoid函数求导的结果有一个简单的公式:

即Sigmoid求导=(1-输出)x输出,所以在第二步中,单元6的梯度为(我们用T表示梯度):T6 = (1-0.474)*0.474,结果偏差为(我们用S表示偏差):S=1-0.474(经过神经网络计算后得到的结果为0.474,而实际结果为1),因此误差为(我们用Q表示误差):Q6=T6xQ6=0.474x(1-0.474)x(1-0.474)=0.1311。而对单元5,梯度T5详细计算如下图:


图中O与I分别代表输出与输入,对应第一步中的表内数据,W代表权值
误差则为Q5=T5xS,代入公式中发现T6xS即为Q6,所以最终结果Q5=0.525x(1-0.525)x0.1311x(-0.2)=-0.0065。
单元4计算同理。

斯坦福大学cs231n课程的链接:http://study.163.com/course/courseMain.htm?courseId=1003223001
课件地址:http://cs231n.stanford.edu/slides/2017/

猜你喜欢

转载自blog.csdn.net/wqqgo/article/details/75701115