Skip to main content
QUICK REVIEW

[论文解读] Programming with a Differentiable Forth Interpreter

Matko Bošnjak, Tim Rocktäschel|arXiv (Cornell University)|May 21, 2016
Topic Modeling参考文献 32被引用 58
一句话总结

本文提出 ∂⁴,一种可微分的 Forth 解释器,使神经网络能够通过梯度下降从部分程序草图中学习过程性行为。通过将 Forth 代码嵌入为可微分的抽象机器,该框架允许程序员注入过程性知识(如算法结构),同时通过反向传播训练未指定的操作,从而在神经推理任务(如 word problem 求解)中达到最先进性能。

ABSTRACT

Given that in practice training data is scarce for all but a small set of problems, a core question is how to incorporate prior knowledge into a model. In this paper, we consider the case of prior procedural knowledge for neural networks, such as knowing how a program should traverse a sequence, but not what local actions should be performed at each step. To this end, we present an end-to-end differentiable interpreter for the programming language Forth which enables programmers to write program sketches with slots that can be filled with behaviour trained from program input-output data. We can optimise this behaviour directly through gradient descent techniques on user-specified objectives, and also integrate the program into any larger neural computation graph. We show empirically that our interpreter is able to effectively leverage different levels of prior program structure and learn complex behaviours such as sequence sorting and addition. When connected to outputs of an LSTM and trained jointly, our interpreter achieves state-of-the-art accuracy for end-to-end reasoning about quantities expressed in natural language stories.

研究动机与目标

  • 通过在模型设计中引入部分过程性知识,解决神经网络学习中训练数据有限的挑战。
  • 实现 Forth 程序的端到端可微分执行,使未指定的程序组件可通过梯度优化。
  • 提供一种通过可微分抽象机器将神经网络与符号程序结构相结合的框架。
  • 证明带有学习插槽的程序草图能够泛化到未见过的问题规模,并优于缺乏过程性先验的模型。
  • 使神经网络与符号程序解释器能够联合训练,用于自然语言关于数量的推理等任务。

提出的方法

  • 设计 Forth 编程语言的可微分抽象机器,将基于堆栈的语义建模为连续且可微分的操作。
  • 将 Forth 程序表示为一系列单词,定义数据堆栈、返回堆栈、堆和程序计数器上的状态转换。
  • 在 Forth 草图中实现神经插槽,通过用户定义目标的梯度下降进行反向传播优化。
  • 将可微分 Forth 解释器集成到更大的神经计算图中(如 LSTM 编码器),实现端到端训练。
  • 应用符号执行优化,以加速神经程序执行并提高训练效率。
  • 在输入输出对上训练模型,以学习程序草图中缺失的操作,如排序或算术运算。

实验结果

研究问题

  • RQ1可微分的 Forth 解释器能否有效从部分程序草图和输入输出示例中学习过程性行为?
  • RQ2当仅使用结构化程序草图在有限数据上进行训练时,模型在未见过的问题规模上泛化能力如何?
  • RQ3通过 Forth 草图引入过程性先验,在神经推理任务上相较于端到端神经模型,性能提升程度如何?
  • RQ4可微分解释器能否无缝集成到更大的神经架构(如 LSTMs)中,用于在自然语言推理任务上进行联合训练?
  • RQ5在复杂推理场景中,结合符号程序结构与神经学习可实现多大程度的性能提升?

主要发现

  • ∂⁴ 解释器仅通过程序草图和输入输出对,成功学习到序列排序与算术加法操作,并能泛化到未见过的问题规模。
  • 当与 LSTM 联合训练时,该模型在自然语言叙述中关于数量的端到端推理任务上达到最先进准确率。
  • 即使仅提供高层次算法结构(如递归排序)作为草图,该框架也能有效学习过程性行为。
  • 可微分 Forth 解释器支持通过程序执行的端到端反向传播,使符号代码内神经组件的优化成为可能。
  • 基于符号执行的优化显著加快了训练期间的神经程序执行速度。
  • 该方法优于以往仅依赖神经程序归纳或需显式中间表示的推理任务模型。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。