基于Matlab遗传算法和神经网络结合的函数逼近实现和测试
位置: 首页 >专题范文 > 公文范文 > 文章内容

基于Matlab遗传算法和神经网络结合的函数逼近实现和测试

2022-10-19 18:54:02 投稿作者:网友投稿 点击:

摘要:为了开发对科研实验数据的非线性关系精确建模工具,该文讨论了将遗传算法GA和神经网络算法结合,并使用Matlab软件实现计算过程。针对一个非线性测试函数逼近问题,设计了Matlab软件的GA算法的实现过程,并实验测试分析了GADS工具箱算子选择和参数设置。比较了单纯GA方法和GA结合Levenberg-Marquardt BP方法局部寻优的效果。结果表明实验中设计的基于Matlab的GA神经网络计算方案是一种有效的高精度模型,算法设计实现过程有指导意义,能为各领域提供有力复杂非线性建模工具。

关键词:神经网络;遗传算法;非线性函数逼近;Matlab;GADS

中图分类号:TP18文献标识码:A文章编号:1009-3044(2009)35-10063-03

Nonlinear Function Approximation Based on Genetic Algorithm and Artificial Neural Network Implemented Using Matlab

HE Zheng-da1, XU Mei2

(1.Department of Basic Sciences, China Pharmaceutical University, Nanjing 210009, China; 2.Jiangsu Chia Tal-tianqing Pharmaceutical Co Ltd, Nanjing 210038, China)

Abstract: In order to develop an exact non-linear relationship scientific experimental data modeling tool, the combination of genetic algorithm with artificial neural network and its realizations based on Matlab were discussed in this paper. To solve a nonlinear test function approximation problem, an implementation process of the GA algorithm based on Matlab was designed. GA operators selection and parameter settings of GADS toolbox were evaluated and analyzed. Comparison of pure GA algorithm with Levenberg-Marquardt BP Local optimization after GA method was made. The results demonstrate that the designed hybrid GA–NN method is an effective high-precision model which can be used in many areas for complex non-linear modeling.

Key words: ANN; GA; nonlinear test function approximation; Matlab; GADS;

在科研中遇到的研究对象影响元素和因变量之间呈现高度的非线性关系,由于噪声影响和内在影响机制不明,建立解析式数学模型是很困难的。人工神经网络ANN采用并行结构和处理机制,具有很强的容错性以及自学习、自组织及自适应能力,能够模拟复杂的非线性映射[1-2],是一种优秀的函数逼近建模工具。众多ANN模型[3]中,多层前向神经网络MLFN(multilayer feed forward neural network)采用反向传播学习算法(BP算法),广泛应用于函数逼近、函数优化、分类与模式识别、控制等。遗传算法(Genetic Algorithm,简称GA)是一种随机优化搜索算法具有全局性、鲁棒性强、适于并行处理等优点[4]。研究表明,GA与ANN结合可以获得高精度、更好泛化能力的函数模型。

遗传算法结合神经网络[5-6],可以利用遗传算法进化神经网络的连接权、网络结构和学习规则[7-8]。其中GA进化网络连接权具有较高实用意义。本文采用GA进化ANN连接权。BP等ANN算法是基于梯度算法,要求目标函数可微,且依赖于初始权值,不当的初始权值会导致网络收敛速度慢与陷入局部最优的缺陷,特别对高维优化问题,由于误差性能面复杂风险更大。GA可克服BP算法的缺陷。GA有优良的全局搜索能力,可并行搜索多解在整个解空间找到最优解,且有逃离局部优解能力。GA不需要目标函数梯度信息,当目标函数不可微、多极值、遗传进化算法具有明显的优势。但GA自身也有局部搜索能力差的缺陷。

本文用一个非线性测试函数进行GA和神经网络方法进行函数逼近试验。实验基于Matlab的ANN和GA工具箱。讨论了GA算法训练ANN权值偏置的实现步骤。并测试了Matlab工具箱的GA不同参数设置的效果,以及函数逼近的GA和神经网络结合方式的优劣。

