x0 = ones(size(x1)); y0 = ones(size(x1)); u1 = a01 * x0 + a11 * x1; u2 = a02 * x0 + a12 * x1; y1 = 1 ./ (1 + exp(-u1)); y2 = 1 ./ (1 + exp(-u2));
z = b0 * y0 + b1 * y1 + b2 * y2; plot(x1, t, 'r'); hold on;
plot(x1, z, 'b'); hold off;
axis([0 pi -0.2 1.2]);
程序运行后,输出拟合曲线与原函数曲线,如下图所示:
1 0.8 0.6 0.4 0.2 0 -0.2
0
0.5
1
1.5
2
2.5
3
可以看出,训练后的神经网络的预报输出与目标输出已经很接近, 拟合效果是较为理想的。
Page 13 of 25
总的来说,神经网络的学习过程,是神经网络在外界输入样本的 刺激下不断改变网络的连接权值乃至拓扑结构,以使网络的输出不断
地接近期望的输出。BP 算法是多层前向神经网络的一种学习规则,
核心思想是将输出误差以某种形式通过隐层向输入层逐层反传,学习
的过程就是信号的正向传播与误差的反向传播交替的过程。
多层前向神经网络的主要功能有:
(1)非线性映射能力。多层前向神经网络能学习和存储大量输
入——输出模式映射关系,而无需事先了解描述这种映射关系的数学
方程。只要能提供足够多的样本模式供对神经网络进行学习训练,它
便能完成由 n 维输入空间到 m 维输出空间的非线性映射。
(2)泛化能力。当向网络输入训练时未曾见过的非样本数据时,
网络也能完成由输入空间到输出空间的正确映射。
(3)容错能力。输入样本中带有较大的误差甚至个别错误对网
络的输入输出规律影响很小。
多层前向神经网络的标准 BP 学习算法有着以下明显的缺陷:
(1)易形成局部极小(属于贪婪算法,局部最优)而得不到全
局最优;
(2)训练次数多使得学习效率低下,收敛速度慢;
(3)隐节点的选取缺乏理论支持;
(4)训练时学习新样本有遗忘旧样本的趋势。
标准 BP 算法的改进方法主要有:增加动量项;自适应调节学习
率等。增加动量项已经在之前进行过讨论,可以减小振荡趋势,提高
Page 14 of 25
训练速度。自适应调节学习率是指根据环境变化增大或减小学习率, 基本方法是:
设一初始学习率,若经过一批次权值调整后使总误差增大,则本
次调整无效,并令??????1? (?1?? 1) ;若经过一批次权值调整后使总误差
减小,则本次调整有效,并令??????2? (?2?? 1)。
下面通过一个非线性分类问题来考察前向神经网络在模式识别 领域的应用。
问题 2:
x?? y平面上有 200 个点,分别属于两个类别。试设计并训练一个
多层前向神经网络,以完成该分类任务,使得被错误分类的样本数量
0.9
最低。??1 类以绿色标示,??2 类以蓝色标示。 1
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0 0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Page 15 of 25