
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
下面昆明达内小编跟大家说说,最近微软研究者推出的RobustFill让梦想更近了一步,他们的研究成果即将在ICLR 2017大会上出现。
在过去几十年中,计算机科学有了长足的发展,但人们编写计算机软件的过程却没有发生根本的改变——程序员必须使用特定的程序语言一步步手工编写程序的精确算法逻辑。昆明达内培训小编知道尽管编程语言近年来正在变得越来越友好,但这项工作仍然是绝大多数计算机用户未曾接触的事物。
该系统通过域特定语言(domain specific language,DSL)生成用于执行任务的程序,用户不需要理解DSL的所有细节。事实上,在使用过程中,用户完全不会看到编程的过程。在微软的DSL中,对应于上个例子的正确程序是:
Concat(
昆明达内培训小编知道自动生成程序面临着两个重大挑战。第一、DSL表达程序有数以亿计的可能性,而用户真正需要的程序可能完全未曾在系统中出现过;第 二、因为I/O例子是由人类手动输入的,这意味着其中可能经常会出现噪音(例如错字)。如上例所示,第二个输出例子中的Uesato被错写为Useato了。
在此之前解决这些问题的方法——最为人所知的就是Excel中的快速填充(FlashFill)功能——是依靠程序员手动编写的规则和启发方式来引导和搜索用户所需的程序。昆明IT培训小编觉得这种方式显然不能满足DSL——这意味着数年的手动规则编写,而且最终的结果仍然对I/O例子的噪音非常敏感。
微软提出的新系统RobustFill采用了最近发展迅猛的深度学习方式,通过数据驱动方法进行程序生成,不需要任何手工编写的规则。与快速填充相反,它使用曾被用于机器翻译的「attentional sequence-to-sequence神经网络」来通过I/O范例生成所需的程序。下图展示了微软的神经网络架构:
昆明IT培训小编知道这个系统经过了数百万随机生成的I/O程序配对的训练,学会了DSL中的语义学规则,目前已经可以在真实情况下的数据中展示良好的性能。总体而言,该系统在一个真实世界任务基准测试中达到了92%的准确率。其中最令人兴奋的是,在测试中,I/O范例包含了一些明显的噪音,而系统仍然保持了高精度。
编程新启示
微软正致力于扩展这些DSL程序学习架构,试图加入状态变量和控制流程以生成更多种类的程序。昆明IT培训小编知道研究人员相信他们正走在正确的道路上,未来的研究将指向有关程序生成和归纳的一系列基础技术问题。
更多资讯请关注昆明达内网站: http://km.tedu.cn