BP学习算法.docx
《BP学习算法.docx》由会员分享,可在线阅读,更多相关《BP学习算法.docx(4页珍藏版)》请在冰豆网上搜索。
BP学习算法
BP学习算法
3.2BP学习算法学习算法
含有两个隐含层的BP网络WmiWijWjpY1x1x2Y2xmi=(1,2,….J)j=(1,2,…J)yp
BP网络的标准学习算法学习的过程:
神经网络在外界输入样本的刺激下不断改变网络的连接权值,以使网络的输出不断地接近期望的输出。
学习的本质:
对各连接权值的动态调整学习规则:
权值调整规则,即在学习过程中网络中各神经元的连接权变化所依据的一定的调整规则。
BP网络的标准学习算法-算法思想学习的类型:
有导师学习核心思想:
将输出误差以某种形式通过隐层向输入层逐层反传将误差分摊给各层的所有单元------各层单元的误单元---各层单元的误差信号修正各单元权值学习的过程:
信号的正向传播误差的反向传播
BP网络的标准学习算法-学习过程正向传播:
输入样本---输入层---各隐层---输出层判断是否转入反向传播阶段:
若输出层的实际输出与期望的输出(导师信号)不符误差反传误差以某种形式在各层表示----修正各层单元的权值网络输出的误差减少到可接受的程度进行到预先设定的学习次数为止
BP学习的具体算法步骤第一步:
设置变量和参量Xk=[xk1,xk2,...,xkm],(k=1,2,...,N),为输入向量,或训练样本,N为训练样本的个数。
?
w11(n)w12(n)...w1I(n)?
?
w(n)w(n)...w(n)?
222I?
为第n次迭代输入层与隐含层I之间的的权值向量。
WMI(n)=?
21?
.?
?
?
wM1(n)wM2(n)...wMI(n)?
?
?
w11(n)w12(n)...w1J(n)?
?
w(n)w(n)...w(n)?
222J?
为第n次迭代隐含层I与隐含层J之间的的权值向量。
WIJ(n)=?
21?
.?
?
?
wI1(n)wI2(n)...wIJ(n)?
?
?
w11(n)w12(n)...w1P(n)?
?
w(n)w(n)...w(n)?
222P?
为第n次迭代隐含层J与输出层之间的的权值向量。
WJP(n)=?
21?
.?
?
?
wJ1(n)wJ2(n)...wJP(n)?
?
Yk(n)=yk1(n),yk2(n),...,ykp(n),(k=1,2,...,N),为第n次迭代是网络的实际输出。
[]dk=dk1,dk2,...,dkp,(k=1,2,...,N)[],为期望输出。
η为学习效率。
n为迭代次数。
第二步,初始化,赋给WM1(0),WIJ(0),WJP(0)各一个较小的随机非零值,n=0。
第三步,随机输入样本Xk第四步,对输入样本Xk,前向计算BP网络每层神经元的输入信号u和输出信号v。
p其中vp(n)=ykp(n),p=1,2....p第五步,由期望值输出dk和上一步求得的实际输出Yk(n)计算误差E(n),判断是否满足要求,若满足转至第八步;不满足转至第六步。
第六步,判断是否大于最大迭代次数,若大于转至第八步,若不大于,对输入样本,反向计算每层神经元的局部梯度。
其中δpp(n)=yp(n)(1?
yp(n))(dp(n)?
yp(n)),p=1,2,...,PδjJ(n)=f′(uJ(n))∑δpp(n)wjp(n),j=1,2,...Jjp=1Jpδ(n)=f′(u(n))∑δjJ(n)wij(n),i=1,2,...,IIiIij=1
第七步,按下式计算权值修正量,并修正权值;n=n+1,转至第四步。
P?
wjp(n)=ηδp(n)vJ(n)wjp(n+1)=wjp(n)+?
wjp(n)j=1,2,...,J;p=1,2,...,Pj?
wij(n)=ηδjJ(n)viI(n)wij(n+1)=wij(n)+?
wij(n)j=1,2,...,I;p=1,2,...,J?
wmi(n)=ηδiI(n)xkm(n)wmi(n+1)=wmi(n)+?
wmi(n)j=1,2,...,M;p=1,2,...,I第八步,判断是否学完所有的训练样本,是则结束,否则转至第三步。
BP学习注意的问题一、BP学习时权值初始值的选择初始值应选为均匀分布的小数经验值,大概为(-2.4/F,2.4/F)之间。
并将初始权值设为随机数。
用matlab可用以下语句W1(0)=rand(,)
二、当神经元的激励函数是sigmoid函数时,应设期望值输出为相应的小数。
三、BP算法训练网络的方式:
顺序方式和批处理方式。
顺序方式:
临时存储空间小,训练速度快批处理方式:
精确的计算梯度向量,误差收敛条件简单,易与并行处理。
1N1NP2Eav=∑Ek=∑1∑1ekpNk=12NK=p=
四、学习步长η的选择过大或过小都不好,关系着权值的变化和BP的收敛速度,过大会引起振荡。
通常调整η值使网络中和各神经元的学习速度相差不多。
还可以通过加入“动量项”的方法。
五、局部梯度的计算,需要激励函数的导数。
通常选奇函数作为激励函数,非线性的sigmoid函数,有两种形式:
逻辑函数和双曲正切函数
六、误差E(n)的判断顺序方式:
E(n)<ε批处理方式:
每个训练周期的平均误差Eav其变化量在0.1%1%之间。
七、训练样本的输入在第一步设置时,一般是同一类的训练样本其期望输出相同。
八、输入信号归一化使所有样本的输入信号其均值接近零或与其标准方差相比比较小。
归一化输入信号应注意:
(1)用主向量分析法使训练样本的输入信号互不相关。
(2)归一化互不相关的输入信号,使得他们的方差基本相同,从而是不同权值的学习速度基本相同。
九、在学习过程或中可以利用out(.)的先验知识,加快学习效率。
BP神经网络的特点非线性映射能力能学习和存贮大量输入-输出模式映射关系,能学习和存贮大量输入输出模式映射关系,而无需事先了解描述输出模式映射关系这种映射关系的数学方程。
这种映射关系的数学方程。
只要能提供足够多的样本模式对供网络进行学习训练,它便能完成由n维输入空间到维输入空间到m维输出空间的非络进行学习训练,它便能完成由维输入空间到维输出空间的非线性映射。
线性映射。
泛化能力当向网络输入训练时未曾见过的非样本数据时,当向网络输入训练时未曾见过的非样本数据时,网络也能完成由输入空间向输出空间的正确映射。
这种能力称为泛化能力。
输入空间向输出空间的正确映射。
这种能力称为泛化能力。
容错能力输入样本中带有较大的误差甚至个别错误对网络的输入输出规律影响很小。
响很小。
BP神经网络学习算法的MATLAB实现MATLAB中BP神经网络的重要函数和基本功能函数名newff()tansig()logsig()traingd()功能生成一个前馈BP网络双曲正切S型(Tan-Sigmoid)传输函数对数S型(Log-Sigmoid)传输函数梯度下降BP训练函数
MATLAB中BP神经网络的重要函数和基本功能newff()功能建立一个前向BP网络格式net=newff(PR,[S1S2...SN1],{TF1TF2...TFN1},BTF,BLF,PF)说明net为创建的新BP神经网络;PR为网络输入netBPPR取向量取值范围的矩阵;[S1S2…SNl]表示网络隐含层和输出层神经元的个数;{TFlTF2…TFN1}表示网络隐含层和输出层的传输函数,默认为‘tansig’;BTF表示网络的训练函数,默认为‘trainlm’;BLF表示网络的权值学习函数,默认为‘learngdm’;PF表示性能数,默认为‘mse’。
MATLAB中BP神经网络的重要函数和基本功能tansig()功能正切sigmoid激活函数格式a=tansig(n)说明双曲正切Sigmoid函数把神经元的输入范围从(-∞,+∞)映射到(-1,1)。
它是可导函数,适用于BP训练的神经元。
logsig()功能对数Sigmoid激活函数格式a=logsig(N)说明对数Sigmoid函数把神经元的输入范围从(-∞,+∞)映射到(0,1)。
它是可导函数,适用于BP训练的神经元。
Matlab中nntool的基本应用在MATLAB命令窗口中键入nntool再按enter,会自动弹出下面的Network/DataManager窗口画面。
Inputs:
输入值Targets:
目标输出值InputDelayStates:
输入值欲延迟时间Networks:
已建构的网络Outputs:
输出值Errors:
误差值LayerDelayStates:
输出值欲延迟时间
[Help]:
有关于此工具箱各个按钮的说明[NewData...]:
建立新网络所须输出入值、目标值、误差、延迟[NewNetwork...]:
建立新网络的类型、训练函数、学习函数、隐藏层层数等[Import...]:
汇入数据与网络[Export...]:
汇出数据与网络[Delete]:
移除所选取的数据或网络
建立一个新的网络
NetworkName:
输入网络名称,如test。
NetworkType:
网络类型,如Feed-forwardbackprop。
Inputranges:
输入的范围,如Getfrominputp,由下拉式选单选取。
Trainingfunction:
训练函数,如TRAINLM(LM算法)。
Adaptionlearningfunction:
适应性学习函数,如LEARNGDM(具动量的梯度下降法)Performancefunction:
性能函数,如MSE(均方误差)。
Numberoflayers:
隐藏层的层数,如2。
Propertiesfor:
由下拉式选单选取欲进行设定的隐藏层,如Layer1。
Numberofneurons:
隐藏层1中神经元的数目,如15。
Transferfunction:
隐藏层1所使用的转移函数类型,如TANSIG。
建立网络后
epochs:
训练的最大循环次数goal:
性能目标max_fail:
最大验证数据失败的次数mem_reduc:
降低内存需求的系数min_grad:
最小性能梯度mu:
动量的初始值mu_dec:
动量减少系数mu_inc:
动量增加系数mu_max:
动量最大值show:
每格多少训练循环次数会显示训练过程time:
最大的训练所须时间,单位为秒
谢谢大家!