还在费心学编程?微软用深度学习 AI 帮你写代码

在过去的几十年中,无论在硬件组织还是软件架构上,计算机行业已经发生了翻天覆地的变化,各种软硬件产品的性能和用户体验均得到了显著提升。

但对程序员而言,软件编码的本质似乎并没有什么本质的改变:无论哪种编程语言,仍然需要程序员根据算法逻辑和实现步骤一步一步地手动敲入代码。虽然近几年随着编码工具的改进和编程语言的版本更新,对于程序员而言,这一过程已经相当方便了,但学习如何编程仍然是诸多计算机用户不得不面对的一道难题。

雷锋网消息,近日,微软在论文中公布了一项最新的代码合成系统:RobustFill。它基于深度学习技术,可以根据用户指定的输入输出样例进行特征提取,然后自动合成能够实现相应功能的软件代码,大大缩减了程序员的编码工作量。

举例来说,假设用户需要编码实现如下功能:将输入的人名信息进行规范化缩写后输出。具体如下图所示,当输入人名为 “jacob daniel devlin” 时,系统应该输出 “Declin,J” 。基于 RobustFill,用户只需要提供一些简单的输入输出样例(图中前三行黑色字体),系统就能自动合成实现这一功能的软件代码,并输出正确结果(图中后三行灰色字体)。如果用户需要处理的人名有成千上万个,这就能节约大量的处理时间。

RobustFill 系统生成的代码基于 DSL(Domain Specific Language),即领域特定语言。雷锋网获知,用户并不需要理解 DSL 的编程细节,实际上,用户根本看不到 DSL 代码,而只需要关注具体的功能实现就行了。对应上述人名缩写样例,RobustFill 生成的 DSL 代码如下所示:

Concat(
  ToCase(
      GetToken(
          input,
          Type=Word,
          Index=-1),
      Type=Proper),
  Const(", "),
  ToCase(
      SubString(
        GetToken(
            input,
            Type=Word,
            Index=1),
        Start=0,
        End=1),
      Type=Proper),
  Const("."))

自动代码合成的难点主要有两个:

  • 一是系统可以自动合成万亿级的不同的 DSL 代码组合,如何判断哪一种是正确结果;
  • 二是用户提供的输入输出样例一般都是人工输入,难免会出现一些笔误(例如上面人名缩写的例子中,表格第二行,用户把“Useato”写成了“uesato”),系统如何避免这些笔误的不良影响。

针对这两个问题,此前的解决方案是微软 Excel 软件中的 FlashFill 系统。该系统凭借开发人员手动设置规则和启发式搜索(Heuristic Search)的方式,为用户输出特定功能的代码。但 FlashFill 系统严重弱化了 DSL 语言的扩展能力,并且需要开发者大量的人工输入,同时对人工输入的笔误也非常敏感,因此并不是最优的解决方案。

与 FlashFill 不同,在深度学习技术的支持下,RobustFill 可以利用数据驱动的方式进行代码合成,而无需开发者手动设置规则。此外,RobustFill 还使用了此前用于自然语言翻译的一种名为“attentional sequence-to-sequence neural network”(注意力序列到序列神经网络)的技术,因此才能基于用户给定的输入输出样例,自动合成代码。RobustFill 的大体结构流程如下图所示。

微软用数百万随机生成输入/输出和对应的编码来训练该系统。由于 RobustFill 能学会 DSL 的语法,微软认为它在真实数据上会有良好表现。雷锋网(公众号:雷锋网)了解到,总的来说,微软 RobustFill 在真实测试中达到了 92% 的精确度。最让人感到鼓舞的是,即便输入/输出样例包含大量噪音,RobustFill 仍能够保持高水准的精确度。

意义

在 FlashFill DSL 这样的强大函数语言上,成功地训练神经架构学习编程,是神经代码合成的一项了不起的成就。微软表示,这同时也是迈向通用 AI 的一小步。RobustFill 解决了加入可编译性( interpretability)的核心难题,并探索了用知识的符号表示连接分布式表达( connecting distributed representations with symbolic representations of knowledge)这一课题。

微软最后在官方博客宣布:

“我们正在开发这些架构的扩展,用变量和控制流来学习 DSL 中的代码,以生成更丰富的代码类。我们相信,照这个方向走下去需要我们研究、解决代码合成和归纳问题中的关键技术难关。”

via microsoft

本文作者:恒亮

本文转自雷锋网禁止二次转载,原文链接

时间: 2024-12-13 19:26:20

还在费心学编程?微软用深度学习 AI 帮你写代码的相关文章

从Caffe开始深度学习实战,徒手hack代码乐趣更多

从Geoffrey Hinton 2006年的论文算起,这一波深度学习(DL)浪潮才10年,而如果只算国内,深度学习的流行也不过5年,尽管如此,深度学习现在已经扎根中国互联网,成为BAT.京东.360.今日头条等公司的基础技术和战略技术,与之伴随的,则是深度学习技术人员的快速成长,例如,阿里云工程师卜居(赵永科)博客,2014年才开始接触深度学习实战,如今已在深度学习及计算优化方面方面有很独到的见解.卜居在最近写了一本浓缩其深度学习实战经验的书--<深度学习-21天实战Caffe>,该书获得了

