您的位置:首页 > 运维架构

后向传播(BackPropagation)算法理解

2016-12-21 18:40 176 查看
后向传播算法是深度学习中一种训练与学习方法,用来调整深度网络中各个节点之间的权重,使得网络输出的样本标签与实际标签相一致。本文将对后向传播算法的实现细节进行总结。

后向传播算法是将输出层的误差向后进行传播来实现权重的调整。如图1所示,一个含有1个隐藏层的网络,输入层有2个节点,隐藏层有3个节点,输出层有2个节点。



图1 示例网络

则后向传播的实现细节如下:

1.计算输出层各个节点的误差



其中δα表示α节点的输出误差;outα表示经过前向传播后的输出;Targetα表示输出节点的真值,即样本对应的标签。式中outα(1−outα)是由于激活函数采用sigmoid所造成的。

2.更新输出层的权重



其中W+为更新后的权重;W为更新前的权重;η为学习率,控制权重更新的强度。

3.将输出层的误差传递给隐藏层



4.更新隐藏层的权重



下面给出一个计算示例:

如图2为一个简单的网络



图2 样例网络

假设目标输出为0.5,即target=0.5,则按照以上的方法计算如下:

1.计算各节点的值与激活值

a.隐藏层最顶端节点:(0.35×0.1)+(0.9×0.8)=0.755;

节点输出:out=sigmoid(0.755)=0.68;

b.隐藏层最低端节点:(0.9×0.6)+(0.35×0.4)=0.68;

节点输出:out=sigmoid(0.68)=0.6637;

c.输出层节点:(0.3×0.68)+(0.9×0.6637)=0.80133

节点输出:sigmoid(0.80133)=0.69

2.后向传播更新权重

a.输出误差:δ=(t-o)(1-o)o=(0.5-0.69)(1-0.69)0.69=-0.0406;

b.更新输出层权重:

W1+=W1+(δ×input)=0.3+(-0.0406×0.68)=0.272392

W2+=W2+(δ×input)=0.9+(-0.0406×0.6637)=0.87305

c.隐藏层误差与权重更新

误差计算:

δ1=δ×W1=-0.0406×0.272392×(1-o)o=-2.406×10−3

δ2=δ×W2=-0.0406×0.87305×(1-o)o=-7.916×10−3

权重更新:

W3+=0.1+(−2.406×10−3×0.35)=0.09916

W4+=0.8+(−2.406×10−3×0.9)=0.7978

W5+=0.4+(−7.916×10−3×0.35)=0.3972

W6+=0.6+(−7.916×10−3×0.9)=0.5928
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  深度学习