
在过去的几十年中,无论在硬件组织还是软件架构上,计算机行业已经发生了翻天覆地的变化,各种软硬件产品的性能和用户体验均得到了显著提升。
但对程序员而言,软件编码的本质似乎并没有什么本质的改变:无论哪种编程语言,仍然需要程序员根据算法逻辑和实现步骤一步一步地手动敲入代码。虽然近几年随着编码工具的改进和编程语言的版本更新,对于程序员而言,这一过程已经相当方便了,但学习如何编程仍然是诸多计算机用户不得不面对的一道难题。
近日,微软在论文中公布了一项最新的代码合成系统: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 仍能够保持高水准的精确度。
Implications for Programming
在 FlashFill DSL 这样的强大函数语言上,成功地训练神经架构学习编程,是神经代码合成的一项了不起的成就。微软表示,这同时也是迈向通用 AI 的一小步。RobustFill 解决了加入可编译性( interpretability)的核心难题,并探索了用知识的符号表示连接分布式表达( connecting distributed representations with symbolic representations of knowledge)这一课题。
微软最后在官方博客宣布:
“我们正在开发这些架构的扩展,用变量和控制流来学习 DSL 中的代码,以生成更丰富的代码类。我们相信,照这个方向走下去需要我们研究、解决代码合成和归纳问题中的关键技术难关。”
microsoft
相关资讯
最新热门应用
非小号交易平台官网安卓版
其它软件292.97MB
下载
币交易所地址
其它软件274.98M
下载
iotx交易所app
其它软件14.54 MB
下载
zt交易所安卓最新版
其它软件273.2 MB
下载
币拓交易所bittok
其它软件288.1 MB
下载
u币交易所平台app
其它软件292.97MB
下载
热币全球交易所app官网版
其它软件287.27 MB
下载
多比交易平台app
其它软件28.28MB
下载
币赢交易所app官网安卓版
其它软件14.78MB
下载
toncoin币交易所安卓版
其它软件48MB
下载