龙空技术网

学习笔记:遗传算法(Python) #1 遗传算法简介

Y数据物语Y 416

前言:

现时各位老铁们对“遗传算法的主要参数”大致比较珍视,姐妹们都需要了解一些“遗传算法的主要参数”的相关内容。那么小编也在网摘上网罗了一些对于“遗传算法的主要参数””的相关资讯,希望你们能喜欢,兄弟们一起来学习一下吧!

1.什么是遗传算法

遗传算法(Genetic Algorithm)是进化算法(Evolutionary Algorithm)的一种,其命名借鉴了达尔文的进化论,本算法的核心概念借鉴了进化论中的遗传、突变、自然选择与杂交等概念。通过这些概念,遗传算法可以用于解决最优化问题。基因算法的主要概念如下:

基因型(Genotype):遗传算法借用了了生物学中基因的概念,一系列基因的组合就是基因型。个体(Individual):就如每个人的DNA都是独特的一样,遗传算法中的个体可以抽象为一系列基因的组合,比如110111就可以代表一个个体。种群(Population):基因算法在任何阶段都会保有一定数量的个体,这些个体的组合就成为种群。比如 [11011,11000,10011,...]就可以代表种群。适应度函数(Fitness Function):通过适应度函数,我们可以计算个体的适应度(Fitness Score), 适应度高的个体有更高的机率被选择从而进入下一轮迭代。选择(Selection):每次迭代中,计算出每个个体的适应度后,我们一般赋予适应度更高的个体以更高的概率,从而使其进入杂交与突变环节。杂交(Crossover):类似于自然界中染色体杂交,基因算法中,我们可以交换个体之间的基因来进行杂交,比如:11000 与 00111 杂交可以生成 11111 和 00000(从第三个位置后相互交换)突变(Mutation):个体的基因发生随机的突变,这个过程被成为突变,比如:11100 -> 111012.遗传算法理论基础

借鉴了自然界中弱肉强食,适者生存的思维,遗传算法的底层逻辑是:一个最优的算法是由一系列个体组成,从完全随机的个体开始进行一次又一次的迭代,每次迭代中通过适应度函数计算所有个体的适应度,并按一定比例筛选出适应度更高的个体,通过杂交与突变产生新的种群,该过程经过一定数量的迭代后产生最优解。

遗传算法的一个主要前提假设是模式定理(Schema Theorem),模式定理中主要概念有:

模式(Schema):模式指有相同特征的子集,比如二进制字符串11***\(*为通配符\)可以代表八个个体(2x2x2)。阶(Order):模式中确定位置的个数成为阶,比如1110*的阶为1定义距(Defining Length):模式中第一个确定位置和最后一个确定位置之间的距离成为定义距

模式、阶与定义距的关系

模式定理是具有低阶、短定义距以及平均适应度高于种群平均适应度的模式在子代中呈指数增长。它保证了较优的模式(遗传算法的较优解)的数目呈指数增长,为解释遗传算法机理提供了数学基础。

3.遗传算法与传统算法的区别

遗传算法与普通算法的主要区别如下:

遗传算法中的种群中始终维持一定数量的个体(每个个体都是问题的解),而传统算法中每次迭代都一般只保留最优解。遗传算法用个体/基因型来代表问题的解,而传统算法的解一般都更直观。遗传算通过计算适应度来计算最优解,而传统算法一般通过导数或梯度来计算最优解。遗传算由概率驱动,比如杂交概率、突变概率等,而传统算法一般都是有确定性的。PS:因为遗传算法的每一次迭代就朝着最优解的方向前进,即便遗传算法的过程有不确定性,但遗传算法最终的最优解一般都是确定的。4.遗传算法的优缺点

优点:

不容易遗漏全局极值:与传统算法相比,因为遗传算法始终保有一定数量的解,所以其解不容易被困在区域极值。可以用来解决复杂的数学问题:传统算法一般需要严谨的数学推导来计算最优解,但遗传算法可以通过适应度方程来简化问题。不易受异常值影响:与传统算法相比,遗传算法受异常值的影响更小。更容易进行并行和分布式运算:遗传算法在迭代中需要计算每个个体的适应值,而这个操作很容易通过并行和分布式运算来处理。更适合被用于持续学习:遗传算算法体现了进化论中适者生存这一概念,当外部环境(数据)改变时,原有的样本可以适应新的环境并产生新的最优解,不用从头开始进行计算。 而传统算法一般都需要重新计算。

缺点:

面对具体问题需要具体的定义:当应用遗传算法到具体问题时,需要十分具体的定义,比如定义何为该问题的基因型,杂交、突变方法等等。超参数优化(Hyperparameter Tuning)需要消耗大量时间和运算能力。过早收敛(Premature Convergence):若种群的选择、杂交、突变概率与方法不合理,则其很可能过早失去多样性而提前收敛,从而无法找到最优解。无法保证可以找到最优解。5.何时使用遗传算法

当遇到以下类型的问题时,可以尝试遗传算法:

当问题的数学表达过于复杂或很难用数学表达时:遗传算法只需要定义个体、种群,选择、杂交、突变方法和适应度方程就可以求最优解。当数据含较多噪音时:遗传算法受数据中异常值的影响较小。当外部环境在不断变化时:遗传算法的种群始终保有一定数量的个体(解),因此遗传算法可以适应数据的改变,并针对新的环境产生新的最优解。6.小结

当然,遗传算法的原理不是三言两语能讲清楚的,这篇文章也只是针对要点的一些总结,由于本人学习遗传算法使用的是英文教材,若中文翻译有不准确的地方还请原谅。本系列的下一期文章将总结实现选择、杂交、突变的主要方法与重要步骤。

标签: #遗传算法的主要参数