神经网络中的遗传算法

简 介: 人工神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。遗传算法是一种引入自然选择和进化思想的优化算法,具有优良的全局寻优性能。在神经网络中借助遗传算法进行网络优化,可以充分利用两者的优点,实现网络权值的全局高精度寻优。本文从遗传算法的原理特点出发,分析了遗传算法相关的理论问题,以及遗传算法用于神经网络权值优化相关问题,并进行了仿真验证,说明了遗传算法和神经网络结合的有效性。

关键词 人工神经网络遗传算法权值优化仿真

引 言
目 录
Contents
遗传算法
2.1 1遗传算法基本步骤
2.2 2遗传算法的特点 ...
问题研究
3.1 1遗传算法参数设计
3.2 2仿真分析 ...............
优化NN
4.1 1遗传算法与神经网络融合 .......................
4.2 2遗传算法用于神经网络编码 ...................
4.3 3基于遗传算法的神
经网络学习算法
仿真与分析
结 论
6.1 参考文献

 

§01   言


  神经网络中,BP网络是一种经典的学习算法,在20年代末由David RunelhartRonald WilliamsYannn LeCun等多人独立提出。实际上,BP算法通常是含有隐层的多层前馈网络,解决了多层感知机的权值调整问题,具有良好的非线性映射、泛化和容错性能。然而,BP学习算法用于权值调整存在一定的局限性,它的训练速度较慢,且在训练中容易陷入局部极小而无法收敛到全局的误差最小点,训练的结果较依赖于初始状态。为了改善这些问题,又出现了多种BP的改进方法来确定网络的学习速率,主要包括使用启发式信息的方法如增加动量项和标准数值优化方法。

  遗传算法(Genetic Algorithm, GA)是一种模拟生物自然选择和淘汰的进化过程的优化算法,由Holland20世纪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.1.1 遗传算法参数组合

3.2仿真分析

  为了更直观地感受遗传算法中的参数对算法收敛的影响,选取了人工神经网络作业中原本使用SOFM网络来解决的旅行商问题进行仿真和测试。该问题的城市位置示意图如图
  1所示,共有10个需要经过的地点,其位置坐标如表2所示。

▲ 图3.2.1 旅行商问题示意图

▲ 图3.2.1 旅行商问题示意图

▲ 图3.2.2 旅行商问题各点的坐标

▲ 图3.2.2 旅行商问题各点的坐标

  对于这10个位置,选取整数编码方式,即城市①⑩就被编码为整数110。在选择过程中,使用染色体个数为2的随机联赛选择方法。在交叉过程中,对于两两匹配的染色体个体,各自随机选择一串基因并交换到对方的头部,再将各自染色体后面重复的基因部分删除。在变异过程中,考虑到无法像二进制编码那样随机位变异,因此包含两种变异模式的选择,其一是随机交换两位的数值,其二是随机选择两位,并将前者插入到后者之后的位置上。遗传算法解决问题的示意结果如图2所示,图2(a)给出了最终的路线图,图2(b)说明了优化的过程,最终总距离为2324.76。

▲ 图3.2.3 由遗传算法解决旅行商问题结果示意图

▲ 图3.2.3 由遗传算法解决旅行商问题结果示意图

  (1)种群大小

  对于该TSP问题,由于城市数目并不是很多,因此种群数目不需要很大。对于种群大小从20到60进行遍历,观察其他参数固定情况下遗传算法收敛的结果和收敛时间,结果如表3所示。当交叉概率取0.8、变异概率取0.1时,随着种群大小不断增大,遗传算法收敛得到的总距离总体呈现先减小再增大的趋势,而耗时则越来越长。遗传算法收敛速度会随着种群数目增大而减小,这是很容易理解的。从总距离的大小来看,该问题中种群大小无需设置过大,也不应设置过小,因为可能随着搜索空间减小无法收敛到全局最优,种群大小设计在40~50之间比较合适。

▲ 图3.2.4 种群大学对于遗传算法收敛收敛

▲ 图3.2.4 种群大学对于遗传算法收敛收敛

  (2)交叉概率

  在确定了种群大小的合适范围后,选取种群大小为40,变异概率为0.1,观察交叉概
  率从0.50.9遍历情况下遗传算法收敛的结果和收敛时间,如表4所示。随着交叉概率不断增大,遗传算法收敛到的总距离没有太大变化,基本维持在2324.7632,交叉概率较小时最终未能收敛到全局最优,交叉概率为0.9时也出现了一点波动,总体来说交叉概率应取较大的值,在0.70.9之间都是合适且较稳定的。而交叉概率的变化并不影响算法的收敛时间,因为交叉过程的行为相对于遗传算法整体的全局搜索来说是极小的一部分。

▲ 图3.2.5 交叉概率对于遗传算法解决TSP问题收敛的影响

