后向传播(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
后向传播算法是将输出层的误差向后进行传播来实现权重的调整。如图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
相关文章推荐
- 理解反向传播(BackPropagation)算法(之一)
- 通俗理解神经网络BP传播算法
- 【深入理解反向传播BP】Calculus on Computational Graphs: Backpropagation
- [NN] 对于BackPropagation(BP, 误差反向传播)的一些理解
- BackPropagation(BP, 误差反向传播)的一些理解
- 深度学习 16. 反向传递算法最简单的理解与提高,BP算法,Backpropagation, 自己的心得。
- 反向传播(BackPropagation)算法的推导
- 简单粗暴理解方向传播算法
- 反向传播(Backpropagation)算法的数学原理
- 理解动态规划算法与贪心算法区别----找钱问题
- 强连通分量算法; 重在理解原理分析 ; 算法导论讲的很明白;
- [TAOCP 1.1]对加入效率要求的算法的形式化定义的理解
- 经典算法研究系列:六、教你从头到尾彻底理解KMP算法
- 经典算法研究系列:二之续、彻底理解Dijkstra算法
- KMP字符串匹配算法 通俗理解
- 经典算法研究系列:六、教你从头到尾彻底理解KMP算法、updated
- [TAOCP 1.1-9]对算法2实现算法1的定义的理解
- 经典算法研究系列:四、教你通透彻底理解:BFS和DFS优先搜索算法
- 经典算法研究系列:四、教你通透彻底理解:BFS和DFS优先搜索算法
- 算法从不改变容器的大小---理解