程序员失业第一步?斯坦福研究员用AI从编译器反馈中学习改Bug( 三 )


程序合成 , 特别是可以将自然语言描述(例如英语)转换为代码(例如Python , C ++)的系统是很有用的 , 因为它们可以帮助更多的人使用编程语言 。
在SPoC(伪代码-to-代码)中 , 任务是从伪代码(程序的自然语言描述)合成C ++代码实现 。
程序员失业第一步?斯坦福研究员用AI从编译器反馈中学习改Bug
本文插图
但是 , 现有合成器(应用于SPoC的机器翻译模型)遇到的一个挑战是它们倾向于输出不一致的代码 , 这些代码无法编译 , 例如 , 在上图中 , 变量i在合成代码中被声明了两次 。
作者发现可以将程序修复模型应用于此无效代码 , 并将其修复为正确的代码 , 从而帮助完成程序合成任务 。
在对SPoC的评估中 , 使用本文的修复模型可使最终合成成功率从现有系统的34%提高到37.6% 。
4 总结
在这项工作中 , 作者研究了如何使用机器学习来修复报错信息中的程序 , 并提出了三个主要见解:

  1. 报错信息对学习程序Bug修复而言至关重要 。
  2. 程序反馈图(代码和错误消息的共同表示)有助于对修复的原因进行建模(例如 , 跟踪引起报错的变量) 。
  3. 自监督学习使人们能够将免费获取的、未标记的程序(例如GitHub开放代码)转换成有用的程序修复训练示例 。
这项工作还提供了一个“从反馈中学习”的通用框架 , 该框架具有各种应用程序:基于注释编辑文档 , 在交互对话框中向用户学习等 。
本文GitHub上源代码/数据链接:
https://github.com/michiyasunaga/DrRepair
最后需要指出的是 , 本文只是AI从编译器反馈中学习修改代码Bug的一项研究工作 , 还远远不能用于实际生产环境开发中 。
这只是程序员开发AI程序让自己失业的远大理想的第一步~
参考链接:https://ai.stanford.edu/blog/DrRepair/
文末附上两种祖传无Bug的秘法:
秘法1:佛祖保佑~
程序员失业第一步?斯坦福研究员用AI从编译器反馈中学习改Bug
本文插图
秘法2:神兽保佑~
程序员失业第一步?斯坦福研究员用AI从编译器反馈中学习改Bug
本文插图

程序员失业第一步?斯坦福研究员用AI从编译器反馈中学习改Bug
本文插图
程序员失业第一步?斯坦福研究员用AI从编译器反馈中学习改Bug
本文插图
【程序员失业第一步?斯坦福研究员用AI从编译器反馈中学习改Bug】