权值初始化
用于权值 初始化 的一个普遍方法是设置为:区间 [−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算法可以分为两类:
1. 启发式算法:如动量算法和自适应算法。
2. 数值优化算法:如共轭梯度法和牛顿法。
在BP算法中,步长 η 的选择很重要, η 大则收敛快,但是过大则可能引起不稳定。( η 最大不能超过 2λmax , λmax 为输入向量x的自相关阵的最大特征值)
η 小可避免振荡,但收敛速度变慢,解决这一矛盾的最简单方法就是加入“动量项”,即令:
其作用简单分析如下:
当顺序加入训练样本时,公式可写成以t为变量的时间序列,因此上式可看做是 Δωji 的一阶差分方程,对 Δωji(n) 求解,可得:
标准BP算法假定权值由每一输入输出训练对更新,而批量更新方法在执行更新之前累计几个训练模式的权值修正。
批量更新的优点如下:
- 运用几个训练对,对误差曲面给出比用于标准BP的瞬时值更好的估计。
- 通过修正平均的处理,批量更新步骤提供某种固有的训练数据低通滤波。
- 批量算法适用于更复杂的优化过程,如共轭梯度法或牛顿法。
对于在整个训练集执行平均的批量更新和标准BP之间的一个良好折中是在更新权值之前累积几个训练对的变化。
Darken等人提出的用于加速BP学习的搜索然后收敛方法是相对简单的启发式策略。
两个通用的学习率下降策略:
自适应BP算法的含义在于自适应地改变BP学习中的学习率,以控制BP学习中的梯度下降速度,以改善原始BP算法的收敛特性。
学习率 η 的自适应律可设计为:
式中, a>0,b>0 ,条件 C1(k) 和 C2(k) 分别定义为:
C1(k) 表示BP网络前 i 次迭代的平方误差函数梯度值 ΔE(k−i)<0 ;
C2(k) 表示BP网络前 i 次迭代的平方误差函数梯度值 ΔE(k−i)>0 ;
共轭梯度法不能直接地应用于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 算法是为了能将牛顿法应用于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.