【人工智能算法】受大自然启发的算法之种群、计分和选择
本文重点:
种群精英计分选择选择算法的可伸缩性理解种群种群即居住在一个地方的一群特定种类的人或动物。在机器人工智能中,种群是解决问题的一组潜在方法,这些潜在解属于同一种类,因为他们解决相同的问题。有时候,解种群中的成员将分为不同的物种,但是仍然将这些成员归为同一种群。
初始种群种群规模通常不会随着演化算法的发展而改变。种群规模是一个硬性限制。例如,如果你指定500个人,那么总会保持500个人。我们创建一个初始种群,其计数等于该种群规模,构成初始种群的初始潜在解将被随机生成。这些最初的随机解可能不太好,但是,其中一些随机解的得分会比较高。程序中使用的算法类型会影响种群规模。种群成员可以是竞争的,也可以是合作的。合作种群通常以固定规模开始,并且永远不会添加或删除新成员。竞争种群总是会创造出后代,以维持这个固定种群的规模。这些后代也被称为==“迭代”==,下一代的孩子仅由最合适的亲本产生,一旦竞争种群的下一代达到这个最大的后代数量,就不会再有孩子出生了。人工智能中的一些算法模仿自然,因为动物种群通常既有竞争性,又有合作性。
种群成员之间的竞争竞争种群的算法包括遗传算法和遗传编程。这些算法都会创建潜在的解,分数较高的解更有可能被选择用于交配并提供下一代种群。除交配外,竞争种群的成员之间没有直接合作。竞争种群总是会包含一个或多个获得最佳分数(比如打平)的解。还有一个可能的结果是,下一代不包含超过上一代最佳分数的新解。如果发生这种情况,最优解的分数将下降,从而使训练倒退一步。这种结果通常是不希望产生的。可以通过==“精英”==来解决这一问题,精英是一种训练设置,用于指定将多少个获得最佳分数的解用于下一代。因为精英设置始终会保留最优解,所以它可以保证算法不会倒退到较差的分数。可以将其设置为多个获得最佳分数的解,而不只是单个解。精英不是防止种群的最佳分数在代际间倒退的唯一途径。此外,“联赛”也可以防止分数下降。
种群成员之间的合作AI中的种群并非都是竞争种群,AI中也存在合作种群。合作种群的算法包括粒子群优化(ParticleSwarmOptimization,PSO)和蚁群优化(AntColonyOptimization,ACO),在这两种算法中,各个潜在的解相互学习。在它们寻求指定问题的良好解时,信息在个体之间共享。合作种群总会跟踪其成员已经找到的最优解,但算法不会贪心,而会在寻求最优解时接受一个较差的解。由于这个特性,跟踪至今为止找到的最优解非常重要。保留这些记录可以使你恢复到最优解,即使种群成员已转向较差的解。与竞争算法一样,合作算法也是迭代的。但是,一次合作迭代不会用新一代取代先前的种群。合作算法的迭代仅表示对每个潜在解的一次完整遍历,评估解的有效性并获得了分数。在每个迭代周期结束时,所有潜在的解都会进行协作并调整它们的解参数,使得分数最大化。
表型和基因型表型和基因型是两个来自生物学的术语,它们对某些受大自然启发的算法很重要。基因型是遗传信息,生物体根据它来生长。表型是由基因型产生的实际生物组织。同卵双胞胎就是理解表型和基因型之间差异的一个很好的例子。同卵双胞胎拥有相同的基因型,但是,双胞胎会成长为不同的人,具有稍显不同的身体特征。在AI中,相同的基因型会成长为两个略有不同的表型。HyperNEAT神经网络是一种可以区分表型和基因型的受大自然启发的算法的例子。
岛屿种群屿的概念也可以在受大自然启发的算法中使用,以使多个种群在很大程度上彼此独立,就像真实的岛屿将种群分开一样。算法还可以选择允许岛之间的偶然交互。这种间歇性相互作用类似于陆桥或其他允许生物在生态系统之间传播的地质事件。岛屿概念最常用于竞争种群。将潜在解分为多个种群,可以使新的创新不断发展,而不会受到现有种群的威胁。岛屿之间偶尔可以进行互动,并允许其他岛屿的外来解引入新的想法。
对种群计分能够对种群成员进行计分是非常有价值的,种群成员的分数决定了该种群成员所代表的潜在解的适用性。大多数演化算法可以使分数最小化或最大化,你需要确定是低分好还是高分好。一些人类运动,例如高尔夫球,追求的是最低分或低分,足球等运动则追求最高分或高分。在将成员添加到种群时,要对该成员进行计分。潜在解的分数通常与解存储在同一对象上。这个存储位置可以让程序不需要持续重新计算分数。最初,你需要为随机种群的每个成员计分。如果种群成员发生变化,那么它的分数还需要重新计算,如果添加了新的种群成员,那么需要确定它的分数。对个体进行计分的确切方法,取决于所解决问题的类型。适应度函数用于评估可能的解并指定分数。适应度函数有时称为损失函数(lossfunction)或目标函数(objectivefunction)计分通常是演化算法的性能瓶颈。
从种群中选择选择是从种群中挑选一个或多个潜在解的过程,这个过程通常称为“抽样”,你可以从各种不同的选择过程中进行挑选。每种选择算法都有其优缺点。常见的选择算法包括:
截断选择;联赛选择;适应度比例选择;随机遍历抽样。截断选择截断选择是最基本的选择算法之一。是由HeinzMuhlenbein在breedergeneticalgorithm论文中提出的。截断选择需要根据适应度对种群进行分类。分类后,选择一定比例(例如1/3)的种群作为育种种群。然后从育种种群中取样潜在解,以帮助生产下一代。
deftruncate_select(breeding_ratio,sorted_population){sort(sortrd_population)count=len(sorted_population)*breeding_ratioindex=uniform_random(0,count)returnsorted_population[index]}截断选择算法的最大限制之一,就是必须对种群进行排序,你必须不断使整个种群处于已知的排序状态。这种排序严重限制了该算法针对多核和分布式计算而并行化的能力。结果,该算法无法在大种群中很好地伸缩,因为你可能有许多不同的选择在并行运行。此外,由于亲本只生孩子,而亲本没有加入下一代,因此有可能没有孩子达到或超过上一代最优解的分数。因此,你应该用精英来选择一个或多个最优解,并直接复制到下一代。如果不用精英,你的最佳得分可能会在两次迭代之间降低。
联赛选择联赛选择通过一系列轮数来进行,并总是让获胜者进入下一轮。轮数是一种训练设置,对于每一轮,你必须在种群中选择两个随机个体,得分较高的个体进入下一轮联赛,解决了截断选择的可伸缩性问题。
deftournament_Select(rounds,population){champ=nullforxfrom0torounds:contender=uniform_random(population)ifchampidnull:champ=contenderelseifcontender.score>champ.score:champ=contenderreturnchamp}不需要排序,甚至可以将小于翻转为大于,创建反转选择。使用联赛选择还可以打破演化算子经常使用的典型世代模型。打破世代模型将极大提高并行处理的效率,缺少世代模型也更接近生物学。由于每天都有婴儿出生,因此人类世代的开始和结束并没有一个明确的时刻。要放弃世代模型,请使用联赛选择,并选择两个合适的亲本来生一个孩子。要选择不适应的种群成员,请进行反转联赛。不适应的种群成员被“杀死”,由新的孩子代替。这种联赛模型消除了对精英的需求。最优解永远不会被取代,因为反转联赛永远不会选择它。联赛选择在生物学上也是合理的。为了生存到第二天,个体不需要战胜种群中最快的掠食者,只需要战胜它在任何给定的一天遇到的掠食者。
如何选择轮数轮数是一种训练设置,就像种群计数一样,即使训练设置不是最终解的一部分,它们也会影响你找到合适解的速度。通常,训练设置是通过反复试验来设置的。可以通过实验来选取折中的方式。
适应度比例选择适应度比例选择,也称为轮盘赌选择,是一种用于演化算法的流行选择算法[4]。该算法类似于轮盘赌,个体占据了轮盘赌的一部分,该部分与他们的得分意愿成正比。当人们旋转轮盘赌时,得分意愿更大的个体更有可能被选择。上图所示在轮盘上分配20、30和50的分数。分数为50有50%的机会被选中。分数不一定要像这样与个体所占的百分比相等,因为比例可以简单地根据分数总和来调整。==适应度比例选择可能会选择最不适合的个体,而联赛或截断选择永远不会选择最不适合的个体。==这个选择过程不一定很糟糕,选择过程中的多样性有时会产生有趣的结果,因为它允许新的想法进入种群。
deffittness_proportion_select(population){total_score=0forindividualinpopulation:total_score=total_score+individual.scorer=random_uniform(0,1)covered_so_far=0forindividualinpopulation:covered_so_far=covered_so_far+(individual.score/total_score)ifr人工智能导论
第一章1.作为计算机科学的一个分支,人工智能的英文缩写是()。AI
2.人工智能是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门交叉科学,它涉及(D)。
A.自然科学B.社会科学C.技术科学D.A、B和C
3.人工智能定义中的“智能”,涉及到诸如(A)等问题。
A.B、C和DB.意识C.自我D.思维
4.下列关于人工智能的说法不正确的是(C)。
A.人工智能是关于知识的学科――怎样表示知识以及怎样获得知识并使用知识的科学。
B.人工智能就是研究如何使计算机去做过去只有人才能做的智能工作。
C.自1946年以来,人工智能学科经过多年的发展,已经趋于成熟,得到充分应用。
D.人工智能不是人的智能,但能像人那样思考,甚至也可能超过人的智能。
5.人工智能经常被称为世界三大尖端技术之一,下列说法中错误的是(B)。
A.空间技术、能源技术、人工智能
B.管理技术、工程技术、人工智能
C.基因工程、纳米科学、人工智能
D.人工智能已成为一个独立的学科分支,无论在理论和实践上都已自成系统
6.人工智能与思维科学的关系是实践和理论的关系。从思维观点看,人工智能不包括(A)。
A.直觉思维B.逻辑思维C.形象思维D.灵感思维
7.强人工智能强调人工智能的完整性,下列(C)不属于强人工智能。
A.(类人)机器的思考和推理就像人的思维一样
B.(非类人)机器产生了和人完全不一样的知觉和意识
C.看起来像是智能的,其实并不真正拥有智能,也不会有自主意识
D.有可能制造出真正能推理和解决问题的智能机器
8.被誉为“人工智能之父”的科学大师是(D)。
A.爱因斯坦B.冯·诺依曼C.钱学森D.图灵
9.电子计算机的出现使信息存储和处理的各个方面都发生了革命。下列说法中不正确的是(C)。
A.计算机是用于操纵信息的设备
B.计算机在可改变的程序的控制下运行
C.人工智能技术是后计算机时代的先进工具
D.计算机这个用电子方式处理数据的发明,为实现人工智能提供了一种媒介
10.Wiener从理论上指出,所有的智能活动都是(A)机制的结果,而这一机制是有可能用机器模拟的。这项发现对早期AI的发展影响很大。
A.反馈B.分解C.抽象D.综合
11.(B)年夏季,一批有远见卓识的年轻科学家在达特茅斯学会上聚会,共同研究和探讨用机器模拟智能的一系列有关问题,首次提出了“人工智能(AI)”这一术语,它标志着“人工智能”这门新兴学科的正式诞生。
A.1946B.1956C.1976D.1986
12.用来研究人工智能的主要物质基础以及能够实现人工智能技术平台的机器就是计算机。下列(D)不是人工智能研究的主要领域。
A.深度学习B.计算机视觉C.智能机器人D.人文地理
13.人工智能在计算机上的实现方法有多种,但下列(B)不属于其中。
A.传统的编程技术,使系统呈现智能的效果
B.多媒体拷贝复制和剪贴的方法
C.传统开发方法而不考虑所用方法是否与人或动物机体所用的方法相同
D.模拟法,不仅要看效果,还要求实现方法也和人类或生物机体所用的方法相同或相类似
14.人工智能当前的发展具有“四新”特征,下面(A)不属于其中之一。新挑战
A.新能源B.新突破C.新动能D.新高地
15.通过总结人工智能发展历程中的经验和教训,我们可以得到的启示是(D)。
A.尊重发展规律是推动学科健康发展的前提,实事求是设定发展目标是制定学科发展规划的基本原则
B.基础研究是学科可持续发展的基石
C.应用需求是科技创新的不竭之源,学科交叉是创新突破的“捷径”,宽容失败是支持创新的题中应有之义
D.A、B和C
16.人工智能的发展突破了“三算”方面的制约因素,这“三算”不包括(C)。
A.算法B.算力C.算子D.算料
17.得益于人工智能技术的兴起,一些行业岗位将呈现出显着的增长趋势,但下面(C)不属于其中之一。
A.数据科学家B.机器学习工程师C.电脑维修工程师D.AI硬件专家
18.有研究指出,人工智能可能会给人类社会带来潜在威胁,包括(D)。
A.数字安全B.物理安全C.政治安全D.A、B和C
19.有研究者认为,让计算机拥有智商是很危险的,它可能会反抗人类。这种隐患已经在(B)中呈现过,其关键是允不允许机器拥有自主意识的产生与延续。
A.法律文件B.多部电影C.政府报告D.一些案例
第三章1.19世纪以来,当面临大量数据时,社会都依赖于采样分析。但是采样分析是(C)时代的产物。
A.电脑B.青铜器C.模拟数据D.云
2.长期以来,人们已经发展了一些使用尽可能少的信息的技术。例如,统计学的一个目的就是(C)
A.用尽可能多的数据来验证一般的发现
B.同尽可能少的数据来验证尽可能简单的发现
C.用尽可能少的数据来证实尽可能重大的发现
D.用尽可能少的数据来验证一般的发现。
3.因为大数据是建立在(A),所以我们就可以正确地考察细节并进行新的分析。
A.掌握所有数据,至少是尽可能多的数据的基础上的
B.在掌握少量精确数据的基础上,尽可能多地收集其他数据
C.掌握少量数据,至少是尽可能精确的数据的基础上的
D.尽可能掌握精确数据的基础上
4.直到今天,我们的数字技术依然建立在精准的基础上,这种思维方式适用于掌握(A)的情况。
A.小数据量B.大数据量C.无数据D.多数据
5.当人们拥有海量即时数据时,绝对的精准不再是人们追求的主要目标。当然,(C)。
A.我们应该完全放弃精确度,不再沉迷于此
B.我们不能放弃精确度,需要努力追求精确度
C.我们也不是完全放弃了精确度,只是不再沉迷于此
D.我们是确保精确度的前提下,适当寻求更多数据
6.为了获得更广泛的数据而牺牲了精确性,也因此看到了很多如若不然无法被关注到的细节。(B)。
A.在很多情况下,与致力于避免错误相比,对错误的包容会带给我们更多问题
B.在很多情况下,与致力于避免错误相比,对错误的包容会带给我们更多好处
C.无论什么情况,我们都不能容忍错误的存在
D.无论什么情况,我们都可以包容错误
7.以前,统计学家们总是把他们的兴趣放在提高样本的随机性而不是数量上。这时因为(C)。
A.提高样本随机性可以减少对数据量的需求
B.样本随机性优于对大数据的分析
C.可以获取的数据少,提高样本随机性可以提高分析准确率
D.提高样本随机性是为了减少统计分析的工作量
8.研究表明,在少量数据情况下运行得最好的算法,当加入更多的数据时,(A)。
A.也会像其他的算法一样有所提高,但是却变成了在大量数据条件下运行得最不好的
B.与其他的算法一样有所提高,仍然是在大量数据条件下运行得最好的
C.与其他的算法一样所有提高,在大量数据条件下运行得还是比较好的
D.虽然没有提高,还是在大量数据条件下运行得最好的
9.如今,要想获得大规模数据带来的好处,混乱应该是一种(D)。
A.不正确途径,需要竭力避免的
B.非标准途径,应该尽量避免的
C.非标准途径,但可以勉强接受的
D.标准途径,而不应该是竭力避免的
10.研究表明,只有()的数字数据是结构化的且能适用于传统数据库。如果不接受混乱,剩下(C)的非结构化数据都无法被利用。
A.95%,5%B.30%,70%C.5%,95%D.70%,30%
11.寻找(B)是人类长久以来的习惯,即使确定这样的关系很困难而且用途不大,人类还是习惯性地寻找缘由。
A.相关关系B.因果关系C.信息关系D.组织关系
12.在大数据时代,我们无须再紧盯事物之间的(A),而应该寻找事物之间的(),这会给我们提供非常新颖且有价值的观点。
A.因果关系,相关关系B.相关关系,因果关系
C.复杂关系,简单关系D.简单关系,复杂关系
13.所谓相关关系,其核心是指量化两个数据值之间的数理关系。相关关系强是指当一个数据值增加时,另一个数据值很有可能会随之(C)。
A.减少B.显现C.增加D.隐藏
14.通过找到一个现象的(D),相关关系可以帮助我们捕捉现在和预测未来。
A.出现原因B.隐藏原因C.一般的关联物D.良好的关联物
15.大数据时代,专家们正在研发能发现并对比分析非线性关系的技术工具。通过(A),相关关系帮助我们更好地了解了这个世界。
A.探求“是什么”而不是“为什么”
B.探求“为什么”而不是“是什么”
C.探求“原因”而不是“结果”
D.探求“结果”而不是“原因”
第四章1.搜索是大多数人生活中的(B)。
A.稀罕情况B.自然组成部分
C.不可能出现D.大概率事件
2.搜索及其执行是人工智能技术的(C)。
A.一般应用B.重要应用C.重要基础D.不同领域
3.关于搜索算法,下面不正确或者不合适的说法是(D)。
A.利用计算机的高性能来有目的的穷举一个问题的部分或所有的可能情况,从而求出问题的解的一种方法
B.根据初始条件和扩展规则构造一颗“解答树”并寻找符合目标状态的节点
C.可以划分成两个部分——控制结构(扩展节点的方式)和产生系统(扩展节点)
D.主要是通过修改其数据结构来实现的
4.关于盲目搜索,下列选项中不正确或者不合适的选项是(A)。
A.又叫启发式搜索,是一种多信息搜索
B.这些算法不依赖任何问题领域的特定知识
C.一般只适用于求解比较简单的问题
D.通常需要大量的空间和时间
5.盲目搜索通常是按预定的搜索策略进行搜索,常用的盲目搜索有(C)两种。
A.连续搜索和重复搜索B.上下搜索和超链接搜索C.广度优先搜索和深度优先搜索D.多媒体搜索和AI搜索
6.状态空间图是一个有助于形式化搜索过程的(D),是对一个问题的表示。
A.程序结构B.算法结构C.模块结构D.数学结构
7.回溯算法是所有搜索算法中最为基本的一种算法,它采用一种“(A)”思想作为其控制结构。
A.走不通就掉头B.一走到底
C.循环往复D.从一点出发不重复
8.盲目搜索是不使用领域知识的不知情搜索算法,它有3种主要算法,下列(C)不属于其中。
A.深度优先搜索B.广度优先搜索
C.广度迭代搜索D.迭代加深的深度优先搜索
9.知情搜索是用启发法,通过(B)来缩小问题空间,是问题求解中通常是很有用的工具。
A.既不限定搜索深度也不限定搜索宽度
B.限定搜索深度或是限定搜索宽度
C.提高搜索算法智能化水平D.提高搜索算法的软件工程设计水平
10.爬山法是贪婪且原始的,它可能会受到3个常见问题的困扰,但下列(D)不属于这样的问题。
A.山麓问题B.高原问题C.山脊问题D.压缩问题
11.启发法是用于解决问题的一组常用指南。使用启发法,我们可以得到一个(A)的结果。
A.很有利但不能保证B.很有利且可以得到有效保证
C.不利且不能得到保证D.不明确
12.启发式搜索方法的目的是在考虑到要达到的目标状态情况下,(B)节点数目。
A.极大地增加B.极大地减少C.稳定已有的D.无须任何
13.有3种为找到任何解的知情搜索的特定搜索算法,但下列(C)不属于其中之一。
A.爬山法B.最陡爬坡法C.直接爬坡法D.最佳优先法
14.有一些搜索算法的设计灵感来自于自然系统,例如遗传、(D)等典型算法在图像边缘检测、图像分割、图像识别、图像匹配、图像分类等领域有广泛应用。
A.蚁群B.模拟退火C.粒子群D.A、B和C
第七章1.在线影片租赁服务商Netflix的主营业务是提供互联网随选流媒体播放,它所依赖的关键服务是(B)。
A.搜索引擎B.推荐引擎C.百度引擎D.谷歌引擎
2.下列(D)信息服务利用了人工智能的机器学习技术。
A.智能语音助手SiriB.Alexa个人助理客户端
C.Netflix电影推荐D.上述所有都是
3.机器学习最早的发展可以追溯到(A)。
A.英国数学家贝叶斯在1763年发表的贝叶斯定理
B.1950年计算机科学家图灵发明的图灵测试
C.1952年亚瑟·塞缪尔创建的一个简单的下棋游戏程序
D.唐纳德·米奇在1963年推出的强化学习的tic-tac-toe(井字棋)程序
4.学习是人类具有的一种重要的智能行为,社会学家、逻辑学家和心理学家都各有其不同的看法。关于机器学习,合适的定义是(D)。
A.兰利的定义是:“机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能”
B.汤姆·米切尔的定义是:“机器学习是对能通过经验自动改进的计算机算法的研究”
C.Alpaydin的定义是:“机器学习是用数据或以往的经验,以此优化计算机程序的性能标准”
D.A、B、C都可以
5.机器学习的核心是“使用(C)解析数据,从中学习,然后对世界上的某件事情做出决定或预测”。
A.程序B.函数C.算法D.模块
6.有三种主要类型的机器学习:监督学习、非监督学习和(B)学习,各自有着不同的特点。
A.重复B.强化C.自主D.优化
7.监督学习的主要类型是(A)。
A.分类和回归B.聚类和回归C.分类和降维D.聚类和降维
8.无监督学习又称归纳性学习,分为(D)。
A.分类和回归B.聚类和回归C.分类和降维D.聚类、离散点检测和降维
9.强化学习使用机器的个人历史和经验来做出决定,其经典应用是(C)。
A.文字处理B.数据挖掘C.游戏娱乐D.自动控制
10.要完全理解大多数机器学习算法,需要对一些关键的数学概念有一个基本的理解。机器学习使用的数学知识主要包括(D)。
A.线性代数B.微积分C.概率和统计D.A、B、C
11.机器学习的各种算法都是基于(A)理论的。
A.贝叶斯B.回归C.决策树D.聚类
监督学习的大部分算法基于回归理论。
12.在机器学习的具体应用中,(D)决定了学习系统基本结构的工作内容,确定了学习部分所需要解决的问题。
A.环境B.知识库C.执行部分D.A、B、C
以上解答若有错误之处,请及时留言错误处及修改后答案,我会及时更正。
doc版本下载地址:
https://wws.lanzous.com/iqpIbimdaeh
人工智能算法(一)进化算法
我希望用这类文章,来尽可能通俗的解释一些听上去很“高大上”的人工智能算法,不仅可以帮助自己真正的理解,还能带来更多的思考。目前想写专家系统,神经网络,还有本篇进化算法。
不说大话,进入正题:
相信大部分对人工智能感兴趣的人都听说过进化算法(遗传算法,基因算法)。一篇文章当然不可能把进化算法的方方面面都说清楚,因此,本文只会介绍进化算法的原理,流程,以及少许应用。最主要的是在学习算法时,我自己的一些思考。
一、什么是进化算法顾名思义,进化算法是模拟生物在自然界中的进化。达尔文的进化论指出“物竞天择,适者生存”。进化论几乎可以解释一切“为什么这种生物是这样的?”这一类的问题。那些更加适应环境的生物,更加容易留下自己的染色体。于是,在计算机中,我们模拟生物中的选择。我们做一次造物主,决定什么样的“生物”更适应环境,更有权利活下来。那么假想你现在是造物主,你想选择一些生物,需要定一些什么规则呢?大概可以总结成下面四个问题:
1、生物生活在什么样的环境中(换言之,什么样的生物才算是适应环境)。
2、生物繁衍后代的方式。
3、生物的种群的大小。
4、物种是否可以基因突变。
大致的设定好这些规则,就我们可以创造一个“种群”和一个选择它们的环境。
二、进化算法中的概念1、染色体:染色体决定了“生物”的特征和适应环境的能力。一般,染色体是一串01的编码(这里有一个常犯的误区,并不是说染色体的基本组成单位是0和1,染色体由基因组成,基因由0和1组成,而且基因会因为具体问题的约束而会有固定的基因池,这里不理解没关系,后面会提到)。放在具体问题中时,染色体就是一个问题的可选方案。
2、基因池:基因池就是基因的可选择范围,例如某个问题的定义域是0~4,我们用三位二进制01串表示。那么基因池有以下基因:|0000| |0001| |0010| |0011| |0100| 。基因池可以说是问题的定义域,那么类似于|1111|这样的基因不属于基因池的基因不会出现在进化算法过程中。理由很简单,假设我们研究猴子的遗传病的时候,有只猴子有个基因突变,变成了人,那就没有研究意义了。
3、适应性函数:适应性函数可以说是进化算法的核心。它决定了上文中写得“规则”中的第一点。什么样的生物才算适应环境。适应性函数就是我们这些造物主筛选优势物种的过滤网。染色体输入到适应性函数中,函数就会输出染色体对环境的适应程度。我们用适应度这个量化概念来描述。
4、选择:就像自然界中一样,每个生物都有繁衍后代的可能性。但是越是适应环境的染色体,留下来的可能性越大。所以适应度越高的物种的染色体,越有可能性被选择。就像是轮盘选择,轮盘上面有一个指针和多个分割的扇形,我们摆动指针,最后指针指向哪一个扇形我们就选择哪一个生物的染色体来繁衍。适应度越高的物种,在轮盘中占得面积越大,自然被选择的可能性越大。
5、交叉:交叉就是染色体之间的基因交换。之前提到的染色体是一串01编码,交叉行为便是决定一个染色体断裂点(和第一点提到的误区一样,染色体可以断裂但是基因不可以断裂,因为基因断裂可能会产生基因池里没有的基因),两个染色体的断裂点相同。每个染色体断裂成两段之后,交换其中一段,从而产生两个新的染色体,替换掉原来的两个染色体。
6、突变:如果之前的描述是可以理解的,你可能发现无论怎么选择,群种当中的染色体组合方式是有限的,因为基因从整体上没有变化(很多基因池中的基因,都未曾出现在这个种群中)。也就是说,很多的基因组合都不可能出现,那么我们就只能选择出这个种群道中最有优势的染色体(局部最优解),而找不到真正的最优染色体(全局最优解)。我们称这种现象为收敛。为了防止这种情况,我们就需要让种群当中的染色体突变。突变的过程就是染色体上的某个基因变成基因池里的另一个基因。也许突变看上去这是微不足道的,但是生物界的进化正是由这种一点一点微不足道的突变叠加,才进化出了如此高级的物种。那么,需要设置一个突变的概率,在理论上突变的概率越高,进化的越快。顺带一提,突变往往是有害的,特别是在物种繁衍了多代之后,种群的平均适应度越高,突变有害的概率越大。
7、种群的大小:为了方便计算,种群的大小往往不变。新产生的基因替换原来的基因。
8、终止条件:利用限定繁衍代数或者其他的方式,来作为终止进化算法的条件。
三、进化算法的流程我决定结合一个实际的例子来描述进化算法的流程。我就不画流程图了,因为在应用时,流程图肯定会不一样。
拿出最简单的例子,求函数的最大值。
引用计算机科学丛书《人工智能》里的一个例子,f(x)=15x-x^2,我们要求这个函数的最大值。
那么,x的不同取值,就是染色体。令x为0~15的整数。用01串来表示基因,例如x=5,那么基因就是0101。适应性函数就是函数本身。
1、设置一个种群大小N,交叉概率,突变概率,终止条件。
2、设置适应性函数,这里直接用原函数。
3、随机生成一个大小为N的种群,也就是N个染色体。
4、计算所以染色体的适应度。
5、利用上文提到的轮盘选择出两个染色体(这两个染色体可以相同)。
6、交叉两个染色体
假如选择出来的两个染色体,一个染色体X0为|0110| 另一个X1为|0001|。随意选择一个交叉点(下划线处)。之前提到的两个染色体的交叉点必须为之一致。
那么X0被分割成 |01|和|10| X1 |00| 和 |01|
两者交换一段变成 |0100| 和 |0010| 加入并替换掉原来的X0和X1,种群数量不变。
7、上帝摇骰子,每个个体都有几率突变 ,例如 X2 |0101| 突变成|0111| 。
重复4~7的过程,直到算法结束。
四、对于算法的思考你会不会想问,这么简单的函数,随便分析一下就可以找到其最大值的位置?这当然没错,但是如果函数是下面这种样子的,也许数学方法就没那么好用了。
emmmmmm,这个公式编辑器有点问题,左括号漂到上面意思是括号内的是指数。总之就是很复杂。
这个函数也可以利用基因算法在求最优解。这里就可以说明白基因和染色体的关系了。x和y是函数的两个参数,一组x和y的取值就是染色体,那么x和y就是组成染色体的两个基因。
1、审视基因和染色体假设取x为0~4 y也为0~4。那么x和y 的基因池都是固定的,那么x和y都用三位01字符串表示。 |001001| 前面三位和为x后面三位为y。那么在交叉时,我们只能以中间为断点,再次强调,基因不能交叉,因为这样会产生基因池以外的基因。例如 染色体|001100| 和染色体|01 10 11| 假设在下划线位置交叉,那么会有一个后代|001111| 这样,y就超出了定义域。那么也可以理解,所谓的突变,也就是在基因池中选择突变对象。当然,如果我们研究的是极度复杂的工作,例如模拟人脑,那么我们也许可以打破这个规则。
2、基因算法可以解决什么问题基因算法绝对不是仅仅来求个函数的最大值,而是利用可以求最优解这个特性来寻找很多优化问题的解。确定参数,就是基因算法的作用。基因算法的作用就是不停的寻找更加优秀的参数,那么说回来,也就是求一个适应性函数的最优参数。换言之,假如我们可以把具体问题转化成适应性函数,那么就可以利用基因算法求解。
另外我们在利用基因算法的时候,其实我们很难预设一个答案,加入我们想要解决的问题过于的复杂,那么最后问题的答案会是什么样子,我们一概不知。
3、基因算法的基础研究—模式定理在深入研究基因算法的数学基础时,必定会碰到模式定理。它可以用来描述某种特定染色体的行为,在未来的学习中,这也是值得人们探究和发展的一门学问。
基因算法就写到这里,写的不好不对的地方,欢迎批评指正(别凶我QAQ)。