神经网络中的遗传算法
Posted 卓晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了神经网络中的遗传算法相关的知识,希望对你有一定的参考价值。
简 介: 人工神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。遗传算法是一种引入自然选择和进化思想的优化算法,具有优良的全局寻优性能。在神经网络中借助遗传算法进行网络优化,可以充分利用两者的优点,实现网络权值的全局高精度寻优。本文从遗传算法的原理特点出发,分析了遗传算法相关的理论问题,以及遗传算法用于神经网络权值优化相关问题,并进行了仿真验证,说明了遗传算法和神经网络结合的有效性。
关键词
: 人工神经网络,遗传算法,权值优化,仿真
§01 引 言
在神经网络中,BP
网络是一种经典的学习算法,在20
年代末由David Runelhart
、Ronald Williams
、Yannn LeCun
等多人独立提出。实际上,BP
算法通常是含有隐层的多层前馈网络,解决了多层感知机的权值调整问题,具有良好的非线性映射、泛化和容错性能。然而,BP
学习算法用于权值调整存在一定的局限性,它的训练速度较慢,且在训练中容易陷入局部极小而无法收敛到全局的误差最小点,训练的结果较依赖于初始状态。为了改善这些问题,又出现了多种BP
的改进方法来确定网络的学习速率,主要包括使用启发式信息的方法如增加动量项和标准数值优化方法。
遗传算法(Genetic Algorithm, GA
)是一种模拟生物自然选择和淘汰的进化过程的优化算法,由Holland
在20
世纪60
年代提出[1]
,具有良好的并行全局搜索的性能。遗传算法和神经网络之间也有一定的联系,它可以用于优化网络的连接权值、网络结构或学习规则。以BP
算法为例,由于它本质上也是一个寻优的过程,因而遗传算法一般可用于神经网络的前期训练,先演化出一个较好的全局结果,后期再由BP
算法的误差反向传播过程计算出更高精度的网络权值。
§02 遗传算法
遗传算法是在进化论和基因遗传学原理的基础上发展起来的[2],主要思想是每一个物
种都在一代代的自然进化中继承一部分父代的基因特征,同时也会发生一定的基因变化,每一代都是那些具有更适应环境的基因特征的个体存活下来,经过若干代的自然选择和优胜劣汰,最终留下来的后代就具有最高适应度的基因结构。
2.1遗传算法基本步骤
(1)编码
遗传算法将解的概念表示为一个染色体个体,但是首先要将问题的解编码成有限长度字符串的形式,这样可以把问题的可行解映射到算法的搜索空间中。二进制编码是最常用的一种编码方法,但其显著缺点是精度不高,针对这一问题,出现了许多其他的编码方式,包括十进制编码、格雷码编码[3]等。
确定编码方式和个体长度后,遗传算法从初代种群开始,不断地产生一代代新的种群,可以使得新的种群的平均适应度越来越高。产生初始种群的方法通常分为两种[2],一是完全随机的方法,二是利用先验知识产生符合条件的一组样本,前者在应用中更为常见,后者则收敛更快。
(2)适应度函数
适应度函数是遗传算法不断迭代的重要依据。一般来说,适应度函数往往是由优化问题的目标函数变换得到的。从生物学的角度而言,一个物种对环境的适应度越高,则在进化过程中胜出和存活的概率越大,遗传算法同样追求最大的适应度。
(3)遗传算子操作
遗传算法使用一系列遗传算子来模仿自然界进化过程中的选择和基因演变现象,主要包括选择、交叉和变异算子。
① 选择
选择算子决定一代种群中的每个染色体个体是否被淘汰,为了保证适应度最高的个体能够进化到下一代,一般不直接采用随机选择的方法,而是综合考虑遗传的随机性和“适者生存”原则,常用的选择方法包括轮盘赌、排序选择、随机联赛选择[3]等。以随机联赛选择方法为例,每一次随机选择一定数目的染色体个体进行比赛,从中决定适应度最高的个体胜出保留到后代中。
② 交叉
交叉算子实际上是将交换个体之间的遗传物质,得到新的染色体个体。交叉过程一般分为两步,首先从新选择产生的染色体个体中随机两两匹配,再对染色体串进行不同位置
的字符交换。常用的交叉算子包括单点交叉、两点交叉、均匀交叉[3]等。
③ 变异
变异是对染色体个体中的部分字符以一定的概率进行改变,变异概率通常取较小的值,以保留优胜的染色体个体的绝大部分遗传物质,同时又产生了新的个体,且有可能具有更高的适应度,但相对于选择和交叉的作用稍弱一点。
2.2遗传算法的特点
遗传算法解决优化问题的策略是在随机搜索中增加了生物进化和自然选择的智慧,这是一种启发式的搜索方法。遗传算法的主要特点包括以下几个方面。
(1)解决问题范围广
遗传算法可以胜任大规模复杂问题的优化,只要选取合适的适应度函数,就能够提高问题解决的性能。该算法本身是用于解决无约束的优化问题的,但是对于较简单的有约束的优化问题,可以考虑采用一定的方法转化为无约束的问题,例如拉格朗日乘子法。此外,对于实际应用中的多目标问题,也可以采取一定手段转化为单目标函数,再进一步映射到遗传算法的适应度函数。
(2)全局寻优性能好
遗传算法不像普通的寻优算法那样从某一个点出发,而是从一个由若干染色体个体组成的种群出发搜索,而且每一次可以同时处理和评估种群中的多个个体,可以有效地防止搜索过程收敛于局部最优解,提高了全局收敛的可能性。
(3)参数对算法性能存在影响
遗传算法同其他的算法一样,需要选取合适的参数以获得更好的搜索和求解性能。在遗传算法中,调节染色体个体数目、交叉率和变异率就会改变进化过程中的行为表现,进而可能会使得算法的性能发生较大变化,例如算法的收敛性。以变异率为例,过小的变异率可能会使得算法过早收敛于局部最优,而过大则可能错失了真正的全局最优解[4]。
§03 问题研究
遗传算法的效率在很大程度上取决于其参数的设计和调整。虽然标准的遗传算法的参数通常有一定的推荐范围,但是在解决实际问题中还是以符合问题特点和需要设计具体的参数更佳。因此,在讨论参数设计问题的理论基础上,给出了用遗传算法解决旅行商问题
(Travelling Salesman Problem, TSP)的仿真和参数分析。
3.1遗传算法参数设计
在遗传算法的参数设计常见的讨论中,首先需要考虑的就是种群大小,它决定了一代种群中染色体个体的数目。如果种群大小过小,则经过交叉和变异过程后遗传算法的搜索空间仍然较小;如果种群大小过大,遗传算法的速度会随着染色体个数增加而不断下降。实际上,在一定的条件下,尤其是对于特定的优化问题和编码方式已经决定时,增加种群大小的意义并不大,算法收敛速度并不会得到提高。
交叉算子也是遗传算法中至关重要的一环。如果没有交叉这一步操作,则后代完全是父代染色体种群的拷贝,但是交叉的概率又不宜过大,因为交叉的目的正在于希望新一代的种群在保留父代的较好的基因特征的同时可能还会获得更好的基因。
变异算子的作用虽然没有交叉那么大,但是也需要合理的设计,其目的是防止遗传算法陷入局部最优,正如上面提到的,变异概率需要控制在较小的范围内,否则遗传算法在某种程度上就退化成了随即搜索的优化方法。
很多学者已经就遗传算法参数设计提出了自己的观点,为用遗传算法解决优化问题提供了推荐的范式。DeJong[5]提供了一种大多数遗传算法的参数设计标准,而且被证明是在函数的优化问题上相对更有效的参数组合。Grefenstette[6]也给出了一种较受欢迎的参数组合,不过它的使用场景通常是种群大小较小的情况,这就意味着优化问题的变量相对较少。这两种参数组合设计如表1所示。
▲ 图3.1.1 遗传算法参数组合
3.2仿真分析
为了更直观地感受遗传算法中的参数对算法收敛的影响,选取了人工神经网络作业中原本使用SOFM网络来解决的旅行商问题进行仿真和测试。该问题的城市位置示意图如图
1所示,共有10个需要经过的地点,其位置坐标如表2所示。
▲ 图3.2.1 旅行商问题示意图
▲ 图3.2.2 旅行商问题各点的坐标
对于这10个位置,选取整数编码方式,即城市①⑩就被编码为整数110。在选择过程中,使用染色体个数为2的随机联赛选择方法。在交叉过程中,对于两两匹配的染色体个体,各自随机选择一串基因并交换到对方的头部,再将各自染色体后面重复的基因部分删除。在变异过程中,考虑到无法像二进制编码那样随机位变异,因此包含两种变异模式的选择,其一是随机交换两位的数值,其二是随机选择两位,并将前者插入到后者之后的位置上。遗传算法解决问题的示意结果如图2所示,图2(a)给出了最终的路线图,图2(b)说明了优化的过程,最终总距离为2324.76。
▲ 图3.2.3 由遗传算法解决旅行商问题结果示意图
(1)种群大小
对于该TSP问题,由于城市数目并不是很多,因此种群数目不需要很大。对于种群大小从20到60进行遍历,观察其他参数固定情况下遗传算法收敛的结果和收敛时间,结果如表3所示。当交叉概率取0.8、变异概率取0.1时,随着种群大小不断增大,遗传算法收敛得到的总距离总体呈现先减小再增大的趋势,而耗时则越来越长。遗传算法收敛速度会随着种群数目增大而减小,这是很容易理解的。从总距离的大小来看,该问题中种群大小无需设置过大,也不应设置过小,因为可能随着搜索空间减小无法收敛到全局最优,种群大小设计在40~50之间比较合适。
▲ 图3.2.4 种群大学对于遗传算法收敛收敛
(2)交叉概率
在确定了种群大小的合适范围后,选取种群大小为40,变异概率为0.1,观察交叉概
率从0.50.9遍历情况下遗传算法收敛的结果和收敛时间,如表4所示。随着交叉概率不断增大,遗传算法收敛到的总距离没有太大变化,基本维持在2324.7632,交叉概率较小时最终未能收敛到全局最优,交叉概率为0.9时也出现了一点波动,总体来说交叉概率应取较大的值,在0.70.9之间都是合适且较稳定的。而交叉概率的变化并不影响算法的收敛时间,因为交叉过程的行为相对于遗传算法整体的全局搜索来说是极小的一部分。
▲ 图3.2.5 交叉概率对于遗传算法解决TSP问题收敛的影响
(3)变异概率
在确定了交叉概率的范围后,选取种群大小为40、交叉概率为0.8。由于理论分析已经说明交叉概率应当取较小的值,因此观察变异概率从00.2遍历情况下遗传算法收敛的结果和收敛时间,如表5所示。随着变异概率不断增大,遗传算法收敛得到的总距离逐渐出现波动,为了防止算法无法收敛到全局最优,变异概率的合适范围应为00.1之间,为了保证搜索空间中染色体个体的多样性,变异概率最好不取为0。同样地,变异概率对算法的收敛时间的影响也是微乎其微的,可以忽略不计。
▲ 图3.2.6 变异概率对遗传算法解决TSP问题瘦脸的影响
§04 优化NN
4.1遗传算法与神经网络融合
遗传算法和人工神经网络(Artificial Neural Networks)都是从仿生学的角度出发,研究自然界信息处理方式。遗传算法模拟生物进化中的选择、交叉、变异等过程,在多维空间中重新组合可行解,再从中选择最优过程[7]。遗传算法与人工神经网络的融合让我们对自然界学习进化过程有了更深入的了解。人工神经网络的设计,本质上是根据输入输出的要求性能在黑箱中构建网络结构。人工方法设计神经网络十分困难,没有一套标准的设计方法可以完成足以处理某种特定任务的网络。遗传算法避免了人工设计神经网络的困难,可以实现神经网络设计的自动化。
经典的BP算法本质上是梯度下降原理。梯度下降过程中训练速度较慢,并且容易陷入局部最小值。而遗传算法属于全局优化算法,能够在复杂的、多峰目标函数中避免受困于局部最优解,很好地克服了BP算法的缺陷。
群体遗传算法网络性能评价训练前的网络训练后的网络训练集检验集
▲ 图4.1.1 遗传算法与神经网络结合
图3 遗传算法与神经网络结合
4.2遗传算法用于神经网络编码
遗传算法能够对神经网络的结构进行编码。用遗传算法确定的参数越多,可以提高神经网络设计的自动化程度,但同时编码串长度更长,搜索时间更长。因此在网络设计中由GA选定的参数需要做出取舍[8]。
随机产生n个编码,构建初始集,ANN模型编码方案如下:
对权值进行编码时,将神经网络中的权值编码为一个染色体个体,不同数目的权值用相应维数的实数变量表示。对阈值B进行编码,阈值向量是一个维的的实数向量,其中s、n分别为隐层和输出层神经元个数。实数编码可以直接描述连续参数,避免二进制编码的负面影响,同时可以在搜索空间较大时有效提高运算精度和速度。遗传算法二进制码串与网络权值转换
关系如下
W t ( i , j ) = W min ( i , j ) + B i n r e p l a c e ( t ) 2 t − 1 [ W max ( i , j ) − W min ( i , j ) + 1 ] W_t \\left( i,j \\right) = W_\\min \\left( i,j \\right) + Binreplace\\left( t \\right) \\over 2^t - 1\\left[ W_\\max \\left( i,j \\right) - W_\\min \\left( i,j \\right) + 1 \\right] Wt(i,j)=Wmin(i,j)+2t−1Binreplace(t)[Wmax(i,基于遗传算法的BP神经网络在汇率预测中的应用研究(Matlab代码实现)