好文档 - 专业文书写作范文服务资料分享网站

BP神经网络原理及应用

天下 分享 时间: 加入收藏 我要投稿 点赞

?ak????(Tkp?okp)??'?netk?p?1k?1PLPL (3-18)

?wij????(Tkp?okp)??'?netk??wki???(neti)?xjp?1k?1 (3-19)

??i????(Tkp?okp)??'?netk??wki???(neti)p?1k?1PL (3-20)

开 始 批量输入学习样本并且对输 入和输出量进行归一化处理 参数初始化:最大训练次数,学习精度,隐节点数,初始权值、阈值,初始学习速率等 计算各层的输入和输出值 Yes 计算输出层误差E(q) Yes E(q)<ε N 修正权值和阈值 结 束 图2-2 BP算法程序流程图

Fig.2-2 The flowchart of the BP algorithm program

2.2 基本BP算法的缺陷

BP算法因其简单、易行、计算量小、并行性强等优点,目前是神经网络训练采用最多也是最成熟的训练算法之一。其算法的实质是求解误差函数的最小值问题,由于它采用非线性规划中的最速下降方法,按误差函数的负梯度方向修改权值,因而通常存在以下问题: (1) 学习效率低,收敛速度慢 (2) 易陷入局部极小状态

2.3 BP算法的改进

2.3.1附加动量法

附加动量法使网络在修正其权值时,不仅考虑误差在梯度上的作用,而且考虑在误差曲面上变化趋势的影响。在没有附加动量的作用下,网络可能陷入浅的局部极小值,利用附加动量的作用有可能滑过这些极小值。

该方法是在反向传播法的基础上在每一个权值(或阈值)的变化上加上一项正比于前次权值(或阈值)变化量的值,并根据反向传播法来产生新的权值(或阈值)变化。

带有附加动量因子的权值和阈值调节公式为:

?wij(k?1)?(1?mc)??ipj?mc?wij(k)

?bi(k?1)?(1?mc)??i?mc?bi(k)

其中k为训练次数,mc为动量因子,一般取0.95左右。

附加动量法的实质是将最后一次权值(或阈值)变化的影响,通过一个动量因子来传递。当动量因子取值为零时,权值(或阈值)的变化仅是根据梯度下降法产生;当动量因子取值为1时,新的权值(或阈值)变化则是设置为最后一次权值(或阈值)的变化,而依梯度法产生的变化部分则被忽略掉了。以此方式,当增加了动量项后,促使权值的调节向着误差曲面底部的平均方向变化,当网络权值进入误差曲面底部的平坦区时,

i

将变得很小,于是?wij(k?1)??wij(k),从而防止了?wij?0的出现,有助于

根据附加动量法的设计原则,当修正的权值在误差中导致太大的增长

使网络从误差曲面的局部极小值中跳出。

结果时,新的权值应被取消而不被采用,并使动量作用停止下来,以使网络不进入较大误差曲面;当新的误差变化率对其旧值超过一个事先设定的最大误差变化率时,也得取消所计算的权值变化。其最大误差变化率可以是任何大于或等于1的值。典型的取值取1.04。所以,在进行附加动量法的训练程序设计时,必须加进条件判断以正确使用其权值修正公式。

训练程序设计中采用动量法的判断条件为:

E(k)?E(k?1)*1.04?0?mc??0.95 E(k)?E(k?1), E(k)为第k步误差平方和。

?mc其它?2.3.2自适应学习速率

对于一个特定的问题,要选择适当的学习速率不是一件容易的事情。

通常是凭经验或实验获取,但即使这样,对训练开始初期功效较好的学习速率,不见得对后来的训练合适。为了解决这个问题,人们自然想到在训练过程中,自动调节学习速率。通常调节学习速率的准则是:检查权值是否真正降低了误差函数,如果确实如此,则说明所选学习速率小了,可以适当增加一个量;若不是这样,而产生了过调,那幺就应该减少学习速率的值。下式给出了一个自适应学习速率的调整公式:

