论文阅读---Evolution through Large Models(LLM做GP)通过大型模型的演变

论文概述

本论文提出了一种名为Evolution through Large Models(ELM)的新方法,通过利用大型语言模型(LLM)的能力来提高编程领域的进化过程效率。这种方法允许LLM训练在代码上提出智能的突变,从而避免了许多阻碍程序进化的问题。ELM的优势在于它可以通过生成的数据来提高LLM的搜索能力,从而实现自我优化。此外,这种方法还可以在深度学习和遗传编程(GP)领域找到很多互补之处,从而实现更高效的程序生成。

摘要

本文认为,通过训练生成代码的大型语言模型( large language models,LLMs )可以极大地提高遗传编程( genetic programming,GP )中应用于程序的变异算子的有效性。因为这样的LLMs受益于包含顺序变化和修改的训练数据,所以它们可以近似人类可能做出的变化。为了突出这种演化通过大模型( ELM )的影响的广度,在主实验中,ELM结合MAPElites生成了数十万个Python程序的功能示例,输出了在Sodarace域中工作的步行机器人,这是原始的LLM在预训练中从未见过的。这些例子有助于引导训练一个新的条件语言模型,该模型可以为特定的地形输出正确的步行者。在先前可用零训练数据的领域中,自举能够为给定上下文输出适当工件的新模型的能力对开放性、深度学习和强化学习具有重要意义。这些启示在这里进行了深入的探索,希望能启发ELM现在开辟的新的研究方向。

贡献

提出了通过 LLM 的高效进化程序的 ELM 方法;

提出了通过微调基于 LLM 的变异算子来提高 ELM 随时间搜索能力的技术;

展示了 LLM 训练数据未包含的领域中的 ELM;

验证了通过 ELM 生成的数据可以引导增强的 LLM,从而提供了一条通向开放性的新途径

方法介绍

ELM 的性能依赖于三种组件:由 LLM 驱动的新型变异算子、调用变异算子的进化外循环(evolutionary outer loop)、一种更新 LLM 以进行改进的方法。

ELM 的主要思想是通过利用 LLM 的功能重新思考代码的变异算子。在传统的 GP 中,允许变异的代码语言和更改类型都是有意选择的,使得扰动可以带来有用的功能更改。相比之下,LLM 则使用一种完全不同的变异方式:变异操作器致力于理解代码并以有趣的方式改变它,这更像是人类智能而不是随机事件。

变异算子

随着错误的增加,在 100000 次试验中,没有来自 GP 的变异能解决所有五个问题。相比之下,diff 运算符能够修复全部五个 bug,其性能不受原始错误数量的影响,而是主要受错误类型数的影响。 diff突变与GP突变修复4 - Parity缺陷的比较。在一个有效的4 - Parity实现中,随着bug的逐渐增加,单个变异产生正确解的能力是如何变化的。成功率以对数形式表示,即GP突变的成功率随突变个数(并且在有五个bug时不产生解决方案)呈指数下降。相比之下,diff突变只在第五个bug时退化。基于LLM的变异确实可以对代码进行多个可感的耦合变化。

基于LLM的替代突变在修复4 - Parity缺陷中的比较。不同变异算子在修复bug方面的性能表现为bug被增量地添加到一个工作的4 - Parity实现中。编辑模式和提示工程方法均优于本文实验中使用的diff模型。在代码上训练的LLM上进行快速工程和使用OpenAI API的编辑模式模型都是建立在本文工作基础上的可行选择。

迭代循环

由于变异算子实际上是许多进化算法的模块化组件,因此 ELM 可以在多种语境中实现。该方法最适用于通过已知编程语言进行基因编码的情况,这将最大化 LLM 的优势。任何质量多样性(QD)算法都能运行 ELM,本研究使用 MAP-Elite 算法进行实验。 在每次迭代中,从diff模型的每个独立副本的解的映射中采样一个现有的Python解。每个副本生成一批diff,这些diff被应用到采样的解决方案中,以生成修改的候选解决方案。这些候选人被评估,然后插入地图,如果他们要么建立一个新的小生境,要么胜过小生境当前的冠军。随着迭代的进行,单个初始种子程序会产生多样性的高性能Python程序。

微调

