基于VB的RBF神经网络编程及验证
2023-12-18陈鹏
陈鹏
关键词:RBF 神经网络;VB;函数逼近;BP 神经网络
中图分类号:TP311.1 文献标识码:A 文章编号:1006-8228(2023)11-76-03
0 引言
神经网络的高级编程语言包括MATLAB 以及Python 等。使用这些语言编程,有时候并不需要真正掌握神经网络的算法,因为这些语言已包括了很多模块供用户使用。使用此类高级编程语言的缺点是,应用程序常常需要安装相关软件包,因此占用较大的计算机存储空间。
我们需要从基础编程软件入手详细了解神经网络编程的各个环节,这样有助于具体的应用开发并为软件设计带来灵活性。本文从常见的基础编程软件VB 6.0 开发RBF(径向基函数)神经网络[1-2]软件的基本原理出发,简要介绍编程过程,并针对RBF 神经网络和BP 神经网络在函数逼近方面的性能等进行分析,比较和适当总结。目前国内已有使用VB 进行BP(反向误差传播)神经网络编程成功的先例[3]。通过查询国内论文发现,几乎没有使用VB 语言来编写RBF 神经网络的例子,这也是本文选题的驱动力之一。
1 RBF 神经网络的基本原理
RBF 神经网络是一个三层的具有任意逼近非线性能力的神经网络,其包括输入层、隐含层和输出层。其中,输入层到隐含层为非线性,而隐含层到输出层为线性即径向基函数的输出与权值乘积求和,必要时还加上偏置值。RBF 神经网络的径向基函数中心、宽度、隐层数、权值可调。常见的径向基函数为高斯函数,如式⑴所示:
2 RBF 神经网络的编程
本文论述开发的RBF神经网络软件名称为RBFKit,界面如图1 所示。
用户首先需要在文本文件上定义输入输出的样本组数和待测试数据的组数。同时用户还必须定义网络的输入层节点数、隐含层节点数和输出层节点数。另外,用户还要定义循环次数和精度要求以及在软件界面定义训练的学习率和动量因子参数。在数据格式正确的情况下, 由用户决定输入样本数据的先后次序并存于输入文本文件。
程序导入数据后归一化数据并按照隐含层节点数的大小随机从输入样本中选取若干数据点作为基函数中心初始值,然后按照k-means 聚类法[2,4-5]计算基函数的真正中心点的值,当中心点的选取值在可接受的很小的误差范围内时就确定为最终值。然后,程序计算基函数的宽度。中心点和宽度确定后就可以计算基函数输出值。因为期望值在输入文本文件中已经给出;而基函数的输出值乘以相应的权值并求和就是相应输出层节点的反归一化前的预测值了,这样就可以计算两者的误差。从而可以用权值更新法[2-3]来计算隐含层到输出层的权值。必须记住,最终的预测值要反归一化。当使用给定的学习率和动量因子进行学习满足循环次数或精度要求后训练就结束,相应的网络参数保存于生成的项目文件上。至此,用户可以在需要时手动改变项目文件中的测试数据的个数参数然后按格式提供相应的测试数据并按下“预测”就可生成相应的预测值文本文件。生成的预测值采用特定的数据格式保存方便用户同实际值进行比较并用EXCEL 软件绘制曲线图。
3 RBF 神经网络与BP 神经网络函数逼近的比较示例
举一个函数逼近的例子如下:
取48组原始数据作为训练数据运行软件学习并用这48 组数据中的输入样本数据作为测试数据来获得预测值进行函数逼近,从图2 可以发现满足精度条件的RBF 神经网络在此示例上给出了很好的函数逼近效果,相比之下比单隐含层BP 在相同精度要求0.01,相同的学习率0.01 和相同的动量因子0.5 情况下的函数逼近效果更好;而且,本示例的软件运行循环次数方面RBF 神经网络运行只用了2477 次,而BP 神经网络(输出层激励函数为ReLU 类型)则用了34798 次。
再举另外一个例子,如式(4)所示的函数的逼近,取125 组原始数据作为训练数据并运行软件学习然后用这125 组数据中的输入样本数据作为测试数据来获得预测值,逼近曲线如图3 所示,其中RBF 神经网络和BP 神经网络的学习率均采用0.008、動量因子采用0.5,精度要求为0.02。RBF 神经网络迭代了439 次后结束;BP 神经网络则迭代了45992 次后结束。
通过上述软件的良好运行和两个函数逼近示例获得的良好效果,证明了本RBF 神经网络软件编程的正确性和可用性。示例说明RBF 神经网络具有比BP神经网络更好的泛化能力,函数逼近效果更好,达到同等精度需要的循环次数更少。但是必须指出的是,要想达到同样的精度要求时RBF 神经网络通常需要比BP 神经网络更复杂的结构。比如图2 的函数逼近RBF 神经网络用了48 个隐含层节点,而BP 神经网络只用了8 个隐含层节点。
4 结束语
本文阐述了通过VB 6.0 软件实现RBF 神经网络的编程;同时,通过和BP 神经网络在函数逼近的比较示例验证了该开发的RBF 神经网络软件的正确性。该项研究较好地充实了作者编写的神经网络软件工具箱套件,包括ART2Kit、BPKit、CPNKit、RBFKit和SOMKit 共五种软件。本文论述开发的软件在深度学习软件的应用条件受限时(比如数据较少)仍有较好的选择应用价值,可具体用于预测、分类或函数逼近的场合。