摘要:人工神经网络作为一个具有高度非线性映射能力的的计算模型,在工程中具有广泛的应用前景。在数值预测方面,它不需要预选确定样本的数学模型,仅通过学习样本数据即可以进行预测。本文结合船舶与海洋工程的一些实际问题,探讨了利用BP神经网络进行数值预测的方法和应该注意的问题,并给出了一些有益的建议。
关键词: 人工神经网络,BP网络,数值预测,船舶与海洋工程
0 引言
人工神经网络[1](ANN-artificial neural networks)是属于人工智能(Artificial Intelligence)范畴的一种计算技术,它根据人们对生物神经网络的研究成果设计出来,具有良好的数学描述,可以方便的用计算机程序加以模拟。作为一种具有高度非线性映射能力的计算模型,它已被广泛应用于模式识别、自动控制等诸多领域。在数值预测[2][3][4][5][6]方面,它不需要预先确定样本数据的数学模型,仅通过学习样本数据即可以进行相当精确的预测。这项技术在船舶与海洋工程方面的应用[7][8],国内外已见发表。但笔者经研究发现,这些文献所采用的算法还有需要改进的地方,对于神经网络算法具体应用时的关键技术也没有作系统的阐述。本文的工作正是基于这样的背景,试图能起到抛砖引玉的作用,对国内外同行的研究有所帮助。
本文之所以采用BP算法主要是因为该算法目前应用最为广泛,成果相当显著,而且结构简单,易于实现,功能也较强。
1 BP神经网络及改进
BP神经网络[1]就是采用BP(Back propagation)算法进行训练的网络,该网络具有一个输入层,一个输出层和至少一个隐藏(中间)层,研究结果表明,增加隐藏层的层数不一定能提高网络的精度和表达能力,一般情况下,选用一个隐藏层就足够了, 此时其结构如图1所示。BP算法是非循环多级网络的训练算法,其学习过程由正向传播和反向传播组成,输入值经过非线性变换从输入层经隐单元逐层处理,并传向输出层,每一层神经元的状态将影响到下一层神经元状态,如果在输出层不能得到期望的输出,则转入反向传播,通过修改各神经元权值,使误差信号最小。
2 BP预测算法的实现
2.1 预测算法思想 运用BP算法进行数值预测的思路可简单描述为:(1)收集一定规模的样本集,采用BP算法进行训练,使网络收敛到预定的精度;(2)将网络权值矩阵保存到一存储介质中,例如文本文件或者数据库;(3)对于待预测数据的输入部分,从存储介质中读出网络连接权值矩阵,然后通过BP神经网络的前向传播算法计算网络输出,经过处理即是预测出来的数值向量。
2.2 样本集数据处理 由于BP神经网络的输出值在0~1之间,而且当输入值在-0.6~0.6之间时变化较快,所以应该对学习样本数据进行一定的压缩处理[2] [3] [4],使之满足网络计算的要求。对于船舶与海洋工程(以下简称船海工程)来说,绝大多数情况下处理的输入数据都是正的实数,同时为了减少计算误差,一般可以将将输入数据压缩在(0.1,0.9)范围内,对输出数据也可如此处理。
3 算例及分析
笔者根据前述算法,用C++语言编制了BP神经网络数值预测程序,在Vc++6.0上调试通过,所用电脑配置为PIII933MHz主频,
例 1 现有一模型[13],具有如下映射特性,试拟合之。
X1=1 1 1 1 Y1=1 0 0; X2=0 1 0 0 Y2=0 1 0; X3=1 1 1 1 Y3=0 0 1
1 0 0 1 0 1 0 0 1 0 0 1
1 1 1 1 0 1 0 0 1 0 0 1
1 0 0 1 0 1 0 0 1 1 1 1
这是一个足以考察BP神经网络功能的算例,输入数据4行4列,输出数据3列,它们之间是强非线性映射关系。为处理方便,将输入数据视为一16维向量,按行存放,输出数据为3维向量,隐藏层神经元数取为8,网络精度取为1.0e-3,N取为50000,开始时α=0.1,β=0.8,λ=0.05。结果,仅经过59次训练,耗时不到1秒,网络即达到预定精度,此时E= 7.83415e-4,将样本集中数据输入部分作为待预测数据时,预测(拟合)结果分别为Y‘1=[0.00945159 0.00519334 0.992881],Y‘2=[0.991788 0.0106014 0.00561761],Y‘3=[0.00418537 0.990372 0.00961512],误差均小于1.1%。可见笔者给出的BP训练算法具有相当优异的性能。
例 2 本算例见文献[7],该文收集有8艘比较接近的散货船作为样本船,其输入参数为船长L、船宽B、前吃水TF、后吃水TA、排水量△、舵面积AR、桨直径DP、桨螺距P和航速V,输出参数为回转试验的进距Ad、横距Tr和战术直径DT。具体参数值见下表:
表 1 样本船参数
|
序号 |
L(m) |
B(m) |
TF(m) |
TA(m) |
△(t) |
AR(m2) |
DP(m) |
P(m) |
V(kn) |
|
1 |
180 |
32.2 |
7.172 |
8.078 |
35192 |
31.446 |
6.3 |
4.58 |
15.8 |
|
2 |
180 |
31.2 |
8.09 |
8.21 |
37136 |
32.25 |
6.5 |
4.616 |
15.7 |
|
3 |
183 |
31.5 |
3.444 |
6.871 |
22773 |
36.908 |
5.7 |
4.212 |
17.24 |
|
4 |
168 |
23.2 |
3.48 |
6.64 |
15369 |
22.99 |
5.6 |
4.2 |
17.19 |
|
5 |
170 |
28.4 |
4.07 |
6.15 |
18586 |
28.25 |
5.6 |
4.67 |
17 |
|
6 |
182.3 |
28.044 |
5 |
7.25 |
23443 |
24.7 |
6.15 |
4.54 |
13.75 |
|
7 |
145 |
27.2 |
2.546 |
5.937 |
12013 |
24.59 |
5.2 |
3.809 |
15.59 |
|
8 |
171.7 |
22.4 |
5.48 |
6.32 |
17755 |
26.49 |
4.915 |
3.601 |
16 |
表 2 样本船试验数据
|
序号 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
Ad(m) |
541.8 |
705.6 |
538 |
529.2 |
550.8 |
683.5 |
482.9 |
479 |
|
Tr(m) |
196.2 |
255.6 |
217.8 |
205 |
321.3 |
384.6 |
208.8 |
235.2 |
|
DT(m) |
453.6 |
550.8 |
534.4 |
502.3 |
586.5 |
663.5 |
494.5 |
475.6 |
对该算例,隐藏层神经元数取为12,网络精度取为1.0e-2,N取为50000,开始时α=0.6,β=0.9,λ=0.05。结果,仅经过332次训练,精度即达到要求,此时E=9.86273e-3,耗时约两秒,远快于该文献的12000次训练,这主要得益于笔者采用了动态学习因子和惯性因子技术,加快了收敛速度。此时,对样本集中数据拟合结果如下表所示。
表 3 BP神经网络拟合结果
|
序号 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
Ad(m) |
552.015 |
685.374 |
534.146 |
524.078 |
550.905 |
683.981 |
480.102 |
481.28 |
|
Tr(m) |
186.934 |
256.893 |
217.67 |
206.296 |
319.808 |
380.916 |

RSS订阅
邮件订阅