摘要:通过提供足够的训练数据,很多神将网络都可以通过学习去计算任意一种函数。然而,在现实生活中,除了一小问题具有较多的训练数据外其他问题的训练数据都很少,现在有一个核心问题是如何将先验知识纳入模型。在这里我们考虑到程序过程先验知识的情况,比如知道序列转换程序的所有递归结构或者知道程序可能对实数使用算术运算来解决任务。为此,我们为编程语言 Forth 提出了一个可微分的解释器。通过基于 Forth 的双栈机器的神经实现,程序员可以编写具有空缺的程序草图,该空缺会被填充一些从程序输入 - 输出数据训练所得的行为。由于程序解释器是端到端可微分的,我们可以通过在用户指定的目标上使用梯度下降技术直接优化这种行为,并且也可以将程序集成到任何更大的神经计算图中。经验表明,我们的解释器能够有效地利用不同水平的先前的程序结构,在大幅度减少数据量的情况下学习复杂的转导任务,如序列排序或加法运算,并且对程序的规模进行了更好的概括。此外,我们引入了基于符号计算和并行分支的神经程序优化设计,这让运行速度得到了明显的改进。 12. 使用分层生成卷积神经网络的无监督程序推导(Unsupervised Program Induction with Hierarchical Generative Convolutional Neural Networks) 摘要:自动推断可以将一组输入映射到输出的计算机程序仍然是一个开放和极具挑战性的问题。由于可能的情况十分多,因此存在巨大的搜索空间,并且还需要处理高阶逻辑(例如 for-loops 或递归),所以程序导入任务是十分困难的。在本文中,我们使用分层生成卷积神经网络(Hierarchical Generative Convolutional Neural Networks(HGCNN))从输入/输出对自动生成程序。HGCNN 可以从使用标准的搜索技术构建的程序中以分层的方式预测候选的代码行。值得一提的是,该程序仅使用随机生成的程序进行构建,因此可以被视为无监督学习方法。我们提出的方法不仅可以生成过程简单的程序(比如交换变量值),也可以生成一些复杂的循环和分支(例如,找到一个数组的最大元素)。我们还展示了一些带有循环嵌套的程序(比如冒泡排序)。与 LSTM 这样的基准相比,我们的方法拥有更好的预测精度。 原文来源于 : VentureBeat、ICLR 2017 1. 2.https://openreview.net/ ©本文为机器之心编译文章,转载请联系本公众号获得授权。 ?------------------------------------------------ 加入机器之心(全职记者/实习生):[email protected] 投稿或寻求报道:[email protected] 广告&商务合作:[email protected] (责任编辑:本港台直播) |