人工神经网络 backpropagation algorithm

来源:互联网 发布:c语言捕鱼 编辑:程序博客网 时间:2024/04/30 13:43

ann人工神经网络bp算法python实现

1、单个神经元

1.1、单个神经元的表示方法:

这里写图片描述

这代表一行数据的处理,即 x1,x2,x3属于一个样本的三个维度,输出为这个样本的激活函数的值。

hW,b(x)=f(z)=f(WTx)=f(3i=1Wixi+b)

1.2、激励函数几种不同形式:

  • sigmoid函数
    f(z)=11+exp(z)

    • sigmoid函数的导数:
      f(z)=f(z)(1f(z))
  • tanh函数
    f(z)=tanh(z)=ezezez+ez

    • tanh函数的导数:
      f(z)=1(f(z))2
  • rectified linear activation function

    f(z)=max(0,x)

    • 导数为:

    f(z)={01z<=0z>0

    以下是这几种损失函数的函数图。

    这里写图片描述

2、神经网络模型

这里写图片打发描述

nl表示这个神经网络的层数,这个神经网络共有3层,及nl=3
Ll是输入层,Lnl是输出层,中间为隐含层。

上图中神经网络的参数为:

(W,b)=(W(1),b(1),W(2),b(2))

W(l)ij表示l层到l+1层的权值矩阵或向量,i代表l+1层,j代表l层的索引。
W(1)R3×3
 W(2)R1×3
a(l)i 表示第 i 的激活函数的结果 l
对于输入层即l=1a(1)i=xiii

递推公式为:

al+1i=f(zl+1i)=f(Wlix+bl)

从输入层到输出层的计算详细过程如下:
a21a22a23hW,b(x)=a31====f(W111x1+W112x2+W113x3+b11)f(W121x1+W122x2+W123x3+b12)f(W131x1+W132x2+W133x3+b13)f(W211x1+W212x2+W213x3+b21)

输出层为多层时,神经网络的示意图如下:

这里写图片描述


3、backpropagation algorithm

每个样本对应的损失为:

J(W,b;x,y)=12hW,b(x)y2.

整体的损失函数加上对权重系数的正则化
J(W,b)==[1mi=1mJ(W,b,xi,yi)]+λ2l=1nl1i=1slj=1sl+1(W(l)ji)2[1mi=1m(12hW,b(x)y2)]+λ2l=1nl1i=1slj=1sl+1(W(l)ji)2

反向传播的算法过程

1、正向传播,计算每层的激励函数值

al+1i=f(zl+1i)=f(Wlix+bl)

2、利用y值和激励函数值计算输出层的’error term’
δ(nl)i=z(nl)i12yhW,b(x)2=(yia(nl)i)f(z(nl)i)

3、利用初值W,计算隐含层的‘error term’
δ(l)i=j=1sl+1W(l)jiδ(l+1)jf(z(l)i)

4、计算每个样本的偏导。
W(l)J(W,b;x,y)b(l)J(W,b;x,y)=δ(l+1)(a(l))T,=δ(l+1).

5、计算整体的偏导
W(l)ijJ(W,b)b(l)iJ(W,b)=1mi=1mW(l)ijJ(W,b;x(i),y(i))+λW(l)ij=1mi=1mb(l)iJ(W,b;x(i),y(i))

6、梯度下降更新W,b
W(l)ijb(l)i=W(l)ijαW(l)ijJ(W,b)=b(l)iαb(l)iJ(W,b)

梯度下降更新W,b

W(l)ijJ(W,b)b(l)iJ(W,b)=1mi=1mW(l)ijJ(W,b;x(i),y(i))+λW(l)ij=1mi=1mb(l)iJ(W,b;x(i),y(i))

J(W,b;x,y)Wlji===J(W,b;x,y)z(l+1)jz(l+1)jWljiJ(W,b;x,y)z(l+1)jni=1W(l)jiali+bliWljiJ(W,b;x,y)z(l+1)jali

δ(nl)j=====J(W,b;x,y)z(nl)j12||yhW,b||2z(nl)j12||ya(nl)j||2z(nl)j(ya(nl)j)a(nl)jz(nl)j(ya(nl)j)f(znli)

J(W,b;x,y)Wlji==(ya(nl)j)f(znli)aliδ(nl)jali

对于隐含层,其误差项通过其后面一层传播而来,对于第L层,相当于L+1 层有sl+1
δli======J(W,b;x,y)zlij=1Sl+1J(W,b;x,y)zl+1jzl+1jzljj=1Sl+1J(W,b;x,y)zl+1j(ni=1Wljiali+bli)zljj=1Sl+1J(W,b;x,y)zl+1j(ni=1Wljif(zli)+bli)zljj=1Sl+1J(W,b;x,y)zl+1jWljif(zli)j=1Sl+1δ(l+1)jWljif(zli)


4、softmax函数及其求导

输出层激励函数为softmax:

aLj=ezLjkezLk

交叉熵代价函数为:
C=kyk log ak

Wb
Cwjk=aL1k(aLjyj)

Cbj=aLjyj

  • 公式推导过程
    softmax函数公式:
    aLj=ezLjkezLk

    其中
    if jajzj=====izi(ezjkezk)(ezj)kezkezj ezj(kezk)2ezjkezkezjkezkezjkezkaj(1aj)

    if jajzji====zi(ezjkezk)0kezkezj ezi(kezk)2ezjkezkezikezkajai

    交叉熵代价函数为:
    C=kyk log ak

    Cbj=======CzjzjbjCzj(wjkak+bj)bjzj(kyk log ak)kyk1akakzjyj1ajaj(1aj)kjyk1ak(ajak)yj+ajkykajyj

    Cwjk=aL1k(aLjyj)

参考文献
http://ufldl.stanford.edu/tutorial/supervised/MultiLayerNeuralNetworks/

http://blog.csdn.net/xuanyuansen/article/details/41214115

http://blog.csdn.net/u014313009/article/details/51045303

1 0
原创粉丝点击