由于变异(diff)算子本身就是一个大型语言模型(LLM),它有可能在不同领域获得不一样的性能提升。LLM 的丰富性提供了通过经验捕捉不同领域细微差别的潜力。微调可以使 ELM 方法的性能在迭代中获得提升。

实验及结果

实验总结

通过在一个名为Sodarace的领域中进行测试,展示了ELM如何在一个完全新的领域中生成数据。通过将ELM与强化学习(RL)相结合,实现了在给定地形条件下输出适当的Sodaracer的能力。最终,ELM展示了如何通过生成数据来提高LLM的搜索能力,从而实现自我优化。

为了突出新方法的潜力,研究者手工构建了一个新域的完整数据集。这个域被称为 Sodarace,其中根据不同的地形构造不同形态的二维移动机器人 Sodaracer。Sodarace 域模拟成本低廉,可以快速迭代,而且通过观察机器人的行走,很容易直观地欣赏设计的复杂性。因此,它便于快速评估一个设计是否在数量和质量上都是成功的。

为了明确 ELM 在本文实验中的贡献,研究者将 Sodaracer 编码为原始 Python 程序,枚举出步行机器人各个部件。通过这种方式,可以证明 ELM 是一种可以直接在现代编程语言上操作的 GP 形式,不需要任何特殊规定。

该研究试图用新方法在 Sodarace 域中用弹簧构建一个二维机器人,让任意几何形状的二维机器人都能行走。

一个单独的 Sodaracer 由一个大小可变的点质量(point mass)集合 (每个点质量都由其初始的 2D 位置描述) 和将质量连接在一起的振荡弹簧组成。机器人的运动是由其弹簧的振动驱动的,每个弹簧都有指定的振动幅度和相位参数 (通常所有弹簧都有相同的周期)。

一个用于训练条件型发明的三段式 pipeline ,其中包括:

1.ELM。搜索一组不同的样本工件。

2.用 ELM 的样本预训练 LLM 。LLM 因此学习了从训练分布中输出样本发明。

3.学会按条件生成。将新的条件输入拼接到 LLM 上,并通过 RL 对其进行微调,以便根据所观察到的条件产生适当的输出结果。

Sodaracer 可以在 Python 中通过直接向 Python 字典中添加元素来构建,这些元素包含「关节」和「肌肉」这样的键,而一个更加 Python 化的接口是创建一个有两种方法的简单类: 「添加关节」(添加弹簧)和「添加肌肉」(添加点质量),这里封装在一个称为「walker creator」的类中。 1.初始化一个数据集:(从上到下依次为:CPPN种子、放射状种子、方形种子)

2.用 ELM 的样本预训练 LLM,让 AI 在给定形状的基础上学会设计机器人,例如从方块形状逐步变身成活蹦乱跳的双足机器人:

3.通过强化学习算法对 LLM 模型进行微调,让二维机器人适应不同的地形。

实验结果

通过使用智能LLM(大型语言模型)进行变异和QD(质量多样性)算法,ELM(演化算法)能够在一个完全新颖的领域生成数十万个有效的训练样本,该领域之前没有可用数据。

在将生成的数据用于训练LLM后,实验发现LLM能够为给定的地形生成合适的Sodaracer。

通过将LLM与TEN(地形编码器)结合,实验成功地训练出一个能够根据观察到的地形条件生成Sodaracer的模型。

实验还发现,在某些情况下,使用RL(强化学习)进行微调后,模型在特定地形上的性能优于使用预训练模型进行测试时的性能。

总结

GP主要参与了以下几个方面的工作:

1.ELM方法的实现:通过使用基于大型语言模型(LLM)的智能突变,实现了一种高效演化程序的方法,称为ELM(Evolution through Large Models)。

2.基于LLM的突变操作器的微调:通过微调基于LLM的突变操作器,提高ELM在搜索过程中的能力。

3.在LLM训练数据之外的领域中应用ELM:展示ELM在一个不包含在LLM训练数据中的领域中的应用。

4.通过ELM生成的数据启动增强LLM:验证通过ELM生成的数据可以启动一个具有新颖路径的增强LLM,为开放式发展提供可能。

简而言之,GP在这篇文章中的主要贡献是通过结合智能LLM突变和QD算法,实现了一种名为ELM的高效演化程序方法,并展示了其在实际应用中的潜力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值