受自然选择的启发,遗传算法是一种常用的近似解决优化和搜索问题的方法。它们的必要性在于,存在着一些在任何可接受的(或决定性的)时间内都无法解决的过于复杂的计算问题。
以著名的旅行推销员问题为例。随着问题所涉及的城市数量的增加,确定解决方案所需的时间很快就变得无法管理。例如,解决5个城市的问题是一个微不足道的任务;另一方面,解决50个城市的问题将花费大量的时间,以至于永远无法完成。
事实证明,用遗传算法来逼近这类优化问题是一种明智的做法,能产生合理的近似值。几十年来,遗传算法在机器学习领域一直占有一席之地,但最近它们作为优化机器学习超参数(以及穿越神经网络架构搜索空间)的工具的复兴,使它们受到了新一代机器学习研究者和从业者的关注。
本文介绍了12个遗传算法关键术语的简单定义,以帮助更好地将这些概念介绍给新来者。
1.遗传算法
遗传算法(GA)使用二进制字符串表示潜在的问题假设,并对潜在假设的搜索空间进行迭代,试图识别 "最佳假设",即优化预定的数字衡量标准,或称适配度。总的来说,GA是进化算法的一个子集。
2.进化算法
进化算法(EA)是任何类型的学习方法,其动机是与生物进化有明显和有意的相似之处,包括但不限于遗传算法、进化策略和遗传编程。
3.遗传编程
遗传编程是一种特殊类型的EA,它利用进化学习策略来优化计算机代码的制作,从而使程序在预定的任务或任务集中表现最佳。
4.群体
在遗传算法中,每一次迭代或生成都会产生一系列可能的假设,以最佳方式接近一个函数,而群体指的是在给定的迭代之后,这些生成的假设的完整集合或集合。
5.染色体
作为对生物学的一个明显点头,染色体是一个单一的假设,其中许多假设构成了一个群体。
6.基因
在GA中,潜在的假说是由染色体组成的,而染色体又是由基因组成的。实际上,在GA中,染色体通常表示为二进制字符串,一连串的1和0,表示包含或排除由字符串中的位置代表的特定项目。基因是这样一个染色体中的一个位。
例如,遗传算法中的 "你好世界 "通常被认为是knapsack问题。在这个问题中,有一组N个项目,这些项目可能包括在小偷的背包里,也可能不包括在里面,这些N个项目将被表示为一个N个字符长的二进制字符串(染色体),字符串中的每个位置代表一个特定的项目,位置位(1或0;基因)表示该项目是否包括在特定的假设中。
- 群体→当前一代(算法的迭代)的背包问题的所有建议解决方案
- 染色体→对背包问题提出的特定解决方案
- 基因(Gene) → 某一特定项目在背包问题的特定解决方案中的位置表示(及其包含或排除)。
7.生成
在GA中,新的假设集是由以前的假设集形成的,方法是选择一些完整的染色体(一般是高适配性的),使其毫发无损地进入新的一代(选择),翻转现有的完整染色体的一点,使其进入新的一代(突变),或者,最常见的是用现有的染色体集的基因作为父母,为新的一代培育出子染色体。
那么,一个世代就是GA迭代的全部结果。
8.育种
育种指的是通常最常见的从现有一代的假设集创建新染色体的方法,即使用一对所述染色体作为亲本,并使用交叉法从它们创建新的子染色体。
9.9.选择
与自然选择相呼应,选择的概念是确保性能最佳(最高适配度)的染色体有更高的概率被用于培育下一代。通常情况下,性能最高的染色体可以被选择并推到新的一代,而不用于育种,确保随后几代的假说将最低限度地达到当前一代的相同水平。

10.交叉
如何用选定的染色体来培育后续代?如下图所示,交叉法是一般的选择。将选择一对长度为N比特的选定字符串,并生成一个随机整数c作为某个大小的交叉点(例如,0 <c<N)。然后,这两个字符串在这个交叉点c处被独立分割,并使用一个字符串的头部和另一个字符串的尾部进行重新组合,形成一对新的染色体。然后,这些新假说的适配性将在下一世代被评估。

11.变异
就像在生物术语中一样,变异被用于GAA中,以便将假设推向最优。一般来说,突变只是简单地翻转一个随机基因的位,并将整个染色体推进到下一个世代,这是一种逃避潜在局部最小值的策略。
12.健身
我们需要一些指标来衡量一个假设的最佳拟合度。一些健身函数被用来评估每个染色体,最佳拟合度可以被识别并更多地被依赖,以创造新的一代染色体。健身函数在很大程度上取决于任务。