E(n)0.1E(0)E(?)收敛速率n
图2.11 LMS算法的理想学习曲线
对一个收敛的LMS算法,学习曲线从一个大的E(0)值开始,E(0)由初始条件决定的;然后按某种速率下降,最终收敛到一个稳定的值E(∞)。通过学习曲线我们可以定义LMS算法的收敛速率为E(0)下降到某个预设的值,如初始值E(0)的10%时所需的迭代次数n。学习速率因子η对收敛速率和学习精度有很大的影响,最简单的方法是按公式(2.19)取η为常数。即:
?(n)??0,对所有的n (2.20)
在随机近似过程中,可将学习速率因子看成是时变的,即: ?(n)?c (2.21) n其中c是一个不能太大常量。
综合考虑收敛速率和学习精度,学习速率因子η应先取较大的值,保证收敛速率,随着迭代次数的增加η的值也应该较小以保证精度。Darken和Moody于1992年结合(2.20)和(2.21)两式,提出了所谓的搜索-收敛的方案(Search-then-Converge Schedule),即学习速率的退火算法。其定义如下:
?(n)??01?(n) (2.22)
?其中,?0和?是预设的常量。分析上式可知,在自适应的迭代开始时,迭代次数n小于搜索时间常量?,此时?(n)约等于?0,随着迭代次数n增大并大于搜索时间常量?时,学习速率因子?(n)就近似于cn,其中c???0,此时算法如同一个传统的随机近似算法,从
而权值向量将收敛到一组最优值的集合。这说明了学习速率因子的搜索-收敛计划可以同时具
备了标准LMS算法和传统随机近似算法的特性。如图2.12所示。
34
?(n)?00.1?00.01?0随机近似过程搜索-收敛计划lgn
图2.12 学习速率的退火算法
以上讨论了LMS算法及其收敛性。从中可以看出LMS算法的主要优点就是它容易实现,另外,LMS算法是模型无关的,从而鲁棒性比较好。所谓鲁棒性好是指小的模型不确定性和小能量的干扰只能引起小的误差信号。Hassibi等人在1993和1996年提出了LMS算法按H?准则是最优的。H?准则的基本意思是指如果不知道要面对是什么,那么就按最坏的打算并进行优化处理。H?准则的提出为LMS算法的广泛应用奠定了坚实的基础,特别H?准则可以解释LMS算法不仅可以适用于平稳过程,而且适用于非平稳过程,这里非平稳过程是指其中的统计量随时间变化。
LMS算法的一个主要缺点就是它的收敛速度慢以及它对输入向量的特征值结构的敏感性。LMS算法的收敛速度慢主要体现在它需要迭代相当于输入向量空间维数的10倍次数才能收敛到一个稳定状态;LMS算法对环境条件改变的敏感性主要是它对输入向量X(n)的自相关矩阵Rx的条件数的改变敏感,当条件数是个大的数时,我们就称环境是病态的。当训练用的输入向量X(n)来自病态的环境时,LMS算法对条件数的敏感就更加突出。
2.4 仿真实例
【例2.1】试用单层感知器,实现逻辑“与”和“或”运算。
解:先考虑逻辑“与”运算的实现。对于“与”运算,即可将问题转化为: 输入矢量为:P=[0 0 1 1;
0 1 0 1];
目标矢量为:T=[0 0 0 1]。
于是,可以按要求列出如下不等式组: x1 x2 x1 x2 Y=w1·x1+w2·x2-b=0 条件 0 0 0 b>0 Y=w1·0+w2·0-b<0 0 1 0 b>w2 Y=w1·0+w2·1-b<0 1 0 0 b>w1 Y=w1·1+w2·0-b<0 1 1 1 Y=w1·1+w2·1-b≥0 b≤w1+w2
35
在Matlab中,对于本例可以在二维平面坐标中给出仿真过程的图形表示。如图2.13所示,根据输入矢量和目标矢量关系,将它们绘制于坐标平面中。目标矢量为1输出的输入矢量用“+”表示,而目标矢量为0输出的输入矢量用“o”表示。
图2.14给出了Matlab中所设计的单层感知器在某次训练过程中,由权值形成的划分直线。虚线表示前几次的训练划分结果,实线则表示训练结束后的最终划分结果。显然,前几次目标未能正确的划分开,而训练结束后最终划分结果是正确的。验证了单层感知器可以实现逻辑“与”运算,而事实上,上述不等式组也是有解的。
图2.13 输入矢量位置图
图2.14 单层感知器训练过程
36
在Matlab中,只要用下述命令即可对训练好的单层感知器网络输出结果进行验证: >> A=hardlim(W*P,B) A =
0 0 0 1
其中hardlim()函数是单层感知器的二值阈值函数。设计的感知器对不同的初始化条件可能得到不同的结果,即分类线不同,但都可以解决问题。
对于逻辑“或”运算,只需改变上面设计时的输入输出,即可类似的实现。 【例2.2】用单层感知器解决一个简单的分类问题。
设计一个感知器,将二维的四组输入矢量分成两类。 输入矢量为:P=[-0.5 -0.5 0.3 0;
-0.5 0.5 -0.5 1];
目标矢量为:T=[1 1 0 0]。
解: 对感知器的图解分析可知,感知器对输入矢量的分类实质是在输入矢量空间,用w*x+b=0的分割线对输入矢量进行切割而达到分类的目的。根据这个原理,对此例中二维四组输入矢量的分类问题,可以用下述不等式组来等价的表式出:
??0.5w1?0.5w2?b?0??0.5w?0.5w?b?0?12 ??0.3w1?0.5w2?b?0??w2?b?0实际上,可以用代数求解法来求出上面不等式中的参数。其解的范围为:
?w1?0?w1??1?0.8w?w??w??121 一组可能解为:?w2?0 ??b??0.1?w1/3?b??w1??b??w2?本例的分类问题是线性可分的,可以用单层感知器解决。所要设计的单层感知器的网络
结构如图2.15所示:
x1w1x2w2b
图2.15 例2.2中单层感知器的网络结构
与上例类似,在Matlab中仿真过程的图形表示如图2.16和图2.17所示。
37
图2.16 输入矢量位置图
图2.17 单层感知器训练过程
同样可以用函数hardlim()来验证网络的结果。另外,我们可以将非训练样本输入网络,看看网络的分类结果。比如,对向量[1.5;0.5]:
>> A=simup([1.5;0.5],W,B) A =0
网络能够合理的响应被训练以外的输入,这个性质称为泛化性能。
38