教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 建筑文档 >

BP神经网络原理

来源:网络收集 时间:2026-08-23
导读: BP神经网络原理 2.1 基本BP算法公式推导 基本BP算法包括两个方面:信号的前向传播和误差的反向传播。即计算实际输出时按从输入到输出的方向进行,而权值和阈值的修正从输出到输入的方向进行。 ?1 a1 ?x1 … 输入变量 ?… o1 ??i wki … ak 输出xj … ?wij …

BP神经网络原理 2.1 基本BP算法公式推导

基本BP算法包括两个方面:信号的前向传播和误差的反向传播。即计算实际输出时按从输入到输出的方向进行,而权值和阈值的修正从输出到输入的方向进行。

?1 a1 ?x1 … 输入变量 ?… o1 ??i wki … ak 输出xj … ?wij … ? ok变量 ?… ?q aL ?输出层 xM 输入层 ?隐含层 oL ?

图2-1 BP网络结构

Fig.2-1 Structure of BP network

图中:

xj表示输入层第j个节点的输入,j=1,…,M;

wij表示隐含层第i个节点到输入层第j个节点之间的权值;

?i表示隐含层第i个节点的阈值;

?(x)表示隐含层的激励函数;

wki表示输出层第k个节点到隐含层第i个节点之间的权值,i=1,…,q; ak表示输出层第k个节点的阈值,k=1,…,L;

??x?表示输出层的激励函数;

ok表示输出层第k个节点的输出。

(1)信号的前向传播过程 隐含层第i个节点的输入neti:

neti??wijxj??ij?1M (3-1)

隐含层第i个节点的输出yi:

yi??(neti)??(?wijxj??i)j?1M (3-2)

输出层第k个节点的输入netk:

netk??wkiyi?ak??wki?(?wijxj??i)?aki?1i?1j?1qqM (3-3)

输出层第k个节点的输出ok:

M?q?ok??(netk)??(?wkiyi?ak)????wki?(?wijxj??i)?ak?i?1j?1?i?1? (3-4)

q(2)误差的反向传播过程

误差的反向传播,即首先由输出层开始逐层计算各层神经元的输出误差,然后根据误差梯度下降法来调节各层的权值和阈值,使修改后的网络的最终输出能接近期望值。

对于每一个样本p的二次型误差准则函数为Ep:

1LEp??(Tk?ok)22k?1 (3-5)

系统对P个训练样本的总误差准则函数为:

1PLE???(Tkp?okp)22p?1k?1 (3-6)

根据误差梯度下降法依次修正输出层权值的修正量Δwki,输出层阈值的修正量Δak,隐含层权值的修正量Δwij,隐含层阈值的修正量??i。

?wki????E?E?E?E?wij????ak?????i????wij?wki;?ak;??i (3-7) ;

?E?E?netk?E?ok?netk???????wki?netk?wki?ok?netk?wki (3-8)

?E?E?netk?E?ok?netk???????ak?netk?ak?ok?netk?ak (3-9)

输出层权值调整公式:

?wki???输出层阈值调整公式:

?ak???隐含层权值调整公式:

?wij????E?E?neti?E?yi?neti???????wij?neti?wij?yi?neti?wij (3-10)

隐含层阈值调整公式:

??i????E?E?neti?E?yi?neti????????i?neti??i?yi?neti??i (3-11)

PL?E????(Tkp?okp)?okp?1k?1 (3-12)

又因为:

?netk?w?y?netki?1?neti?x?netji?1ki,?ak,?wij,??i ?EPL?y????(Tppk?ok)??'(netk)?wkiip?1k?1 ?yi?net???(neti)i ?ok?net??'(netk)k 所以最后得到以下公式:

PL?wki????(Tpk?opk)??'?netk??yip?1k?1 PL?ak????(Tpk?opk)??'?netk?p?1k?1 PL?wpij??)??'?netk??wki???(neti)?xj

??(Tpk?okp?1k?1 ???PL??i?(Tpk?opk)??'?netk??wki???(neti)

p?1k?1 3-13)

3-14)

3-15)

3-16)

3-17) 3-18) 3-19)

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网 …… 此处隐藏:4449字,全部文档内容请下载后查看。喜欢就下载吧 ……

BP神经网络原理.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/681167.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)