1 GA学习神经网络的权值的步骤

GA搜寻(训练)神经网络的权值的一般步骤为:Step1,首先确定神经网络结构,将网络权值偏置向量编码成GA算法染色体。Step2,设定合适的遗传算法群体规模N。产生N个初始染色体,形成初始种群。Step3,将染色体译码后的神经网络代入训练样本集计算网络输出和误差目标函数,根据目标函数计算个体适应度,适应度标定。根据标定后的适应度选择个体。Step4,选择后的个体进行交叉重组、变异遗传操作,形成新一代种群。Step5,将新一代种群染色体解码成神经网络,计算网络误差目标函数。判断误差是否满足要求,不满足要求转step3,满足则转step6。Step6,GA算法终止,挑选末代种群中最佳个体解码成网络最优权值偏置。

2 GA与神经网络结合进行函数逼近的测试

GA与神经网络结合进行函数逼近,除了上面指出的一般步骤,具体实现方法和参数选择需要研究,本文将针对一个非线性函数逼近问题对GA参数选择设计和GA与ANN算法结合方式进行实验。

实现和测试都是基于Matlab的神经网络和遗传算法与直接搜索工具箱(GADS Toolbox)。在GUI界面的GA工具箱中,创建初始种群的主要参数是数据类型(Population type)、种群的大小(Size of population),初始种群取值的范围(Initial range)等;适应度尺度变换函数(Fitnness scaling)有:排序(Ranking)、比率(Proportional)、最佳比例(Top)、线性转换(Shift linear)、自定义等;选择算子Selection function有:随机均匀分布(Stochastic uniform)、剩余(Remainder)、均匀(Uniform)、轮盘赌(Roulette)、锦标赛(Tournament)等。交叉参数(Crossover function)有:离散重组(Scattered)、启发式重组(Heuristic)、单点交叉(Simple point)等五种交叉方式,Scattered;Single point;Two point;Intermediate等也可以自定义。交叉操作还需设置交叉概率。变异函数有高斯变异(Gaussian)、均匀变异(Uniform),也可以自定义。

2.1 测试函数

测试函数自变量p,定义域为[-3,3],自变量数据间隔为0.1,自变量集合[-3,-2.9,-2.8…,2.8,2.9,3]对应的数据组号分别为[1,2,3…,58,60,61]。目标函数为,数据集共61个样本对。函数图像类似于一个墨西哥草帽。

2.2 GA学习网络权值实现和GA参数选择测试

MLFN网络的结构确定为单隐层1-7-1网络,其中隐层神经元数目参照经验公式[9],并且实验动态删减确定。隐层和输出层都采用tansig传输函数。考虑输出层传输函数输出是有限[-1,1]区间,另为了避开输出饱和区,输入数据输出数据都标准化到[-0.7,0.7]中。将数据集划分为:校验集为样本集组号(1,10,11,18,21,45,49, 53,59,),测试集为组号(3,4,7,9,24,25,32,34,35,39,41,52),其余数据为训练集。

将选定网络权值偏置用实数编码(选定Population type为Double vector)为长度为22基因的染色体串:

这样省去了编码解码过程,提高了运算精度和速度,种群稳定性强[10-11],避免了二进制编码巨大码长。

种群规模(Population size)M一般最好是个体基因数2到5倍。Matlab中默认为20,本实验中,在GA参数测试中种群规模为70,GA与BP算法结合测试中取为110正式计算。Matlab提供的种群初始化有uniform和feasible population以及自定义。由于这里种群初始化实际上就是网络初始化,所以也可以用神经网络NW方法初始化个体。

遗传算法评价个体性能的目标函数设计为训练集所有40个样本网络输出α与目标输出t的标准化的均方误差:

由于网络进化的方向是使均方误差最小,所以采用目标函数倒数1/F作为适应度函数。然后使用Ranking尺度变换按1/F排序的名次进行适应度的标定,防止算法早熟和进化后期GA算法停滞。

