社会焦点

如何用深度学习实现程序自动合成

字号+ 作者: 来源: 2017-04-28

如何用深度学习实现程序自动合成,nuke深度合成技术,吴恩达深度学习基础教程,接口实现类是一段程序吗,机器学习与深度学习的区别,python实现聊天程序

  如何用深度学习实现程序自动合成

  ● 作者:Rishabh Singh、Jacob Devlin、Abdelrahman Mohamed和Pushmeet Kohli

  ● 本文译自A conversation with AI pioneer Yoshua Bengio, 请点击文末的阅读原文或直接将网址复制至浏览器中打开即可查看。https://www.microsoft.com/en-us/research/blog/deep-learning-program-synthesis/

过去几十年间计算科学领域取得了长足进展,但编写计算机软件的实操过程却没有根本性转变——程序员必须使用专门的编程语言,以手工方式一步一步地精确编写程序中各项算法逻辑。尽管多年来编程语言变得越来越友好,但是学习如何编程仍然令大多数计算机用户望而却步。

在一篇新近发表的论文中,我们展示了将深度学习用于程序合成的最新研究成果,试图让深层神经网络学习根据用户意图生成计算机程序。用户只需提供几个输入/输出(I/O)示例来指定所期望的程序行为,系统则据此生成相应的程序。

假设用户希望以特定方式对名单进行格式整理(如下所示)。他只需提供几个输入/输出示例,系统就会自动填充剩余的输出(以浅灰色显示)。如果用户需要处理成百上千个输入字符串,这个程序可以节省大量时间。

  如何用深度学习实现程序自动合成

该系统采用领域专用语言(DSL)来生成程序。用户无需了解DSL的细节——实际上他根本看不到程序的内容。在我们的DSL中,对应于上述示例的正确程序是:

  如何用深度学习实现程序自动合成

  程序合成中存在两大关键性难点。首先,在我们的表达性DSL中存在数以万计种可能的程序,而其中的正确程序可能是系统从未见过的。其次,由于I/O示例是由真人手工生成的,所以它们通常包含噪声(例如拼写错误等),如上例所示(在第二个输出示例中,Useato被拼错为Uesato)。

以前,解决这个问题的方法(其中最著名的要数微软Excel的FlashFill系统)是依靠手工编写的规则来引导启发式搜索。然而,这种方法使得DSL的能力很难扩展,不仅需要数年积累的手动规则编写,而且对I/O示例中的任何噪声都非常敏感。

而我们的系统RobustFill则利用了深度学习的最新成果,以数据驱动的方式进行程序合成,无需任何手工编写的规则。相反,它借助最先用于语言翻译的注意力型序列到序列神经网络 (attentionalsequence-to-sequence neural network),以I/O示例为依据生成程序。我们所用神经网络的草图如下,图中提供了详细信息。

  如何用深度学习实现程序自动合成

我们用了数百万个随机生成的I/O+程序对来对系统加以训练,而且由于能够学习DSL语义,它在现实世界的数据上也有着良好表现。总体而言,我们的系统在一系列真实基准上实现了92%的准确性。特别令人鼓舞的是,即使I/O示例包含显著的噪音,系统也能够保持较高的精确度。

  对编程的启示

训练神经网络学习用复杂的函数式语言(FlashFill DSL)进行编程取得成功,这不仅标志着神经程序合成方面一个令人兴奋的突破,而且也是朝着实现更为通用的人工智能迈出了虽小却值得关注的一步。它解决了纳入可解释性这一关键挑战,而且还触及到将知识的分布式表达与符号式表达相关联的重要课题。

我们目前正在扩展这些神经网络,学习用包含状态变量和控制流的DSL所编写的程序,以期生成更丰富的程序类别。我们认为,沿着这个方向进一步研究,将要求我们去进一步了解和处理程序合成及归纳方面所涉及的最基础的技术问题。

  了解更多相关信息:

  “RobustFill: Neural Program Learning under Noisy I/O” by Jacob Devlin, Jonathan Uesato, Surya Bhupatiraju, Rishabh Singh, Abdelrahman Mohamed, and Pushmeet Kohli, in arXiv:1703.07469

  “Neuro-Symbolic Program Synthesis” by Emilio Parisotto, Abdelrahman Mohamed, Rishabh Singh, Lihong Li, Denny Zhou, and Pushmeet Kohli, in 5th International Conference on Learning Representations (ICLR 2017)

为本文做出贡献的实习生有:Emilio Parisotto(卡内基梅隆大学)、Jonathan Uesato(麻省理工学院)、Surya Bhuptairaju(麻省理工学院)

  你也许还想看:

  • LightRNN:深度学习之以小见大
  • 程序编写程序:泛用人工智能领域的一颗明珠
  • 秦涛:深度学习的五个挑战和其解决方案
  •   感谢你关注“微软研究院AI头条”,我们期待你的留言和投稿,共建交流平台。来稿请寄:msraai@microsoft.com。微软小冰进驻微软研究院微信啦!快去主页和她聊聊天吧。

    相关阅读:

  • 电脑自动关闭应用程序
  • 司法鉴定程序通则
  • 深度学习的过去、现在和未来
  • 吴恩达深度学习基础教程
  • python实现聊天程序
  • 如何关闭开机自动启动程序
  • 接口实现类是一段程序吗
  • 机器学习与深度学习的区别
  • 课堂教学中如何促进学生深度学习
  • nuke深度合成技术
  • 哈夫曼编码的程序实现
  • ps保存时出现程序错误
  • 相关推荐:

  • 华为史上最美操作系统,你绝对不能错过的EMUI5.0
  • 国产操作系统典范:deepin操作系统
  • 娱乐办公两不误!这个笔记本能把屏幕拔下来写字
  • 斗鱼响应新规加强监管,坚持打造优质精品直播
  • SpaceX 火箭爆炸原因确定:液态氧过冷成了固态
  • 华为Mate9中国版真机秀 你绝对没发现它有两种版本
  • 99%的人都不知道的微信高效使用术?
  • 乐视网一周蒸发88亿元 贾跃亭反思节奏发展过快
  • 似乎已经战胜传统渠道的小米 今年为什么被OPPO、vivo 打败?
  • 优雅商务风,性能一鸣惊人—TCL 950体验评测
  • 转载请注明出处。


    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章