E(k?1)?E(k)?1.05?(k)??(k?1)??0.7?(k) E(k?1)?1.04E(k) , E(k)为第k步误差平方和。

??(k)其它?初始学习速率

(0)的选取范围可以有很大的随意性。

2.3.3动量-自适应学习速率调整算法

当采用前述的动量法时,BP算法可以找到全局最优解,而当采用自适应学习速率时,BP算法可以缩短训练时间, 采用这两种方法也可以用来训练神经网络,该方法称为动量-自适应学习速率调整算法。

2.4 网络的设计

2.4.1网络的层数

理论上已证明:具有偏差和至少一个S型隐含层加上一个线性输出层的网络,能够逼近任何有理数。增加层数可以更进一步的降低误差,提高精度,但同时也使网络复杂化,从而增加了网络权值的训练时间。而误差精度的提高实际上也可以通过增加神经元数目来获得,其训练效果也比增加层数更容易观察和调整。所以一般情况下,应优先考虑增加隐含层中的神经元数。

2.4.2隐含层的神经元数

网络训练精度的提高,可以通过采用一个隐含层,而增加神经元数了的方法来获得。这在结构实现上,要比增加隐含层数要简单得多。那么究竟选取多少隐含层节点才合适?这在理论上并没有一个明确的规定。在具体设计时,比较实际的做法是通过对不同神经元数进行训练对比,然后适当地加上一点余量。 2.4.3初始权值的选取

由于系统是非线性的,初始值对于学习是否达到局部最小、是否能够收敛及训练时间的长短关系很大。如果初始值太大,使得加权后的输入和n落在了S型激活函数的饱和区,从而导致其导数f’(n)非常小,而在计算权值修正公式中,因为??f'(n),当f’(n)?0时,则有??0。这使得

?wij?0,从而使得调节过程几乎停顿下来。所以一般总是希望经过初始

加权后的每个神经元的输出值都接近于零,这样可以保证每个神经元的权值都能够在它们的S型激活函数变化最大之处进行调节。所以,一般取初始权值在(-1,1)之间的随机数。 2.4.4学习速率

学习速率决定每一次循环训练中所产生的权值变化量。大的学习速率可能导致系统的不稳定;但小的学习速率导致较长的训练时间,可能收敛很慢,不过能保证网络的误差值不跳出误差表面的低谷而最终趋于最小误差值。所以在一般情况下,倾向于选取较小的学习速率以保证系统的稳定性。学习速率的选取范围在0.01-0.8之间。

3 BP神经网络的应用

现给出一药品商店一年当中12个月的药品销售量(单位:箱)如下: 2056 2395 2600 2298 1634 1600 1873 1487 1900 1500 2046 1556 训练一个BP网络,用当前的所有数据预测下一个月的药品销售量。 有两种方法实现,一种是编写matlab程序,一种是使用nntool工具箱。

3.1 matlab程序实现

我们用前三个月的销售量预测下一个月的销售量,也就是用1-3月的销售量预测第4个月的销售量,用2-4个月的销售量预测第5个月的销售量,如此循环下去,直到用9-11月预测12月份的销售量。这样训练BP神经网络后,就可以用10-12月的数据预测来年一月的销售量。 实现程序如下:

p=[2056 2395 2600; 2395 2600 2298; 2600 2298 1634; 2298 1634 1600; 1634 1600 1873; 1600 1873 1478; 1873 1478 1900; 1478 1900 1500; 1900 1500 2046;]

t=[2298 1634 1600 1873 1487 1900 1500 2046 1556]; pmax=max(p);pmax1=max(pmax); pmin=min(p);pmin1=min(pmin);

BP神经网络原理及应用

?ak????(Tkp?okp)??'?netk?p?1k?1PLPL(3-18)?wij????(Tkp?okp)??'?netk??wki???(neti)?xjp?1k?1(3-19)??i????(Tkp?okp)??'?netk??wki???(ne
推荐度:
点击下载文档文档为doc格式
5yt0b75max3x5if1klmb9gaib47vll009kk
领取福利

微信扫码领取福利

微信扫码分享