▲ 图3.2.5 交叉概率对于遗传算法解决TSP问题收敛的影响

  (3)变异概率

  在确定了交叉概率的范围后,选取种群大小为40、交叉概率为0.8。由于理论分析已经说明交叉概率应当取较小的值,因此观察变异概率从00.2遍历情况下遗传算法收敛的结果和收敛时间,如表5所示。随着变异概率不断增大,遗传算法收敛得到的总距离逐渐出现波动,为了防止算法无法收敛到全局最优,变异概率的合适范围应为00.1之间,为了保证搜索空间中染色体个体的多样性,变异概率最好不取为0。同样地,变异概率对算法的收敛时间的影响也是微乎其微的,可以忽略不计。

▲ 图3.2.6 变异概率对遗传算法解决TSP问题瘦脸的影响

▲ 图3.2.6 变异概率对遗传算法解决TSP问题瘦脸的影响

 

§04 化NN


4.1遗传算法与神经网络融合

  遗传算法和人工神经网络(Artificial Neural Networks)都是从仿生学的角度出发,研究自然界信息处理方式。遗传算法模拟生物进化中的选择、交叉、变异等过程,在多维空间中重新组合可行解,再从中选择最优过程[7]。遗传算法与人工神经网络的融合让我们对自然界学习进化过程有了更深入的了解。人工神经网络的设计,本质上是根据输入输出的要求性能在黑箱中构建网络结构。人工方法设计神经网络十分困难,没有一套标准的设计方法可以完成足以处理某种特定任务的网络。遗传算法避免了人工设计神经网络的困难,可以实现神经网络设计的自动化。

  经典的BP算法本质上是梯度下降原理。梯度下降过程中训练速度较慢,并且容易陷入局部最小值。而遗传算法属于全局优化算法,能够在复杂的、多峰目标函数中避免受困于局部最优解,很好地克服了BP算法的缺陷。

  群体遗传算法网络性能评价训练前的网络训练后的网络训练集检验集

▲ 图4.1.1 遗传算法与神经网络结合

▲ 图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)+2t1Binreplace(t)[Wmax(i,j)Wmin(i,j)+1]

  其中, B i n r e p l a c e ( t ) Binreplace\left( t \right) Binreplace(t) 为有 l l l 位字符表示的二进制整数; [ W max ⁡ ( i , j ) , W min ⁡ ( i , j ) ] \left[ {W_{\max } \left( {i,j} \right),W_{\min } \left( {i,j} \right)} \right] [Wmax(i,j),Wmin(i,j)] 为各权值的取值范围。

4.3基于遗传算法的神经网络学习算法

  (1)参数设定和适应度函数的选择

  网络参数除了网络层数、每层的神经元数,还有遗传算法中的种群规模(pop_size)、交叉概率( P C P_C PC )、变异概率( P m P_m Pm )[9]。网络隐层取Sigmoid函数 f ( x ) = 1 1 + e − x f\left( x \right) = {1 \over {1 + e^{ - x} }} f(x)=1+ex1 。激活函数可以根据不同的输出范围进行选择。设训练网络中输入神经元数为k,输出神经元数为n,则适应度函数为网络的全局误差定义为 s s e = ∑ p = 1 k ∑ j = 1 n ( d p j − o p j ) 2 s_{se} = \sum\limits_{p = 1}^k {\sum\limits_{j = 1}^n {\left( {d_{pj} - o_{pj} } \right)^2 } } sse=p=1kj=1n(dpjopj)2 。神经网络权值被编码为遗传过程中的染色体,因此适应度函数和神经网络的误差成反比关系。

  (2)初始化和适应度计算

  随机产生初始种群,其中每个都是由权值向量组成的神经网络,为连接权的数目,权值向量和阈值向量都为维实数向量。用正态分布的随机数初始化。根据适应度函数计算出对应的适应度值,适应度值越大,误差越小,对应的染色体越12好。根据适应度值从小到大,也就是染色体由好到坏排序。染色体越好,对应设定的概率越高,在后代的进化中越容易被保留。

  (3)算子操作

  选择算子:选择过程以种群规模为基础,从这一代种群中随机选择若干染色体个体,将适应度最高的个体遗传到后代中。对于pop_size次的迭代次数,不断比较适应度是否符合期望。最后保留最佳个体,可以使搜索过程收敛到全局最优解。上述过程用算法表示如下:

  • 交叉算子:交叉的方法基于凸集理论。首先随机产生交叉操作的父代:从区间中产生随机数,若,则选择作为父代,该操作迭代次。交叉算子定义为,。参数表示交叉概率,种群每次都有个染色体进行交叉操作。假设已经选择了作为父代,将选择的父代随机分成对进行交叉。同一父代允许进行二次交叉来产生更好的后代。交叉完成后,对网络进行性能评估来考察优劣。 [0,1]rcrPiv_popsize’(1)acabc=−+‘(1)bcbca=−+cP_cPpopsize’''123,vvv

  • 变异算子:参数表示变异概率,则执行变异行为的染色体个数为。变异算子父代的选择和交叉算子很相似:从区间中产生随机数,若,则选择作为父代,迭代次。变异过程如下:首先随机产生一个和染色体权值维度相同的向量作为变异方向;然后用父代染色体的权值和对应的向量相加。变异结束后把结果还原成神经网络,进行性能评估。若子代性能优于父代时,变异结束;否则,进行下一次变异。

  • 保留算子:保留算子将保留每次群体中产生的最好的个体。如果网络误差满足要求或者达到设定的迭代次数,进化停止,输出进化结果。如果最终输出结果不满意,可以将得到的最优染色体作为神经网络的一组权值再次传递给神经网络,让网络进行二次训练,直到得到满意的结果[10]。

 

