BP神经网络
Posted semen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BP神经网络相关的知识,希望对你有一定的参考价值。
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/∂Wjk=Ψk(Kl)vj(Jl)
同理得到∂E/∂Wij=Ψj(Jl)vi(Il)
Ψj(Jl)=∑k=1 to KWjkΨk(Kl)d(h)d(g)vi(Il)
同理得∂E/Wmi=Ψi(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神经网络的主要内容,如果未能解决你的问题,请参考以下文章