1、引言
LMS学习算法是由Widrow和Hoff于1960年提出的,该算法也称为 Δ \Delta Δ规则,该算法与感知器网络的学习算法在权值调整上都基于纠错学习规则,但LMS算法那更容易实现,因此得到了广泛应用。
注意:LMS算法只能训练单层网络,但这并不影响其功能,从理论上讲,多层线性网络并不比单层网络强大,它们具有同样的能力,即对于每一个多层线性网络,都具有一个等效的单层线性网络与之对应。
2、推导过程
定义某次迭代时的误差信号为
(1)
其中n表示迭代次数,d表示期望输出。这里采用均方误差作为评价指标:
(2)
Q为输入训练的样本个数。线性神经网络学习的目标是找到适当的w,使得误差的均方差mse最小。只要用mse对w求偏导,再令该偏导等于零即可求出mse的极值。显然,mse必为正值,因此二次函数是凹向上的,求得的极值必为极小值。
在实际运算中,为了解决权值w维数过高,给计算带来困难的问题,往往是通过调节权值,使mse从空间中的某一点开始,沿着斜面向下滑行,最终达到最小值。滑行的方向是该点最陡下降的方向,即负梯度方向。沿着此方向以适当强度对权值进行修正,就能最终到达最佳权值。
即,在实际的计算中,代价函数常定义为
(3)
对该市两边关于权值向量
w
w
w求偏导,可得
(4)
根据公式(1),令
e
(
n
)
e(n)
e(n)对权值向量求偏导,有
(5)
综合以上,可得
(6)
因此,根据梯度下降法,权矢量的修正值正比于当前位置上
E
(
w
)
E(w)
E(w)的梯度,权值调整规则为:
(7)
即
(8)
对公式(8)进一步整理得
(9)
3、LMS算法步骤
(1)定义变量和参数
为方便处理,将偏置
b
b
b与权值合并:
(10)
相应地,训练样本为
(11)
其中,
b
(
n
)
b(n)
b(n)为偏置,
d
(
n
)
d(n)
d(n)为期望输出,
y
(
n
)
y(n)
y(n)为实际输出,
η
\eta
η为学习率,
n
n
n为迭代次数。
(2)初始化,给向量
w
(
n
)
w(n)
w(n)赋一个较小的随机初值,
n
=
0
n=0
n=0。
(3)输入样本,计算实际输出和误差。根据给定的期望输出,计算,详见公式(1)
(4)调整权值向量。根据上一步计算得到的误差,计算公式(8)
(5)判断算法是否收敛。弱满足收敛条件,则算法结束,否则
n
n
n自增1.跳转到第3步重新计算。
收敛判断常见3中,1)误差小于某一个事先设定的较小值;2)权值变化已经很小,即
∣
w
(
n
+
1
)
−
w
(
n
)
∣
<
δ
|w(n+1)-w(n)|<\delta
∣w(n+1)−w(n)∣<δ;3)迭代次数达到上限值N。
注意:学习率 η \eta η不能过大也不能过小,弱学习率过大,则可能导致误差在某个水平上反复振荡,若过小,则会耗时长。
详见书籍《matlab神经网络原理与实例详解》