反向传播是一个更一般的LMS算法,可以用于训练多层网络。也是最速下降法的近似,性能指数是均方差。
多层感知机:
多层网络的应用:1.在模式分类中,它可以完成单层网络无法解决的问题,如异或问题;2. 在函数逼近中,两层网络在其隐层中用S形传输函数,在输出层中用线性函数,就可以以任意精度逼近感兴趣的函数,只要隐层中有足够的神经元。
反向传播算法(BP算法):
1. 通过网络向前传播,求得各层输出a[0]=p, a[1], ... ,a[M]
2. 通过网络反向传播敏感性,s[M]=-2 * F'[M](n[M]) * (t - a[M]), s[m] = F'[m](n[m]) * W[m+1]' * s[m+1]
3. 使用近似最速下降法更新权值和偏置,W[m]_new = W[m]_old - alpha * s[m] * a[m-1]',b[m]_new = b[m]_old - alpha * s[m]
反向传播:
1. 网络结构的选择:多层网络在隐层神经元数量足够的情况下可逼近任意函数,但是很难确定具体需要多少层、多少神经元。对于1-S1-1网络,其隐层是S形神经元而输出层是线性神经元时,若要逼近有大量拐点的函数(比如sin(x),隐层中要有大量的神经元。
2. 收敛性:BP算法可能收敛到局部极小点。多层网络的均方误差非常复杂,且有许多局部极小点,当BP算法收敛时,并不能确定是不是最优解,可以多试几个初始值。
3. 推广:就是看非样本点的输出是不是与实际函数相同。对一个简单函数g(p) = 1 + sin(pi/4*p),-2<=p<=2,均匀取11个点来测试,1-2-1网络可精确模拟,也可很好地推广(如p=0.1),但是1-9-1却不行,也就是说,神经元太多,网络又过于灵活了。所以:
一个网络要能被推广,它应该具有比训练集中的数据点少的参数
要用足以表示训练集的最简单的网络,只要有一个可以工作的更小的网络,就不要使用更大的网络(Ockham剃刀)。
还有一种提高网络推广性能的方法就是:在网络得到恰当的调整之后停止训练,具体讨论在第19章。