Skip to main content
QUICK REVIEW

[论文解读] Neural Programmer-Interpreters

Scott Reed, Nando de Freitas|arXiv (Cornell University)|Jan 1, 2016
Advanced Neural Network Applications被引用 148
一句话总结

Neural Programmer-Interpreter (NPI) 是一种循环的、组合式的神经网络,通过使用与任务无关的循环核心、持久的键值程序内存以及特定领域的编码器,学习表示和执行程序。通过组合低层级程序,NPI 降低了样本复杂度并提升了泛化能力,使单一模型能够从少量丰富且完全监督的执行轨迹中学习 21 个子程序,并执行加法、排序和 3D 模型规范化任务。

ABSTRACT

Abstract: We propose the neural programmer-interpreter (NPI): a recurrent and compositional neural network that learns to represent and execute programs. NPI has three learnable components: a task-agnostic recurrent core, a persistent key-value program memory, and domain-specific encoders that enable a single NPI to operate in multiple perceptually diverse environments with distinct affordances. By learning to compose lower-level programs to express higher-level programs, NPI reduces sample complexity and increases generalization ability compared to sequence-to-sequence LSTMs. The program memory allows efficient learning of additional tasks by building on existing programs. NPI can also harness the environment (e.g. a scratch pad with read-write pointers) to cache intermediate results of computation, lessening the long-term memory burden on recurrent hidden units. In this work we train the NPI with fully-supervised execution traces; each program has example sequences of calls to the immediate subprograms conditioned on the input. Rather than training on a huge number of relatively weak labels, NPI learns from a small number of rich examples. We demonstrate the capability of our model to learn several types of compositional programs: addition, sorting, and canonicalizing 3D models. Furthermore, a single NPI learns to execute these programs and all 21 associated subprograms.

研究动机与目标

  • 开发一种神经模型,以组合化且可泛化的方式学习表示和执行程序。
  • 通过利用丰富且完全监督的执行轨迹,而非弱监督,降低程序学习中的样本复杂度。
  • 通过利用持久的键值内存复用已有程序,实现新任务的高效学习。
  • 通过将长期计算任务外推至外部环境(例如草稿板),减轻循环单元的负担。
  • 通过单一统一的模型架构,在感知差异较大的环境中实现跨任务的泛化。

提出的方法

  • NPI 使用与任务无关的循环核心处理输入序列,并在程序执行过程中保持隐藏状态。
  • 它采用持久的键值程序内存来存储和检索中间程序状态与子程序。
  • 使用特定领域的编码器将模型与感知上不同的环境关联,实现跨不同功能的迁移。
  • 模型通过展示基于输入条件的子程序调用的完全监督执行轨迹,学习将低层级程序组合为高层级程序。
  • 中间计算结果被缓存在外部环境(例如具有读写指针的草稿板)中,减轻了循环隐藏单元的负担。
  • 训练使用完全监督的执行轨迹进行,每个程序均关联示例化的子程序调用序列。

实验结果

研究问题

  • RQ1单一神经模型是否能够学习在多样化感知环境中组合并执行多种类型的组合式程序?
  • RQ2与弱监督相比,使用丰富且完全监督的执行轨迹是否能降低样本复杂度?
  • RQ3持久的程序内存是否能通过复用已有子程序,实现新任务的高效学习?
  • RQ4将中间计算外推至外部环境在多大程度上能提升模型性能和泛化能力?
  • RQ5统一的模型架构是否能实现对加法、排序和 3D 模型规范化等任务的泛化?

主要发现

  • 单一 NPI 模型成功学习执行 21 个不同的子程序及其相关高层级程序,包括加法、排序和 3D 模型规范化。
  • 通过从少量丰富且完全监督的执行轨迹中学习,模型实现了更好的泛化能力并降低了样本复杂度。
  • 持久的键值程序内存实现了高效的迁移学习,使新任务可通过组合已有子程序来学习。
  • 将中间计算外推至外部环境(例如草稿板)减轻了循环隐藏单元的长期记忆负担。
  • 由于特定领域的编码器能够适应输入表示而无需重新训练核心,模型在感知差异较大的环境中实现了泛化。
  • 组合式架构使模型能够通过组合更简单、可重用的子程序来学习复杂程序。

更好的研究,从现在开始

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

无需绑定信用卡

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