BP算法改进
来源:互联网 发布:linux 查看文件内容 编辑:程序博客网 时间:2024/06/05 20:28
BP算法的问题
权值初始化
用于权值 初始化 的一个普遍方法是设置为:区间[−0.5N,0.5N] 内,均匀分布的随机数,其中N表示权值为馈入层中神经元的总数量。
对于单隐层的情况,Nguyen和Widrow认为下列算法能显著提高网络的训练速度。算法1
- 计算缩放因子:
γ=0.7n1−−√n0 ,其中,n0 为输入层分量个数,n1 为隐层神经元个数。 - 初始化任一层的权值
ωij 为[ −0.5,0.5] 之间的随机值。 - 按照下列公式重新初始化权值:
ωij=γωij∑n1i=1ω2ij−−−−−−−√
4.对于隐层第i个神经元,设置偏置为一个[−ωij,ωij] 之间的随机值。
- 计算缩放因子:
网络设置和网络泛化能力
多层感知器神经网络的设置由隐层的数量、每个隐层的神经元数量以及激活函数的类型决定。已经证实:网络的性能并不十分依靠激活函数的类型,隐层的数量、每个隐层的神经元数量的选择是关键。- 独立检验
将数据划分为训练集和测试集。训练集用于更新网络权值,测试集用于评估训练性能。 - 收敛速度
学习率的取值在某种程度上决定了BP算法的收敛性(速度和稳定性)。为了确保网络收敛和避免训练过程的振荡,学习率必须设置为相对较小的值。
除了BP学习的修改,输入数据的预处理和简化也可使性能改善和加速训练。即:网络规模的减小将削减它的复杂性,并能大大提高收敛速度。数据预处理的方法有:主成分分析法、部分最小二乘回归、傅里叶变换和小波变换等。
BP算法的改进
改进的BP算法可以分为两类:
1. 启发式算法:如动量算法和自适应算法。
2. 数值优化算法:如共轭梯度法和牛顿法。
启发式算法
动量方法
在BP算法中,步长
此式被称为广义delta规则。式中第二项是常规BP算法的修正量;第一项称为动量项,其通过在权值更新中引入稳定性来提高标准反向传播的速度;
其作用简单分析如下:
当顺序加入训练样本时,公式可写成以t为变量的时间序列,因此上式可看做是
当本次
当本次
批量更新
标准BP算法假定权值由每一输入输出训练对更新,而批量更新方法在执行更新之前累计几个训练模式的权值修正。
批量更新的优点如下:
- 运用几个训练对,对误差曲面给出比用于标准BP的瞬时值更好的估计。
- 通过修正平均的处理,批量更新步骤提供某种固有的训练数据低通滤波。
- 批量算法适用于更复杂的优化过程,如共轭梯度法或牛顿法。
对于在整个训练集执行平均的批量更新和标准BP之间的一个良好折中是在更新权值之前累积几个训练对的变化。
搜索然后收敛方法
Darken等人提出的用于加速BP学习的搜索然后收敛方法是相对简单的启发式策略。
两个通用的学习率下降策略:
式中,
当
当
已经证明,恰当选择参数
自适应BP算法
自适应BP算法的含义在于自适应地改变BP学习中的学习率,以控制BP学习中的梯度下降速度,以改善原始BP算法的收敛特性。
学习率
式中,
数值优化算法
共轭梯度BP法
共轭梯度法不能直接地应用于BP网络。
算法2 :基于Fletcher-Revees 共轭梯度法的BP学习算法
1.初始化。设置k=0 和i=0 ,设置学习率上限C>0 和优化目标ε>0 ,随机生成初始权值序列ω(0) 。
2.通过局部梯度δ(l)j(0) ,计算梯度g(0)=▽E(ω(0)) 。
3.选择搜索方向d(0) ,d(0)=−g(0) 。
4.计算学习率ηi ,采用一维搜索选择ηi 使下式成立:E(ω(i)+ηid(i))=min0≤η≤CE(ω(i)+ηd(i))
5. 调节BP网络参数ω(i+1)=ω(i)+ηid(i)
6.置k=k+1,i=i+1 。
7.若E(ω(i))<ε ,算法终止。
8.通过局部梯度δ(l)j(i) ,计算梯度g(i)=▽E(ω(i))
9.计算方向因子βi=∥g(i)∥2∥g(i−1)∥2
10.计算方向d(i) :若i<N (N 为BP算法的迭代次数上限),则d(i)=−g(i)+βid(i−1) ,并转步骤4,否则,i>0,ω(0)=ω(i) 和g(0)=g(i) ,并转步骤3
Levenberg-Marquardt 算法
Levenberg-Marquardt 算法是为了能将牛顿法应用于Hesse矩阵非正定的情形下的一种改进方法,其迭代过程为:
其中,
算法3 基于Levenberg-Marquardt 的BP学习算法
1.初始化:设置k=0,β0>0,α>1 ,设置正定矩阵Q^(k) ,设置优化目标ε>0 ,随机生成初始权值序列ω(0) 。
2.计算梯度g(k)=▽E(ω(k)) :通过局部梯度δ(l)j(i) ,根据BP算法计算公式,求梯度▽E(ω(k)) 。
3.计算近似Hesse矩阵H(ω(k)) 。
4.计算估计Hesse矩阵H^(ω(k)):H^(ω(k))=H(ω(k))+βkQ^ 。
5.H^−1(ω(k)) 存在性测试:若H^−1(ω(k)) 不存在,则置βk=αβk 并转向步骤4。
6.选择搜索方向d(k)=−H^−1(ω(k))−1g(ω(k)) 。
7.计算学习率ηk ,采用一维搜索法。
8.学习率有效性测试,若ηk=0 ,则置βk=αβk 并转向步骤4。
9.调节BP网络参数ω(k+1)=ω(k)+ηkd(k)
10.停机测试:若E(ω(k))<ε ,则停机;否则,置k=k+1 ,并转置步骤2.
参考文献
[1] 史忠植. 神经网络[M]. 北京:高等教育出版社,2009:54-63.
- BP算法的改进
- BP算法改进
- BP网络算法及其改进
- BP网络算法及其改进
- 蚁群算法改进的BP神经网络(算法有问题待修正)
- 蚁群算法改进的BP神经网络(算法有问题待修正)
- BP算法
- BP算法
- BP算法
- BP算法
- BP算法
- BP算法
- BP算法
- BP算法
- BP算法
- BP算法
- BP算法、NB算法
- BP算法调研
- 记录开发项目遇到的问题
- Shell 流程控制
- 多态——动态绑定
- 16.4.3
- Spring Boot入门及集成MyBatis开发Web项目
- BP算法改进
- 数据结构——栈的使用
- 工具类:自定义 pickerView
- RecyclerView的item点击事件
- IE11降级为IE8的方法
- 16.5.1
- GC调优在Spark应用中的实践
- Queue和Deque
- FAT12文件系统