码迷,mamicode.com
首页 > 其他好文 > 详细

BP神经网络

时间:2017-05-08 23:25:27      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:算法   bsp   梯度下降   image   更新   ima   学习   结构   部分   

 

BP神经网络是一种按误差反向传播的多层前馈神经网络,含有一个或多个隐含层,其拓扑结构与一般神经网络相似,BP神经网络的隐含层激活函数一般是sigmoid函数,输出层如果是函数逼近,其激活函数一般是线性函数,分类问题其激活函数一般是sigmoid函数

BP神经网络的学习一般分为两部分:

一:正向计算各个神经元的输出

二:误差反向传播修正权值和阈值

下面开始BP神经网络的学习算法

以有两个隐含层的BP神经网络为例,下面是其拓扑结构:

技术分享

规定一些符号:

输入层神经元的个数是M,隐含层1是I,隐含层2是J,输出层是K

输入层的第m个神经元用m表示,同理隐含层1是i,隐含层2是j,输出层是k

输入层到隐含层1的权值连接用Wmi表示,隐含层1到隐含层2用Wij表示,隐含层2到输出层用Wjk表示

(u,v)分别表示各层的输入和输出

用Ml,Il,Jl,Kl分别标识输入层,隐含层1,隐含层2,输出层

隐含层1第i个神经元的输入:

ui(Il)=∑m=1 to MWmivm(ML)

隐含层1第i个神经元的输出:

Vi(Il)=f(ui(Il))

隐含层2第j个神经元的输入:

uj(Jl)=∑i=1 to IWijvi(Il)

隐含层2第j个神经元的输出:

vj(Jl)=g(uj(Jl))

输出层的第k个神经元的输入是:

uk(Kl)=∑j=1 to JWjkvj(Jl)

输出层的第k个神经元的输出是:

vk(Kl)=h(uk(Kl))

第k个神经元的输出误差是:

ek=dk-vk(Kl)

网络的总误差是:

E=1/2∑k=1 to K(ek)2

BP学习算法和W-H算法一样是基于梯度下降的学习算法,所以

W(n+1)=W(n)-η?E/?W

下面开始求误差反向传播的权值更新:

由链式求导得到:

              ?E/?Wjk=(?E/?ek)(?ek/?vk(Kl))(?vk(Kl)/?uk(Kl))(?uk(Kl)/?Wjk)

                          =-ekd(h)vj(Jl) 其中d(h)表示对h函数求导

故?E/?Wjk=-ekd(h)vj(Jl)

现在定义局部梯度:

Ψk(Kl)=?E/?uk(Kl)

         =(?E/?ek)(?ek/?vk(Kl))(?vk(Kl)/?uk(Kl))

         =-ekd(h)

故?E/?Wjkk(Kl)vj(Jl)

同理得到?E/?Wijj(Jl)vi(Il)

Ψj(Jl)=∑k=1 to KWjkΨk(Kl)d(h)d(g)vi(Il)

同理得?E/Wmii(Il)vm(Ml)

Ψi(Il)=∑j=1 to JWijΨj(Jl)d(f)vm(Ml)

由上面叙述,进行权值更新:

wmi(n+1)=Wmi(n)+η∑j=1 to JWijΨj(Jl)d(f)vm(Ml)

Wij(n+1)=Wij(n)+η∑k=1 to KWjkΨk(Kl)d(h)d(g)vi(Il)

Wjk(n+1)=Wjk(n)+ηekd(h)vj(Jl)

 

BP神经网络

标签:算法   bsp   梯度下降   image   更新   ima   学习   结构   部分   

原文地址:http://www.cnblogs.com/semen/p/6828030.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!