全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 数据分析与数据挖掘
926 0
2020-10-14
关于Python动手遗传算法的问答
重要要点
遗传算法是受自然进化原理启发的一系列搜索,优化和学习算法。
遗传算法可以应用于搜索和优化问题,例如计划,调度,游戏和分析。
遗传算法可用于以多种不同方式改善机器学习和深度学习模型,例如特征选择,超参数调整和架构优化。
通过优化寻求的累积奖励,可以将遗传算法用于强化学习。
遗传编程是遗传算法的一种特殊情况,可用于生成具有所需功能的计算机程序。
还有许多其他受生物启发的算法,可以使用生物模型和行为来解决问题。
Eyal Wirsansky撰写的《Python上的动手遗传算法》是一本新书,它探讨了遗传算法的世界,以解决搜索,优化和与AI相关的任务,并改善机器学习模型。InfoQ采访了Eyal Wirsansky,介绍了遗传算法的工作原理以及它们的用途。
除了我们的采访之外,InfoQ还可以获取示例章节,可以在此处下载该章节, 或者,如果您希望直接从作者那里获得该章节,可以通过加入他的AI培训邮件列表在此处下载。
InfoQ:遗传算法如何工作?
Eyal Wirsansky:遗传算法是受自然进化原理启发的一系列搜索算法。他们模仿自然选择和繁殖的过程,从一组随机解开始,评估每个解,然后选择更好的解来创建下一代解。随着世代相传,我们在解决问题上将拥有更好的解决方案。这样,遗传算法可以为涉及搜索,优化和学习的各种问题提供高质量的解决方案。同时,它们类似于自然进化,因此遗传算法可以克服传统搜索和优化算法遇到的一些障碍,尤其是对于具有大量参数和复杂数学表示形式的问题。
InfoQ:遗传算法可以解决什么类型的问题?
Wirsansky:遗传算法可用于解决几乎所有类型的问题,但在传统算法无法使用或在实际时间内无法产生可用结果的情况下,它们尤为突出。例如,具有非常复杂或不存在的数学表示形式的问题,涉及的变量数量很大的问题以及嘈杂或不一致的输入数据的问题。此外,遗传算法可以更好地处理“欺骗性”问题,而传统算法可能会“陷于”次优解决方案中。
遗传算法甚至可以处理无法单独评估单个解决方案的情况,只要有一种方法可以比较两个解决方案并确定哪个更好。一个示例可以是基于机器学习的代理,该代理在模拟竞赛中驾驶汽车。遗传算法可以通过使代理的不同版本相互竞争以确定哪个版本更好来优化和调整代理。
InfoQ:遗传算法的最佳用例是什么?
Wirsansky:最常见的用例是,我们需要使用许多不同的可用零件的组合来组装解决方案。我们想选择最佳组合,但可能组合的数量太大,无法全部尝试。遗传算法通常可以在合理的时间内找到良好的组合。例如,可以安排人员,计划交付路线,设计桥梁结构,还可以从许多可用的构建模块中构建最佳的机器学习模型,或者为深度学习模型找到最佳的架构。
另一个有趣的用例是,评估基于人们的意见或回应。例如,您可以使用遗传算法方法来确定网站的设计参数(例如调色板,字体大小和页面上组件的位置),这些参数将获得客户的最佳响应,例如转换或保留。这个想法也可以用于“遗传艺术”,即人眼(或耳朵)愉悦的人工绘画或音乐。
遗传算法也可以用于“进行中的优化”,即最佳解决方案可能随时间变化的情况。该算法可以在不断变化的环境中连续运行,并通过基于当前一代更新最佳解决方案来动态响应这些变化。
InfoQ:遗传算法如何为监督学习选择最佳的功能子集?
Wirsansky:在许多情况下,减少某些功能(在监督学习中用作模型的输入)可以提高模型的准确性,因为某些功能可能无关或多余。这还将导致更简单,更好的泛化模型。但是我们需要弄清楚我们要保留哪些功能。由于要从大量潜在的组合中找到最佳的组合,遗传算法提供了一种非常实用的方法。每个可能的解决方案都由一系列布尔值表示,每个特性一个。
布尔值(“ 0”或“ 1”)表示不存在或不存在相应功能。这些布尔值列表用作遗传材料,可以在我们“配对”它们时在解决方案之间交换,甚至可以通过随机翻转值进行突变。使用这些“配合”和“变异”操作,我们可以从先前的操作中创造出新的一代,同时为产生性能更好的模型的解决方案提供优势。一段时间后,我们将获得一些好的解决方案,每个解决方案都代表功能的一个子集。在本书的第7章(我们的示例章节)中,使用UCCI python数据集使用UCI“ Zoo”数据集对此进行了演示,该数据集是通过从原始16种功能中选择6种特定功能来实现最佳性能的。
InfoQ:将遗传算法与机器学习一起用于超参数调整可以带来什么好处?
Wirsansky:每个机器学习模型都使用一组超参数,这些超参数是在进行训练之前设置的值,这些值会影响学习的方式。超参数对模型性能的综合影响可能很明显。不幸的是,找到超参数值的最佳组合(也称为超参数调整)可能就像在大海捞针中一样困难。
两种常见的方法是网格搜索和随机搜索,每种方法都有其自身的缺点。可以两种方式使用遗传算法来改进这些方法。一种方法是优化网格搜索,因此,我们不必搜索网格上的每个组合,而只能搜索组合的子集,但仍然可以获得良好的组合。另一种方法是对超参数空间进行全面搜索,因为遗传算法能够处理大量参数以及不同的参数类型(连续,离散和分类)。在本书的第8章中,使用python代码使用UCI'Wine'数据集演示了这两种方法。
InfoQ:如何在强化学习中使用遗传算法?
Wirsansky:强化学习(RL)是机器学习中非常令人兴奋且充满希望的分支,具有处理复杂的,类似于日常生活的任务的潜力。与监督学习不同,RL不提供即时的“对/错”反馈,而是提供一种寻求长期累积奖励的环境。这种设置可以看作是优化问题,这是遗传算法擅长的另一个领域。
结果,遗传算法可以几种不同的方式用于强化学习。一个示例可以是通过将输入值映射到输出值来确定与其环境交互作用的神经网络的权重和偏差。本书的第10章包含两个使用OpenAI Gym环境“山地车”和“购物车”将遗传算法应用于RL任务的示例。
InfoQ:什么是生物启发式计算?
Wirsansky:遗传算法只是称为进化计算的一大类算法中的一个分支,所有这些算法均受到达尔文进化论的启发。该家族中一个特别有趣的成员是遗传编程,它开发了旨在解决特定问题的计算机程序。更广泛地讲,由于进化计算技术是基于各种生物系统或行为的,因此可以将它们视为称为生物启发式计算的算法家族的一部分。
在这个家族的许多引人入胜的成员中,有一个是“蚁群优化”(Ant Colony Optimization),它模仿某些种类的蚂蚁定位食物并标记出食物的路径,从而使食物的位置更近,更丰富。人工免疫系统,能够识别和学习新的威胁,并应用获得的知识并在下次检测到类似威胁时做出更快的响应;以及基于群鸟或鱼群行为的粒子群优化,其中小组中的每个人在没有中央监督的情况下共同努力实现一个共同的目标。
另一个相关的广泛的计算领域是“人工生命”,涉及以不同方式模仿自然生命的系统和过程,例如计算机模拟和机器人系统。本书的第12章包括两个用Python编写的相关示例,一个使用遗传编程解决问题,另一个使用粒子群优化。

关注 CDA人工智能学院 ,回复“录播”获取更多人工智能精选直播视频!


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群