在以上网络结构,编码方案,种群初始化确定后,下面对Matlab中GA算子选择和参数设置进行测试,每类测试是在其他类参数设置相同,同样初始随机态的条件下,逐个选用此类算子或参数中不同方案,各完成100代GA进化,观察最后代的最佳和平均个体目标函数值。目标函数值小的方案为优选。

选择方法测试:实验确定相同条件下使用Stochastic uniform选择算子效果良好。Stochastic uniform提供了零偏差和最小个体扩展,是一个有效的选择方法,效果优于根据适应度的比例进行选择的轮盘赌方法。

再生策略测试:子代由精英,交叉重组产生个体,变异产生个体组成。精英是选择最佳适应度的n个个体直接进入子代,这可以使GA算法收敛于最优解。相同条件下多次测试2,4,6,8,10不同的精英数目,发现精英数目为2时结果良好。精英数目过多会导致很多高适应度的个体没有进行遗传操作,也就没有有效进行优良基因的扩散与组合。重组概率即多少比例的个体会由重组的方式产生,是一个影响算法性能的重要参数。在测试中其他参数相同,同样初始随机态的条件,改变重组概率,实验结果基本类似。图1是其中一次实验的最佳目标函数值对重组率的图,具有代表意义。从图1中可以看出合适的重组率是0.8。

重组与变异测试:重组与变异的方法是关键的遗传操作。在精英数目为2,重组概率为0.8的参数设置下测试各种重组和变异方式的组合,每种组合计算100代,观察最后一代最佳个体解码后得到的标准化均方误差目标函数值。测试结果显示在表1。

从表1中可以看到离散重组总体效果要比算术重组好些。原因可能是算术重组对基因进行线性运算,使一些好基因来不及反应在高适应度个体里就发生了变化。从表1中可以看出变异方式中自适应变异的效果比较好。下面分析这种差异的原因。均匀变异是个固定小概率的变异,能够使在全搜索空间上变换搜索点,但它难以对重点区域进行局部搜索,搜索效率不能保证。高斯变异逐代减少基因的变异方差,在进化的末期有利于算法收敛,但由于收敛的代数难以预测,所以有可能过早限制了变异,降低算法效果。这里采用高斯变异的参数Scale=0.8和Shrink=0.5,相对来说条件比较宽松。从图2中可以看出高斯变异个体的平均距离逐渐降低,个体范围的过早缩减也导致了算法进展不大。自适应变异采用动态变异概率,个体集中时采用高变异率,个体分散时采用低变异率,这样有效保证了种群的多样性。另外自适应变异对高适应度优良个体采用低变异率,也保证了优良个体的存活和繁衍。在图3中,一旦个体平均距离下降,很快就通过高变异率扩散,加速引进优良基因,个体平均距离增加。自适应变异最佳个体目标函数值持续下降。

2.3 GA与神经网络结合方式测试

GA与神经网络结合进行权值的学习方式主要有三类:1)完全用遗传算法替代BP算法,找到网络的最优权值或近似最优权值。在这里称之为单纯GA优化。2)先用遗传算法找到网络的初始权值分布,然后用BP算法局部寻优。3)其他方式,有文献指出可以用GA和BP算法轮流学习网络权值;还有文献提出在遗传操作中加入按一定的概率实现BP算子。

2.3.1 单纯GA方式GA计算

根据上面的测试,确定遗传算法参数。种群规模为110个个体,初始种群基因为[-1,1]中的随机数,并且初始种群是通过预先搜索产生的较高适应度个体;适应度计算方法为排序方法;选择方法随机遍历抽样法;精英数目取2,交叉重组概率为0.8;采用分散重组,自适应变异。遗传算法代数设定为500代。

下面是遗传算法计算的目标函数值变化图。从图4中可以看出平均目标函数值反复震荡,说明算法维持很好的种群多样性。400代后算法最佳个体均方误差目标函数值基本趋于收敛,进化很慢。最后种群最佳个体目标函数值为0.00229。

