更多精彩
当前位置: 首页 > 英超 > >正文

首次成功用CNN自动生成代码:北大研究者搞定了炉石传说 广州找房子,芭比之完美圣诞节中文版,连云港天气预报查询一周,优酷网首页,女留学生夜跑失踪,梦见鬼是什么意思

时间:2019-05-21 来源:廊坊新闻网
 

广州找房子,芭比之完美圣诞节中文版,连云港天气预报查询一周,优酷网首页,女留学生夜跑失踪,梦见鬼是什么意思

原标题:首次成功用CNN自动生成代码:北大研究者搞定了炉石传说

选自arXiv

作者:孙泽宇、朱琪豪、牟力立、熊英飞、李戈、张路

机器之心编译

如果人工智能可以自动生成代码,程序员们就能减少很多工作压力(失业是不可能失业的)。

北大研究者最近提出了使用卷积神经网络(CNN)解码器生成代码的方法,并在《炉石传说》数据集上进行了测试,效果超过了此前各类业内最佳模型。该研究的论文已被 AAAI 2019 大会接收。研究者称,这是首个成功用 CNN 解码器生成代码的工作。

哈尔滨市治疗癫痫病最好的专科医院是哪家

我们知道,程序包含对程序建模非常重要的丰富的结构信息。然而,传统的 Seq2Seq 神经网络不能直接建模程序结构。图 1 展示了一个 Python 抽象语法树(AST)示例,其中的 n3、n6 两个节点需要拥有父-子节点那样密集的关联,但如果该树是前序穿过序列的,彼此间就会比较远。这对 Seq2Seq 模型而言就比较困难。

图 1:代码的抽象语法树(AST):init(a)。

为了解决这个问题,Dong 和 Lapata (2016) 提出了一种沿着程序的抽象语法树生成代码的方法,但这种生成仍然处于 token 级别。近来,更多的研究通过在每一步预测或重写语法规则 (Xiong et al. 2018; Yin and Neubig 2017; Rabinovich郑州哪家医院可以有效治癫痫, Stern, and Klein 2017) 来生成程序;因此,确保了生成的程序在语法上是正确的。当在这些方法中使用神经网络时,RNN 被用来捕获解码器中预测的自回归。

在深度学习社区,研究人员对使用卷积网络作为解码器越来越感兴趣 (Gehring et al. 2017; Chaturvedi, Pandit, and Garain 2018),因为它效率高且容易训练。研究者进一步观察发现,程序比自然语言语句大得多,即使是带有长短期记忆 (Hochreiter and Schmidhuber 1997, LSTM) 单元的 RNN 也存在长期依赖问题 (Bengio, Simard, and Frasconi 1994)。而 CNN,却能通过滑动窗口有效地捕获不同区域的特征。

为此,研究者鹰潭看癫痫去哪个医院提出了一种基于语法的结构化 CNN 来用于代码生成。他们的模型根据 AST 中的语法结构规则生成代码,例如,If → expr stmt* stmt*就遵循了他们先前研究 (Xiong et al. 2018) 中的框架。由于子节点序列是通过一个预测步骤生成的,因此与逐个 token 生成相比,它能够实现更紧凑的预测。换句话说,该模型预测语法规则序列,最终形成整个程序。

在他们的方法中,语法规则的预测主要基于三种类型的信息:指定生成程序的源序列,先前预测的语法规则,以及已经生成的部分 AST。在这里,第一个信息是编码器的输入,后两者使得解码器能够自回归,和以前一样,解码器以编码器为条件。

图 2:模型概览,虚线箭头表示注意力控制器。

研究者在已有的基准数羊羔疯彻底治疗据集 HearthStone(炉石传说)上进行了实验(如图 4 所示),任务是 Python 代码生成(Ling et al. 2016),表 2 展示了该数据集的统计。实验结果表明他们提出的基于 CNN 的代码生成方法远远超越了以前的基于 RNN 的方法(如表 3 所示)。研究者还进行了扩展性的控制变量测试,表明基于语法的结构化 CNN 相比一般的 CNN 应用方法更优越(如表 4 所示)。研究者进一步在两个语义解析任务上评估了该方法,其中目标程序比炉石传说的更短;他们的方法依然得到了和以前的最佳方法相当的性能,表明该方法具备鲁棒性(如表 5 所示)。

图 4:炉石传说数据集的示例卡片,(a)输入描述;(b)输出程序。

本文地址: 转载请注明出处!

推荐阅读

热门阅读