Skip to main content
QUICK REVIEW

[论文解读] Neural Programmer: Inducing Latent Programs with Gradient Descent

Arvind Neelakantan, Quoc V. Le|arXiv (Cornell University)|Nov 16, 2015
Advanced Neural Network Applications参考文献 46被引用 73
一句话总结

Neural Programmer 引入了一种可微分的神经网络架构,通过软注意力机制选择性地对数据片段应用一组基本的算术和逻辑操作,从而诱导出复杂程序。该模型仅通过最终输出监督进行端到端的梯度下降训练,在标准 RNN 和注意力模型失效的合成表格理解任务中,实现了接近完美的准确率。

ABSTRACT

Deep neural networks have achieved impressive supervised classification performance in many tasks including image recognition, speech recognition, and sequence to sequence learning. However, this success has not been translated to applications like question answering that may involve complex arithmetic and logic reasoning. A major limitation of these models is in their inability to learn even simple arithmetic and logic operations. For example, it has been shown that neural networks fail to learn to add two binary numbers reliably. In this work, we propose Neural Programmer, an end-to-end differentiable neural network augmented with a small set of basic arithmetic and logic operations. Neural Programmer can call these augmented operations over several steps, thereby inducing compositional programs that are more complex than the built-in operations. The model learns from a weak supervision signal which is the result of execution of the correct program, hence it does not require expensive annotation of the correct program itself. The decisions of what operations to call, and what data segments to apply to are inferred by Neural Programmer. Such decisions, during training, are done in a differentiable fashion so that the entire network can be trained jointly by gradient descent. We find that training the model is difficult, but it can be greatly improved by adding random noise to the gradient. On a fairly complex synthetic table-comprehension dataset, traditional recurrent networks and attentional models perform poorly while Neural Programmer typically obtains nearly perfect accuracy.

研究动机与目标

  • 为解决深度神经网络在学习算术和逻辑推理方面的局限性,特别是在需要组合程序归纳的任务中。
  • 减少在语义解析和程序归纳中对昂贵的人工标注程序或手工设计语法的依赖。
  • 实现仅使用最终输出监督的神经模型端到端训练,无需中间步骤的程序标注。
  • 开发一种通用的、与领域无关的程序归纳框架,结合神经模式识别与符号操作。

提出的方法

  • 该模型使用一个循环控制器,每一步通过输入元素上的可微注意力机制,选择一个数据片段和一个操作(例如,求和、取最大值、比较)。
  • 将操作应用于选定的数据片段,结果存储在内存中以指导未来决策,从而实现在多步上的组合推理。
  • 操作和数据片段的选择通过软注意力机制实现可微分,使得整个系统可通过反向传播进行训练,仅依赖最终输出作为监督信号。
  • 在测试时,软注意力被替换为硬选择(例如,取 argmax),以确保程序执行的确定性。
  • 通过向梯度中注入随机噪声来稳定训练,这提升了泛化能力和收敛性。
  • 该模型在需要多步推理的合成表格理解数据集上进行了评估,例如计算与德克萨斯州接壤的州的数量。

实验结果

研究问题

  • RQ1神经网络是否能仅通过最终输出监督学习复杂且组合性的程序,而无需中间步骤的程序标注?
  • RQ2可微分的操作和数据选择是否能够实现符号推理任务的神经模型端到端训练?
  • RQ3与标准 RNN 和基于注意力的模型相比,该模型在涉及算术和逻辑操作的推理任务上的表现如何?
  • RQ4梯度噪声注入是否能提升弱监督下程序归纳的训练稳定性和泛化能力?

主要发现

  • Neural Programmer 在一个复杂的合成表格理解数据集上实现了 100% 的准确率,而标准 LSTM 和带有注意力的 LSTM 模型在相同任务的较简单变体上仅达到约 80% 的准确率。
  • 当在分布外的输入规模上进行测试时(例如,使用 [-50,50] 而非 [-10,10] 的数字),LSTM 模型的准确率下降至 30%,而 Neural Programmer 由于推理时采用尺度不变的硬选择,保持了完美的性能。
  • 向梯度中添加随机噪声显著提升了训练的稳定性和泛化能力,使用噪声训练的模型始终优于未使用噪声的模型。
  • 该模型表现出强大的组合泛化能力,能够在没有中间步骤显式监督的情况下,学习将基本操作组合成复杂的推理流水线。

更好的研究,从现在开始

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

无需绑定信用卡

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