导航菜单

走向学会编写代码的人工智能

一个新的程序编写AI,SketchAdapt,提供了一条出路。SketchAdapt对成千上万的程序示例进行了培训,学习如何编写短的高级程序,同时让第二组算法找到合适的子程序来填写细节。与自动程序编写的类似方法不同,SketchAdapt知道何时从统计模式匹配切换到效率较低但更通用的符号推理模式以填补空白。

麻省理工学院计算机科学与人工智能实验室(CSAIL)教授Armando Solar-Lezama说:“神经网络非常适合于正确的结构,但不是细节。” “通过分割劳动力 - 让神经网络处理高级结构,并使用搜索策略来填补空白 - 我们可以编写有效的程序来给出正确的答案。”

SketchAdapt是Solar-Lezama与CSAIL教授和麻省理工学院脑力,脑力和机器中心教授Josh Tenenbaum的合作。这项工作将于6月10日至15日在机器学习国际会议上公布。

程序综合或教授计算机编码,长期以来一直是人工智能研究人员的目标。能够自我编程的计算机更有可能更快地学习语言,流利地交流,甚至可以模拟人类的认知。所有这些都让Solar-Lezama成为一名研究生,在那里他为SketchAdapt奠定了基础。

Solar-Lezama的早期作品Sketch,基于如下想法:如果提供高级结构,可以机械地找到程序的低级细节。在其他应用程序中,Sketch激发衍生产品以自动评估编程作业并将手绘图转换为代码。后来,随着神经网络的普及,来自Tenenbaum计算认知科学实验室的学生提出了一种协作,SketchAdapt就是这种协作形成的。

SketchAdapt不是依靠专家来定义程序结​​构,而是使用深度学习来计算出来。研究人员还提出了一个问题:当神经网络不确定要放置哪些代码时,SketchAdapt被编程为将搜索算法留空的位置留空。

该研究的主要作者,麻省理工学院脑与认知科学系的研究生麦克斯韦尔奈说:“该系统自己决定它知道什么,不知道什么。” “当它被卡住,并且没有熟悉的模式可供使用时,它会在代码中留下占位符。然后它使用猜测和检查策略来填补漏洞。“

研究人员将SketchAdapt的性能与微软专有的RobustFill和DeepCoder软件相比较的程序进行了比较,这些软件是Excel的FlashFill功能的后续版本,它根据您的类型分析相邻单元格以提供建议 - 学习如何将一列名称转换为相应电子邮件地址列,例如。RobustFill使用深度学习从示例中编写高级程序,而DeepCoder专门用于查找和填充低级细节。

研究人员发现SketchAdapt在各自的专业任务中表现优于他们重新实现的RobustFill和DeepCoder版本。SketchAdapt在字符串转换时胜过类似RobustFill的程序; 例如,编写一个程序,将社会安全号码缩写为三位数字,并将第一个名字缩写为第一个字母。在编写程序来转换数字列表时,SketchAdapt也比类似DeepCoder的程序做得更好。仅对三行列表处理程序的示例进行了培训,SketchAdapt能够更好地将其知识转移到新场景并编写正确的四行程序。

在另一项任务中,SketchAdapt在将数学问题从英语转换为代码并计算答案时表现优于两个程序。

Rishabh Singh是Solar-Lezama的前研究生,现在是Google Brain的研究员,他说,成功的关键是能够从神经模式匹配转变为基于规则的符号搜索。“SketchAdapt了解了编写程序熟悉部分需要多少模式识别,以及需要多少符号推理才能填写可能涉及新概念或复杂概念的细节。”

SketchAdapt仅限于编写非常短的程序。更多的东西需要太多的计算。研究人员说,尽管如此,它更多的是补充程序员而不是替代它们。“我们的重点是为想要它们的人提供编程工具,”Nye说。“他们可以告诉计算机他们想做什么,计算机可以编写程序。”

毕竟,编程一直在发展。Fortran在20世纪50年代推出时,它的目的是取代人类程序员。“它的全名是Fortran自动编码系统,其目标是编写程序以及人类,但没有错误,”Solar-Lezama说。“它真正做的是自动化程序员在Fortran之前做的很多事情。它改变了编程的本质。“

该研究的另一位合着者是Luke Hewitt。资金由美国空军科学研究办公室,麻省理工学院 - IBM沃森人工智能实验室和美国国家科学基金会提供。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。