基于VB的单隐含层BP神经网络编程及验证

2018-05-22 03:50
计算机时代 2018年5期
关键词:该软件训练样本偏置

陈 鹏

(福建省电子产品监督检验所,福建 福州 350003)

0 引言

人工神经网络广泛应用于非线性场合。在经济预测、机器故障识别[1]、无损探测[2]等领域反向误差传播学习算法网络(简称BP神经网络)占有一席之地,是目前人工神经网络应用最广泛的模型之一。本研究针对较为常见的单隐含层BP神经网络进行分析、编程和验证。总的说来,商业软件功能相当强大;然而商业软件无论在费用、物理平台或操作上都占用大量资源,所以有必要进行研究,我们在理解的基础上开发简单实用的小型软件以满足具体需求。另外,许多的网络文章或者出版的中外书籍,都没有全面阐明该单隐含层BP神经网络算法的应用公式。本文利用Visua Basic 6.0编程,对单隐含层BP神经网络加以实现,阐明了权值(weight)、偏置值(bias)的更新公式,同时,为了避免局部极值的问题引入了动量因子。以下给出软件开发、设计原理和结果验证的阐述。

1 软件开发

软件主界面如图1所示,该软件允许用户在文本文件中定义训练样本和测试样本的组数并输入数据;用户可以定义BP神经网络的输入层节点数、单隐含层节点数、输出层节点数、迭代次数限制和要求精度。在主界面中,用户输入学习率(learning rate)和动量因子(momentum factor)。当满足要求时,软件自动从文本文件中读入训练样本数据,并动态产生用来存储数据的数组,然后对数据归一化处理,接着运行BP神经网络算法,最后将各种数据制成文本文件加以保存。这其中包括处理归一化后的样本数据、样本的极值、各层的初始化权值、隐含层和输出层的偏置值以及最终的各个权值和偏置值。另外,软件也保存预测值这一最重要的数据。软件允许用户根据具体的预测项目方便地修改文本文件,如更改输入/输出和隐含层的节点数,从而达到较理想的预测效果。

图1 软件主界面

2 设计原理

关于BP单隐含层神经网络公式的推导过程,有一些值得参考的出处[3-5],本文不再重复,但这些推导过程也各有欠缺,有的只论述了权值的更新而没有偏置值的更新,有的论述了权值和偏置值更新但没论述使用动量因子的情形。综合这些论述,我们给出简洁方便的公式结果以方便读者使用。本软件假设隐含层和输出层的激励函数均为简化的Sigmoid函数,即:

定义yk是输出层k上的激励函数值,tk是其上的期望值,于是输出层总误差为:

设α是学习率,i,j,k分别是输入层、隐含层和输出层的序号,δ是误差,ω是权值,b是偏置值,则从隐含层到输出层就有:

对于输入层到隐含层,类似有:

此时引入动量因子η,于是对于从隐含层到输出层的情况,就有:

上述公式就是本软件的开发基础。另外,必须将使用的数据进行归一化处理再进行输入值、输出值、权值和偏置值等的处理。这里采用以下公式:

在系统训练好做出预测之后,必须进行反归一化以便得到恰当的预测结果数据。

3 结果验证

为了检验软件的可用性和编程的正确性,使用了两种方法:曲线拟合和简单字符识别。对于曲线拟合,我们假设有下列函数:

为减少数据量,将各输入变量的值限定于(0,5]区间,随机选取20组数据形成训练样本。另外选取20组数据作为测试样本。定义本软件的BP神经网络的输入层节点数为3,输出层节点数为1,隐含层节点数为5或者8,则在学习率为0.01以及动量因子为0.5时都获得了较好的训练学习效果。在设定要求的总误差为不大于0.07并且隐含层节点数为8时,软件迭代了46425次就获得了不错的曲线拟合效果。其中的训练样本和测试样本数据见表1。训练过程中神经网络的误差曲线以及预测样本期望值,与训练后神经网络对预测样本的预测值的拟合曲线分别见图2和图3。

图2 训练过程误差曲线

图3 预测样本期望值与预测值曲线

表1 输入输出数据样本集(Y是期望值)

对于字符识别,我们以字母A的判定来举例[3]。为简化问题,假设字符像素矩阵为[5,6],图4从左至右前两图为部分训练样本、最后一图为测试样本。训练样本值举例见表2。定义输入层的节点数为5*6=30,输出层的节点数为1,隐含层的节点数为5。字母A为真时,其值为1。

图4 字母A的简化像素图[3]

表2 字母A的某个手写体的像素值矩阵

从软件的运行看,上述例子的字符识别对于软件来说是简单的,因为样本需要数较少时软件就能准确识别。基于学习率为0.1以及动量因子为0.5时,当精度要求为0.02且迭代了73次后,预测值为0.9404669;当精度要求为0.01时且迭代了143次后,预测值为0.977557,说明图4的字母A被正确识别。

4 结束语

本文论述了一种比较简单易行且实用的基于VB编程的单隐含层BP神经网络编程原理及设计并给出结果验证。文章采用的公式可以方便研究人员编程学习借鉴。该软件成功地进行了曲线拟合,以及简单字符识别的测试,说明该软件设计原理和编程是正确的。虽然与商业软件比较,该软件还有许多不足之处,但在一些需要BP神经网络分类或预测的应用场合,可以合理运行该软件进行处理。该软件的用户界面友好性有待进一步提高。另外,还需增加输出层的纯线性激励函数可选择项,从而使软件的考虑更全面。在本软件基础上将来可以考虑包含两个隐含层的BP神经网络编程设计。

参考文献(References):

[1]I.N.Tansel,T.T.Arkan,W.Y.Bao,et al.Tool wear estimation in micro-machining.Part I:tool usage-cutting force relationship[J].International Journal of Machine Tools&Manufacture,2000.40(4):599-608

[2]I.N.Tansel,Feyzi Inanc,N.Reen,P.Chen,et al.Neural Network Based ThicknessEstimation from Multiple Radiographic Images[J]. Journal of Nondestructive Evaluation,2006.25(2):53-66

[3]Toshinori Munakata.Fundamentals of the New Aritificial Intelligence[M].2nd ed.London:Springer-Verlag,2008.

[4]James A.Freeman and David M.Skapura.Neural Networks:Algorithms,Applications,and Programming Techniques[M].New York:Addison-Wesley Publishing Company,1991.

[5]杨建刚.人工神经网络实用教程[M].浙江大学出版社,2001.

猜你喜欢
该软件训练样本偏置
基于40%正面偏置碰撞的某车型仿真及结构优化
基于双向线性插值的车道辅助系统障碍避让研究
简单灵活 控制Windows 10更新更方便
人工智能
Flashfxp Password Decryptor
宽带光谱成像系统最优训练样本选择方法研究
一级旋流偏置对双旋流杯下游流场的影响
融合原始样本和虚拟样本的人脸识别算法
基于稀疏重构的机载雷达训练样本挑选方法
面向TIA和缓冲器应用的毫微微安偏置电流运放可实现500MHz增益带宽