GA的基本思想是基于模仿生物界遗传学的遗传过程。它把问题的参数用基因代表,把问题的解用染色体表示,从而得到一个由具有不同染色体的个体组成的群体。这个群体在问题特定的环境里生存竞争,适者有最好的机会生存和产生子代。子代随机地继承了父代的特征,并也在生存环境的控制支配下继续这一过程。群体的染色体都将逐渐适应环境,不断进化,最后收敛到一族最适应环境的类似个体,即得到问题的最优解。
1)遗传算法是从问题解空间多点并行搜索,而非从单个解开始搜索;
2)遗传算法利用目标函数的适应度这一信息而非利用导数或其它辅助信息来指导搜索;
3)遗传算法利用选择、交叉、变异等算子而不是利用确定性规则进行操作。
GA主要涉及六大要素:参数编码、初始群体的设定、适应度函数的设计、遗传操作设计、控制参数设定和迭代终止条件。
由于遗传算法不能直接处理问题空间的参数,因此必须通过编码将要求解的问题表示成遗传空间的染色体或者个体。这一转换操作就叫做编码,也可以称作(问题的)表示(representation)。
目前包括二进制法、实数法等。二进制法是指把个体编码成为一个二进制串,实数法是指把个体编码成为一个实数串。
GA中初始群体中的个体是随机产生的。一般来讲,初始群体的设定可采取如下的策略:
a)根据问题固有知识,设法把握最优解所占空间在整个问题空间中的分布范围,然后,在此分布范围内设定初始群体。
b)先随机生成一定数目的个体,然后从中挑出最好的个体加到初始群体中。这种过程不断迭代,直到初始群体中个体数达到了预先确定的规模。
适应度函数也叫评价函数,是用来判断群体中的个体的优劣程度的指标,它是根据所求问题的目标函数来进行评估的。
一般要求适应度函数值非负,并且适应度值越大越好。
遗传操作包括以下三个基本遗传算子(genetic operator):选择(selection);交叉(crossover);变异(mutation)。
选择操作
从群体中选择优胜的个体,淘汰劣质个体的操作叫选择。选择操作是建立在群体中个体的适应度评估基础上的,常用的选择算子有以下几种:适应度比例方法、轮盘选择法、随机遍历抽样法、局部选择法。
交叉操作
指把两个父代个体的部分结构加以替换重组而生成新个体的操作。依据个体编码表示方法的不同,可以有以下的算法:a)实值交叉;b)二进制交叉。
变异操作
对群体中的个体串的某些基因座上的基因值作变动。依据个体编码表示方法的不同,可以有以下的算法:a)实值变异;b)二进制变异。
群体大小 M、遗传代数 G、交叉概率 Pc 和变异概率 Pm。
当最优个体的适应度达到给定的阈值,或者最优个体的适应度和群体适应度不再上升时,或者迭代次数达到预设的代数时,算法终止。
遗传算法的基本运算过程如下:
(1)初始化:设置进化代数计数器 G=0,设置最大进化代数 GEN,随机生成 M 个个体作为初始群体 P(0)。
(2)个体评价:计算群体 P(G) 中各个个体的适应度。
(3)选择运算:将选择算子作用于群体。选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的。
(4)交叉运算:将交叉算子作用于群体。遗传算法中起核心作用的就是交叉算子。
(5)变异运算:将变异算子作用于群体。即是对群体中的个体串的某些基因座上的基因值作变动。群体 P(G) 经过选择、交叉、变异运算之后得到下一代群体 P(G+1)。
(6)终止条件判断:若 G>GEN,则以进化过程中所得到的具有最大适应度个体作为最优解输出,终止计算。
初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度大小选择个体,并借助于自然遗传学的遗传算子进行组合交叉和变异,产生出代表新的解集的种群。
BP(back propagation)神经网络是一种按照误差逆向传播算法训练的多层前馈神经网络,是应用最广泛的神经网络。其算法称为BP算法,它的基本思想是梯度下降法,利用梯度搜索技术,以期使网络的实际输出值和期望输出值的误差均方差为最小。
目的:神经网络里面有很多参数,但是我们并不知道哪些参数训练出来的效率最高,识别率最高。这时候就可以以这个识别率为目标函数,用遗传算法来优化神经网络的参数。
遗传神经网络算法和神经网络算法最本质的区别可以说是学习方法不同,或者说模型的优化方法不同。前者应该是基于遗传算法进行网络参数的学习,而后者大都是采用反向传播(BP)算法进行网络参数的学习。
遗传算法优化 BP 神经网络分为BP神经网络结构确定、遗传算法优化和 BP神经网络预测3个部分。其中,BP 神经网络结构确定部分根据拟合函数输入输出参数个数确定 BP 神经网络结构,这样就可以确定遗传算法的优化参数个数,进而确定遗传算法个体的编码长度。因为遗传算法优化的参数是 BP 神经网络的初始权值和阈值,只要网络的结构已知,权值和阈值的个数就已知了。种群中的每个个体都包含了一个网络所有权值和阈值,个体通过适应度函数计算个体适应度值,遗传算法通过选择、交叉和变异操作找到最优适应度值对应的个体。BP神经网络预测用遗传算法得到最优个体对网络进行初始权值和阈值的赋值,网络经训练后预测样本输出。
本次学习本人还存在诸多不足,还只是在理论知识学习阶段,下一阶段将进入 python 代码实践,加深自己的深一步理解。如若发现不足,请大家指出并批评指正!QoMo 和大家一起共同努力学习!共勉!
最后特别感谢 dulingtingzi 等作者的辛劳贡献。
[1]https://blog.csdn.net/dulingtingzi/article/details/51114832
[2]https://www.jianshu.com/p/ae5157c26af9
[3]https://baike.baidu.com/item/%E9%81%97%E4%BC%A0%E7%AE%97%E6%B3%95/838140?fr=aladdin