当前位置: 首页 > 科技观察

说你想说的,我们的AI会为你写代码

时间:2023-03-19 02:16:17 科技观察

说你想说的,AI会自动写代码。现在,我们离这个目标又近了一步。近日,麻省理工学院的一个研究团队发布了新的研究成果。他们提出在无监督学习的情况下,将模式识别和推理灵活结合,解决AI自动编程中遇到的问题。先举几个例子:任务要求:给定一个数组,计算数字翻转后的中位数。AI会给出代码:(reduce(reverse(digits(deref(sorta)(/(lena)2))))0(lambda2(+(*arg110)arg2)))任务要求:输入:1,[-101,63,64,79,119,91,-56,47,-74,-33]4,[-6,-96,-45,17,26,-38,17,-18,-112,-48]输出:398AI将给出代码:(MAXIMUM(MAPDIV3(DROPinput0input1)))这是如何工作的?给人类程序员一个任务,在开始写代码之前,他们会根据自己的经验判断代码结构是什么样子的。如果你没有经验,你必须使用推理来改进代码结构。这个人工智能系统通过结合模式识别和推理来模仿人类编写代码的方式。该模型分为草图生成器和程序合成器两个模块。输入任务需求后,先通过大纲生成器生成满足任务需求概率比较高的代码大纲,即可能满足任务需求的初始代码,细节不丰富。然后,代码配置文件进入代码合成器模块,寻找满足任务要求的模块。摘要生成器,它是一个带有注意力机制的seq2seq递归神经网络(RNN),在给定的任务被LSTM编码器编码后,然后逐个标记地解码。具有两个组件的代码合成器:广度优先概率枚举器和神经网络识别器。前者根据可能性从大到小枚举codesketch,后者根据任务需求指导流程。具体作用是什么?为了验证模型的性能,研究团队选取了两个模型进行对比。只有合成器模型(Synthesizeronly)和发生器模型(Generatoronly)。synthesizer-only模型,相当于研究中的代码合成器模块,在模式识别后从头开始枚举所有可能的编码。媲美微软研究院研究团队2016年提出的“Deepcoder”模型。generator-only模型,相当于研究中的summarygenerator模块,用于预测完整代码。对比微软研究院和MIT团队在2017年提出的“RobustFill”模型。对比的任务是数组列表、字符串转换和自然语言要求。在数组列表任务中,与其他两项研究相比,研究中的模型在简单的程序中可以表现出非常好的性能。在字符串转换任务上,它优于仅合成器模型,并且在某些情况下优于仅生成器模型。真正体现模型能力的是AlgoLisp数据集中的测试。在这个数据集中,不仅有与数组列表和字符串相关的输入和输出示例,还有相应的自然语言描述。在这个数据集上,研究人员测试了模型在非结构化数据情况下的性能。测试结果表明,该模型的性能完全超过了以往学者的研究。此外,当包含“Even”和“Odd”要求时,性能更加突出,表明该模型更通用。如果您对这项研究感兴趣,可以阅读论文以获取更多研究细节。传送门:学习推断程序草图https://arxiv.org/abs/1902.06349