CNN学习之旅[2]之第一次加副标题的BP算法理解

在训练神经网络的算法中,BP算法可以说是经典中的经典。

这里所有的激活函数都用Sigmoid,该函数有一个性质

f(x)=f(x)(1f(x))
这个性质等下会用到。
yˆ 表示训练样例的标签。
E表示损失,
E=12(yˆy)2


从最基础情况开始说明:
CNN学习之旅[2]之第一次加副标题的BP算法理解_第1张图片
最底下一层为输入层,上面一层是输出层,输出层的输入为a,输出为y, 偏移量为 θ ,则

y=f(a+θ)

设输入层神经元与输出层的权值分别为 w1,w2,w2 ,所以
a=w1x1+w2x2+w3x3

BP算法最重要的部分是求 Δw , 以 w1 为例, w1 先影响输出层的输入a,从而对输出层输出产生影响,最终影响 E,则可以得:
Ew1=Eyyaaw1

Ey=yˆy

ya=y(1y)f(x)=f(x)(1f(x))(a+θ)a=1

aw1=x1

所以:
Ew1=(yˆy)y(1y)x1


然后是较为复杂的情况:
CNN学习之旅[2]之第一次加副标题的BP算法理解_第2张图片
同样以 w11 为例, w11 先影响 a1 ,再影响 y1 ,得:

Ew11=Ey1y1a1a1w11
Ey1=y1ˆy1

y1a1=y1(1y1)

a1w11=x1

Ew11=(y1ˆy1)y1(1y1)x1


然后多一层:
CNN学习之旅[2]之第一次加副标题的BP算法理解_第3张图片
b为输出层的输入值,z为输出层的输出值, b=v1y1+v2y2 , z=f(b+γ) ,
Ev1 与第一种情况类似,

Ev1=(zˆz)z(1z)y1

Ew11 则是, w11 ,先影响 a1 ,再影响 y1 ,再影响b,再影响z
Ew11=Ezzbby1y1a1a1w11

=(zˆz)z(1z)v1y1(1y1)x1


如果说输出是 z1,z2 两个值,

Ev11 与第二种情况类似

w11 ,先影响 a1 ,再影响 y1 ,再影响 b1,b2 ,再影响 z1,z2

Ew11=Ez1z1b1b1y1y1a1a1w11+Ez2z2b2b2y1y1a1a1w11

=i=12Ezizibibiy1y1a1a1w11

=y1(1y1)x1i=12((ziˆzi)zi(1zi)v1i)


最后是真正的一般的BP算法:
设输出层z的个数,中间层y的个数,输入层x的个数,分别为 l,m,n ,则:

Evij=(zjˆzj)zj(1zj)yi

Ewhi=yi(1yi)xhj=1l((zjˆzj)zj(1zj)vij)

你可能感兴趣的:(cnn卷积神经网络,算法)