§05 仿真与分析


  用遗传算法可以训练神经网络的权系数。用遗传算法优化神经网络解决异或问题:输入在之间,输入节点两个神经元;输出在,输出节点一个神经元。网络结构如下图,输入样本共四个:

▲ 图5.1 异或问题神经网络

▲ 图5.1 异或问题神经网络

  (1)网络个体编码

  网络中存在六个权系数和三个阈值。使用8bit的有符号整数编码表示,共九个参数由72bit表示。前48bit分别对应,后面24bit对应,8bit分别表示-128~127之间的整数。 126,www123,bbb126,www123,bbb

  (2)个体适应度

  对于任一个72bit 0-1串,根据上述编码,将其转换成网络的权系数以及偏移量。转换好的九个参数代入网络中,适应度由期望输出和传递函数输出决定。个体适应度定义公式如下,其中,分别是样本网络输出和期望输出:

C = 1 ∑ i = 1 4 ∣ y i − t i ∣ C = {1 \over {\sum\limits_{i = 1}^4 {\left| {y_i - t_i } \right|} }} C=i=14yiti1

  (3)构建选择,变异,交叉算子

  (4)遗传算法进化

  对于给定的群体,先按照适应度选择比率的个体作为下一代遗传群体;对群体中按照比例进行变异;变异后,在按照比例进行交叉;在选择变异交叉后的个体中,适应度高的群体补足群体个数。 cPmPcP

  (5)进化结果

▲ 图5.2 进化参数表格

▲ 图5.2 进化参数表格

  演变参数不变,演变过程中适应度随迭代过程变化如图5所示。

▲ 图5.3 演变过程中适应度变化

▲ 图5.3 演变过程中适应度变化

 

§06   论


  经网络是一种有力的学习算法,它涵盖了各种各样的网络模型和算法,而遗传算法则是一种解决优化问题的优化算法。这两个概念虽然分别隶属于不同的层次,但是却可以进行有机结合,尤其是将遗传算法用于优化BP网络的权值。

  遗传算法用于神经网络权值寻优的过程后,明显降低了神经网络陷入局部最优的可能性,减少了神经网络的震荡,加快了收敛速率,得到基本符合学习目的的全局最优解。遗传算法在多峰函数的优化过程中,具有无比的优越性,避免了BP算法的不足。特别是神经网络用于复杂对象控制的情况下,无法给出神经网络准确的期望输出,只能给出整个系统性能的评价时,可以先使用遗传算法完成初步的网络训练,将网络权值先稳定在一个相对全局最优的位置,再利用误差反向传播和梯度下降实现权值的精细计算。

参考文献

[1] Holland J H. Concerning efficient adaptive systems[M]. Washington: Spartan Books, 1962.
[2] 韩力群, 施彦. 人工神经网络理论及应用[M]. 北京: 机械工业出版社, 2016.
[3] 葛继科,邱玉辉,吴春明,蒲国林.遗传算法研究综述[J].计算机应用研究,2008,(10):2911-2916.
[4] 任谢楠. 基于遗传算法的BP神经网络的优化研究及MATLAB仿真[D].天津师范大学,2014.
[5] Jong K A D , Spears W M . An Analysis of the Interacting Roles of Population Size and Crossover in Genetic Algorithms[C]// International Conference on Parallel Problem Solving from Nature. Springer, Berlin, Heidelberg, 1990.
[6] Grefenstette, J. J . Optimization of Control Parameters for Genetic Algorithms[J]. Systems Man & Cybernetics IEEE Transactions on, 1986, 16(1):122-128.
[7] 李伟超,宋大猛,陈斌.基于遗传算法的人工神经网络[J].计算机工程与设计,2006(02):316-318.DOI:10.16208/j.issn1000-7024.2006.02.043.
[8] 李建珍.基于遗传算法的人工神经网络学习算法[J].西北师范大学学报(自然科学版),2002(02):33-37.DOI:10.16783/j.cnki.nwnuz.2002.02.010.
[9] 闵惜琳,刘国华.人工神经网络结合遗传算法在建模和优化中的应用[J].计算机应用研究,2002(01):79-80.
[10] 梁化楼,戴贵亮.人工神经网络与遗传算法的结合:进展及展望[J].电子学报,1995(10):194-200.


● 相关图表链接:

  • 7
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卓晴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值