由于算法是通过训练集计算的。为提高网络泛化能力和预测能力,用校验集样本来挑选最优解,将末代群种个体解码得到网络,然后用校验集代入网络计算输出与目标的均方误差。均方误差最小的网络对应的个体就是挑选出来的最优解。将此最优解解码成网络权值和偏置得到的网络计算输出与目标函数值的最小误差0.0003,最大误差0.6354,均方误差0.0866。图6显示的是这种方式网络的计算输出和实际曲线图。从图6中可以看出,纯粹采用遗传算法得到的网络计算误差较大,预测精度不高,不能完全体现遗传神经网络的优越性。

2.3.2 GA后LM BP算法局部优化

将遗传算法最后代种群中挑选出来的最佳解,解码成网络的初始权值,用BP算法进行训练,完成局部寻优。这里使用Levenberg-Marquardt算法,设置的参数为μ=10-3,最小梯度为10-10,μ增大乘数因子为10,μ减小乘数因子为0.1,最大μ为1010。训练采用校验集提前中止法。图5为GA得到最优解解码成初始状态的网络的训练图。

训练后的网络计算输出与目标函数值的最小误差0,最大误差0.0376,均方误差0.00018。图7显示的是这种方式网络的计算输出和和实际曲线图,通过训练局部寻优的网络函数拟和效果非常好,误差小到可以忽略。从图8中可以看到校验集和测试集预测误差很小,两集的相关系数达到0.9996和0.99999。局部优化的网络具有良好的泛化能力,网络预测能力很好。

从单纯GA方式和GA后BP算法优化两种方式的对比上可以看出:由于GA算法局部搜索能力差,单纯GA方式后期费时长很难达到高精度。先GA,后LM BP的方式可以达到比一般BP算法高的精度。GA可在早期对神经网络的权值偏置解做有效的全面逼进,找到最优解空间附近,降低了算法局部最小风险,为后来的BP算法提供一个良好的起点,产生了高精度,高泛化能力。GA后的LM BP算法可在局部迅速寻找最优点,提高计算效率。

3 结论

本文用Matlab实现了GA算法学习ANN权值,并且通过测试选定Matlab GADS工具箱算子与参数设置,对提出的非线性测试函数有效逼近。该过程对其它领域非线性函数逼近和优化问题也有指导意义。并通过实验实现和比较了单纯GA和GA后LMBP寻优方式的效果,显示GA后LMBP是一种优秀的非线性函数逼近模型。

参考文献:

[1] 谢承泮.神经网络发展综述[J].科技情报开发与经济,2006(12):156-158.

[2] 汪镭,周国兴,吴启迪.人工神经网络理论在控制领域中的应用综述[J].同济大学学报: 自然科学版,2001,29(3):357-361.

[3] 张剑湖, 叶峰.人工神经网络的模型、特征及其发展方向[J].现代电子技术,2004(12).

[4] 郑立平,郝忠孝.遗传算法理论综述[J].计算机工程与应用,2003,21(20):50-54.

[5] 赵志刚, 单晓虹.一种基于遗传算法的RBF神经网络优化方法[J].计算机工程,2007(6):211-212.

[6] 郭丽霞,康宝生.基于微种群遗传算法和RBF神经网络的散乱数据重建方法[J].计算机应用与软件,2008(1):33-35.

[7] 姚望舒,万琼,陈兆乾,等.进化神经网络研究综述[J].计算机科学,2004,31(3):121-129.

[8] Leung Fhf Lam ,Hk Lingsh, et al. Tuning of the structure and parameters of a neural using an improved genetic algorithms .IEEE Transactions on Neural networks, 2003,14(1):79-88.

[9] 袁曾任.人工神经元网络及其应用[M].北京:清华大学出版社,1999.

[10] 范睿,李国斌,景韶光.基于实数编码遗传算法的混合神经网络算法[J].计算机仿真,2006(1):172-175.

[11] 赵青,杨倩.遗传算法三种编码策略的比较研究[J].重庆文理学院学报:自然科学版,2008(2):18-19.


推荐访问:神经网络 逼近 遗传 算法 函数

猜你喜欢