手把手教你安装深度学习软件环境(附代码)

为了进行强化学习研究,我最近购置了一台基于 Ubuntu 和英伟达 GPU 的深度学习机器.尽管目前在网络中能找到一些环境部署指南,但目前仍然没有全面的安装说明.另外,我也不得不阅读了很多文档来试图理解安装细节--其中的一些并不完整,甚至包含语法错误.因此,本文试图解决这个问题,提供一个详尽的软件环境安装指南. 本文将指导你安装 操作系统(Ubuntu) 4 种驱动和库(GPU 驱动.CUDA.cuDNN 和 pip) 5 种 Python 深度学习库(TensorFlow.Theano.CNT

Nvidia旨在培训100000名开发人员学习深度学习AI技术

Nvidia表示计划通过Deep Learning Institute培训10万名开发人员. 对于Nvidia来说,Deep Learning Institute致力于培养机器学习和人工智能的开发人员,是一种能够创造最终产生更多GPU销售的专业知识的一种方法. IDC估计Nvidia的打算是,到2020年,所有应用程序的80%将拥有人工智能组件. Nvidia的Deep Learning Institute于一年前推出,并在学术机构.公司和政府机构举办了培训活动.到目前为止,Nvidia已经培训

玩儿游戏也能学编程?12个学习编程的游戏化平台

近来人们日益认识到编程的重要性,并发现它逐渐成为简历上另一种不可或缺的技能.本文将会介绍一些有助于通过游戏化学习编程的教学平台. 基于以上原因,有越来越多关注未来趋势的人注意到了编程,也因此我们能看到,目前出现了许许多多旨在通过直观有益的方式教授编程的教学平台.为了达成目的,他们采用了游戏化的教学方式. ◆ ◆ ◆ Codecademy 订阅: 免费  语言: HTML/CSS, Python, PHP, Ruby, APIs, Javascript, jQuery 针对级别: 初学者 这个平台

编程规范-程序员们都应该这样写代码

基本要求 1.1 程序结构清析,简单易懂,单个函数的程序行数不得超过100行. 1.2 打算干什么,要简单,直接了当,代码精简,避免垃圾程序. 1.3 尽量使用标准库函数和公共函数. 1.4 不要随意定义全局变量,尽量使用局部变量. 1.5 使用括号以避免二义性. 2.可读性要求 2.1 可读性第一,效率第二. 2.2 保持注释与代码完全一致. 2.3 每个源程序文件,都有文件头说明,说明规格见规范. 2.4 每个函数,都有函数头说明,说明规格见规范. 2.5 主要变量(结构.联合.类或对象)定

情趣编程学习网站:边写代码边看视频美女教员边脱衣服

最近有个网站引发了不小的争议.一个名为"代码宝贝"(Code Babes)的站点,以美女为噱头,教http://www.aliyun.com/zixun/aggregation/17962.html">男性用户学习编程.为了让用户对码代码保持足够的热情,他们做了一个非常禽兽的设计:随着编程能力的提升,美女教员身上的衣服会越脱越少-- "代码宝贝"与编程者码出来的"宝贝"一毛钱关系都没有,该网站的这种做法虽然抓住了男人的心,但是也让

AI派系之争如火如荼,问谁是英雄? 概率编程 VS 深度学习

AI派系之争如火如荼,问谁是英雄? 概率编程V.S.深度学习 作者介绍: Cade Metz是世界著名杂志WIRED(连线)的高级编者,主要负责人工智能,比特币,数据中心,计算机软硬件等前沿领域的信息搜集与写作.如果你有新鲜好玩的新闻与Cade分享,请发邮件到cade_ketz@wired.com        算法大师Pedro Domingos在其著作<The Master Algorithm>中,把各种用以实现AI的技术称为AI派系.正如华盛顿大学计算机科学家所解释的,每个派系都表现出其

深度学习洪流:为何它能瞬间改变你的生活? (下)

tech2ipo 编者按:我们和电脑之间的交流正在发生着转变,而深度学习也已经润物细无声地进入我们的生活,甚至在你意识到这一点之前,世界已经截然不同. 本文首发于 fortune,分上下篇,由老吕IO.江小片及何忞联合编译,未经雷锋网(公众号:雷锋网)允许不得转载. 什么是人工智能?  人工智能 人工智能是一个广义概念,它可以应用到任何一种可以使计算机模拟人类智慧.使用逻辑算法.决策树.机器学习(包括深度学习)的技术中. 机器学习 它是人工智能的一个分支,包括能使机器根据经验完成任务的深度统计技

互联网世界的“人工智能”——探秘“深度学习”的前世今生

最近一段时间里,Facebook.Google.Yahoo!.百度等各大公司都在尝试将深度学习(deep learning)算法运用到产品开发中,以期使产品更智能化,提升用户体验.在深度学习持续走红的当下,本文作者对这一概念做了梳理,并分享了他对深度学习的实用性及未来发展的看法. 本周一,加利福尼亚州的Lake Tahoe.Facebook CEO Mark Zuckerburg造访了神经信息处理系统(Neutral Information Processing Systems, 下文简称NIP