当前位置:网站首页>AI自己写代码让智能体进化!OpenAI的大模型有“人类思想”那味了
AI自己写代码让智能体进化!OpenAI的大模型有“人类思想”那味了
2022-06-25 03:32:00 【QbitAl】
金磊 梦晨 发自 凹非寺
量子位 | 公众号 QbitAI
搞事情!
AI“看”了一眼GitHub上人类都是怎么提交更新(commit)的,然后就模仿人类程序员修改代码……
最终,这个AI还成功“调教”出了个智能体机器人:

没开玩笑,这种细思极恐的事情,在OpenAI最新发布的一项研究中,就真真的发生了……

原本呢,研究人员要解决的是一个遗传程序设计(GP)问题——让一个智能体机器人学会移动。
(GP是演化计算中的一个特殊领域,它主要针对自动构建程序去独立解决问题。)
但OpenAI剑走偏锋,把自家的大规模语言模型(LLM)放了进来,结果就是一个大大的“万万没想到”。
以前在智能体演进的过程中,人类研究员是需要参与进来做一些细节调整、确定演进方向等工作,让智能体往好的方向发展。
现在好了,这些活儿都让大模型给包揽了,自己学、自己写代码、自己去“调教”:

这事一经论文一作Joel Lehman在网络曝光,瞬间引发了网友们的大量关注:

一位程序员网友在看完后直呼“跟不上(技术)发展的步伐”了:

甚至OpenAI自己都在研究中说:
弥合了进化算法在人类思想水平运行的鸿沟。
那么这件“魔幻”的事情,AI到底是怎么办到的?
看一眼GitHub,AI自己动手敲代码
在虚拟环境中设计可移动的机器人,是遗传算法研究中很火的一个项目。
特别是Sodarace竞赛因为需要的计算量少,过程方便可视化很受欢迎。

规则很简单,由“关节”和“肌肉”组成的机器人在各种地形上赛跑。
OpenAI还特意把整个竞赛程序从专用的遗传编码改写成了Python版本,为了展示新方法对现代编程语言的通用性。
比如这样一段Python代码,就可以作为初始种子机器人。

定义好一个正方形的四个顶点关节、终点关节,相互之间都用“肌肉”连接好后,结果如下。

不过这样方方正正的结构一动都不能动,接下来就需要靠遗传算法对代码做修改。
研究团队认为,用传统遗传算法修改代码VS人类程序员自己动手,在效率上还有两点差距:
一个是软件越来越复杂,人类可以搞模块化的代码复用来应对,而目前最先进的遗传算法也无法在人类使用的编程语言上做到这一点。
另一个是几乎所有遗传算法靠的都是随机突变(mutation),而人类程序员每一次修改代码都带有目的,或者是增加功能、或者是改进效率、又或者是修复bug。
那么有没有办法让AI学习到人类是如何修改代码的呢?
还真有,所需的训练数据都存在GitHub上。
优秀的程序员每次提交代码都会写好commit描述,说清楚这一次提交修改了什么内容。

commit描述配合上提交前后代码对比的diff数据,就是AI绝佳的学习材料。

研究人员筛选出一些描述意图明确、修改的代码量不大的提交数据来训练一个GPT-3架构的AI模型。
相当于让AI向人类程序员学习了如何有目的的修改一段代码。
这篇论文所用的模型也不需要完全版GPT-3的1750亿参数那么大,最高7.5亿参数就足以。

由此得到了基础的AI模型,将在遗传算法中扮演变异算子的角色。
接下来让AI自己设计新机器人的流程总共分三步。

第一步,先用经典的MAP-Elites算法生成一组初始机器人。

这是一种QD(质量多样性)算法,可以保证机器人行为不同且质量都很高。

第二步,用第一步产生的初始数据做预训练,让AI先学会设计出训练数据分布内的机器人。
也就是开头处那张在网上惊艳了众人的动图,展示了AI如何一步步把无法移动的“方块”改造成双腿交替弹跳移动机器人。

第三步,再结合上强化学习算法做微调,让AI能根据不同地形条件生成能适应环境的机器人。


