神经网络之BP算法
- BP算法也叫做δ算法
- 以三层的感知器为例:
输出层误差:E=21(d−O)2=21∑k=1ζ(dk−Ok)2
隐层的误差:E=21∑k=1ζ(dk−f(netk))2=21∑k=1ζ(dk−f(∑j=1mwjkyj))
输入层误差:
E=21∑k=1ζdk−f[∑j=0mf(neti)]2=21∑k=1ζdk−f[∑j=0mwjkf(∑i=1nvijxi)]
神经网络之SGD
误差E有了,为了使误差越来越小,可以采用随机梯度下降的方式进行w和v的求解,即求得w和v使得误差E最小。

BP算法例子

neth1=w1∗l1+w2∗l2+b1∗1=0.1∗5+0.15∗10+0.35∗1=2.35
outh1=1+e−neth11=1+e−2.351=0.912934
同理可求:outh2=0.979164、outh3=0.995275
neto1=w7∗outh1+w9∗outh2+w11∗outh3+b2∗1
neto1=0.4∗0.912934+0.5∗0.979164+0.6∗0.995275=2.1019206
outo1=1+e−neto11=1+e−2.10192061=0.891090
同理可求:outo2=0.904330
即输出层误差
Eo1=21(o1−outo1)2
Eo1=21(o2−outo2)2
Etotal=Eo1+Eo2=21(0.01−0.891090)2+21(0.99−0.904330)2=0.391829
以计算w7+为例子
- ∂w7∂Etotal=∂outo1∂Etotal∗∂neto1∂outo1∗∂w7∂neto1
- ∂outo1∂Etotal=2∗21(targeto1−outo1)2−1∗−1+0=−(0.01−0.891091)=0.88109
- ∂neto1∂outo1=outo1(1−outo1)=0.891090(1−0.891090)=0.097049
- ∂w7∂neto1=1∗outh1∗w71−1+0+0+0=0.912934
- ∂w7∂Etotal=0.88109∗0.097049∗0.912934=0.078064
- w7+=w7+△w7=w7−η∂w7∂Etotal=0.4−0.5∗0.078064=0.360968(η自定义的值)
同理可求:
w1+=0.094534
w2+=0.139069
w3+=0.198211
w4+=0.246422
w5+=0.299497
w6+=0.348993
w7+=0.360968
w8+=0.453383
w9+=0.458137
w10+=0.553629
w11+=0.557448
w12+=0.653688
第十次迭代结果:O=(0.662866,0.908195)
第百次迭代结果:O=(0.073889,0.945864)
第千次迭代结果:O=(0.022971,0.977675)
