说出你的需求,我们AI给你写代码
量子位 出品 | 公众号 QbitAI
说你想干什么,AI就能自动写代码。
现在,我们离这个目标又近了一步。
近日,MIT的一个研究团队放出了新的研究成果。
他们提出了一种灵活组合和推理的方法,在无监督学习的情况下, 来解决AI自动编程遇到的问题。
先给你看几个例子
任务要求
给定一个数组,计算数字翻转过来之后的中位数。
AI会给出代码
(reduce(reverse(digits(deref (sort a)(/ (len a) 2)))) 0
(lambda2 (+( arg1 10) arg2)))
任务要求
输入:
1, [-101, 63, 64, 79, 119, 91, -56, 47, -74, -33]
4, [-6, -96, -45, 17, 26, -38, 17, -18, -112, -48]
输出:
39
8
AI会给出的代码
(MAXIMUM (MAP DIV3 (DROP input0 input1)))
这是怎么做到的?
给人类程序员一个任务,在开始写代码之前,会根据自己的经验来判断代码架构是什么样的。如果没有经验,就要采取推理的方式,来完善代码架构。
这个AI系统,就是模仿了人类结合和推理写代码的方式。
模型分为两个模块,分别是概要生成器(sketch generator)和代码合成器( program synthesizer)。
输入任务要求之后,先经过概要生成器,生成满足任务要求概率比较高的代码概要,即可能满足任务要求的初始代码,细节并不丰富。然后,代码概要进入代码合成器模块,找到满足任务要求的模块。
概要生成器,是一个带有注意力机制的seq2seq循环(RNN),在给定任务之后,通过LSTM编码器对其进行编码,然后再逐token解码。
代码合成器,有两个组成部分广度优先概率枚举器和识别器。前者根据可能性从大到小枚举代码sketch, 后者根据任务要求来指导这一过程。
具体效果怎么样?
为了验证模型的性能,研究团队选择了两个模型与其进行对比。
分别是只有合成器的模型(Synthesizer only)和只有生成器的模型(Generator only)。
只有合成器的模型,相当于研究中代码合成器模块,进行之后,从头开始枚举所有可能的编码。与微软研究院研究团队2016年提出的“Deepcoder”模型媲美。
只有生成器的模型,相当于研究中概要生成器模块,用来预测完整的代码。与微软研究院和MIT团队在2017年提出的“RobustFill”模型媲美。
进行对比的任务是数组列表、字符串转换和自然语言要求。
在数组列表任务中,与其他两项研究相比,研究中的模型可以在简单的程序中呈现很好的性能。
在字符串转换任务中,表现要比只有合成器的模型要好,并且在一定情况下,会好于只有生成器的模型。
真正展现模型能力的,是在Algo数据集中进行的测试,这一数据集中,不仅有数组列表和字符串相关的输入输出示例,还有相应的自然语言描述。
在这个数据集上,研究者检验了模型在非结构化数据情况下的性能。
测试结果表明,模型的表现完全超过了先前学者的研究。
而且,在包含“Even”和“Odd”要求的情况下,性能更加突出了,表明了模型的通用性更强。
如果你对这个研究感兴趣,可以阅读论文,来获取更多的研究细节。
传送门
Learning to Infer Program Sketches
https://arxiv./abs/1902.06349
机器人培训
- 达芬奇机器人献爱心 将主刀公益手术
- 亚马逊将在英国招聘2000多人 重点开发Alexa和无人
- 美、德、英、日、中5国机器人发展全景大盘点
- 国产机器人窗口期 不可错失制造2025弯道超车机会
- 一个小时,这只机械狗“自学”会了走路!
- 三穗长吉镇:无人机飞防作业 稳粮增豆保丰收
- 依靠静电着陆的新型机器人
- 工业机器人推广应用座谈会
- 在苹果的智能机器人软件公司是一种怎样的体验
- 四大家族之KUKA工业机器人应用案例分析
- 万事俱备只欠东风?机器人产业的东风到底在哪
- 欧洲 6 轮送货机器人开始在美国大学推广
- 芜湖:考核第一!6项冠军!
- 人工智能有望打破医疗资源不均衡
- 立讯精密:已进军新能源汽车市场,目标成为全
- 90后用机器人炒菜周入10万,炒菜机器人真的有可