最终,研究人员选取了从最初的三个种子进化而来的机器人做效果展示。
可以看出它们的结构和移动方式都完全不同。

网友惊呼“思路清奇”
这项研究一经公布,可谓是一石激起千层浪。
许多网友都惊叹于这种“大模型+演进算法”结合的新奇方式:

做过与之相关工作的研究人员也表示,从未想过能用大模型以diffs的形式来学习突变:

而除了对研究形式和本身的讨论之外,也有网友配上了这样图:

Emmm……是有点那种味了。
团队介绍
这项研究的团队成员均来自OpenAI。
论文一作是Joel Lehman,是一位机器学习科学家。其聚焦的领域包括人工智能安全、强化学习和开放式搜索算法。

与此同时,Joel Lehman此前基于对人工智能发展的思考合写过一本科学读物《为什么伟大不能被计划出来:客观的秘密》:

而对于这项研究的下一步,Joel Lehman本人表示:
还有一个重要问题,就是模型能够多大程度上应用到其它环境中。
GP中的突变功效现在可以通过ELM大幅提高,这将激发出一系列广泛的新应用和研究方向。
那么这项研究是否也对你产生了新的启发呢?
欢迎在评论区留言讨论~
参考链接:
[1]https://arxiv.org/abs/2206.08896
[2]https://twitter.com/joelbot3000/status/1538770905119150080?s=21&t=l8AASYjgC6RAEEimcQaFog
— 完 —
「量子位·视点」直播报名
随着生物识别技术的发展,数字时代的增强身份认证如何打造?既有安全又有隐私的电子证照如何实现?而人工智能的本质和真正价值将会如何在产业数字化中体现?
6月23日周四,参与直播,为你解答~

点这里关注我,记得标星哦~
边栏推荐
- 腾讯开源项目「应龙」成Apache顶级项目:前身长期服务微信支付,能hold住百万亿级数据流处理...
- 怎么开户打新债 开户是安全的吗
- Pytorch learning notes (VII) ------------------ vision transformer
- 同花顺证券开户是安全的吗?
- Is it safe to open an account by fraud
- 数组-一口气冲完快慢指针
- Lihongyi, machine learning 6 Convolutional neural network
- 用向量表示两个坐标系的变换
- 在Microsoft Exchange Server 2007中安装SSL证书的教程
- Difference between left join on and join on
猜你喜欢

CUDA编程入门极简教程

Performance rendering of dSPACE

mysql学习笔记--单张表上的增删改查

Easy to use dictionary -defaultdict

Rebeco: using machine learning to predict stock crash risk
![[proteus simulation] Arduino uno+ nixie tube display 4X4 keyboard matrix keys](/img/80/c97410c88856479e6be9de67936790.png)
[proteus simulation] Arduino uno+ nixie tube display 4X4 keyboard matrix keys

腾讯开源项目「应龙」成Apache顶级项目:前身长期服务微信支付,能hold住百万亿级数据流处理...

Solution of separating matlab main window and editor window into two interfaces

What is an SSL certificate and what are the benefits of having an SSL certificate?

automated testing
随机推荐
Egg 服务搭建微信公众号的基础服务
股票在网上开户安全吗?在线等答案
支付宝被风控7天怎么办?付解决方案
华为上诉失败,被禁止在瑞典销售 5G 设备;苹果公司市值重获全球第一;Deno 完成 2100 万美元 A 轮融资|极客头条
Error log format and precautions
DSPACE的性能渲染问题
Copilot免费时代结束!学生党和热门开源项目维护者可白嫖
股票开户用客户经理发的开户链接安全吗?知道的给说一下吧
Gold medal scheme of kaggle patent matching competition post competition summary
Pytorch learning notes (VII) ------------------ vision transformer
好用的字典-defaultdict
TCC mode explanation and code implementation of Seata's four modes
Go synchronization waiting group
Tutoriel d'installation MySQL
AI自己写代码让智能体进化!OpenAI的大模型有“人类思想”那味了
20 years ICPC Macau station L - random permutation
Please check the list of commonly used software testing tools.
Is it safe to open an account online? Online and other answers
nacos实践记录
Once beego failed to find bee after passing the go get command Exe's pit