专栏首页人工智能用神经模块网络学习推理

用神经模块网络学习推理

(与 Ronghang Hu, Marcus Rohrbach, Trevor Darrell, Dan Klein and Kate Saenko合作)

假设我们正在建造一个家用机器人,并希望它能够回答与它周围的一些问题。我们可能会它问这样的问题:

我们如何确保机器人可以正确回答这些问题?深度学习的标准方法是收集问题,图像和答案的大型数据集,并训练一个单一的神经网络,从问题和图像直接映射到答案。如果大多数问题看起来像左边那个,我们就有一个熟悉的图像识别问题,而这类单一的方法是非常有效的:

但是对于像右边那样的问题,就没有那么容易辨认出来了:

在这里,我们训练的网络已经不起作用了,它只是猜测图像中最常见的颜色。是什么让这个问题变得更加困难?即使图像更清晰,这个问题也需要很多步骤来推理:不是简单地识别图像中的主要对象,模型必须首先找到蓝色圆柱体,定位相同大小的其他对象,然后确定其颜色。这是一个复杂的计算,而这个计算也只能用于这个特定的问题。不同的问题需要不同的步骤顺序来解决。

深度学习的主要范式是一种“一刀切”的方法:无论我们要解决什么问题,我们都要写下一个固定的模型框架,在这个模型中我们希望能够捕捉到输入和输出之间的关系,并从标记的训练数据中学习该固定模型的参数。

但现实世界的推理并不是这样工作的:它涉及到各种不同的能力,我们在其他情况下遇到新的问题,它就会以新的方式结合起来。我们需要的是这样一个模型,它可以根据面前的问题动态地确定如何去推理——一个可以即时选择自身结构的网络。在这篇文章中,我们将讨论一类称之为神经模块网络 (NMNs)的新模型,它将这种更加灵活的方法融入到解决问题的过程中,同时保留了深度学习有效的表现能力。

之前,我们注意到回答上述问题要涉及到三个不同的步骤:找到一个蓝色的圆柱体,找到其他大小相同的东西,并确定它的颜色。我们可以画出这样的示意图:

不同的问题可能涉及不同的一系列步骤。如果我们问“有多少东西和球一样大小?”,我们可能会有这样的东西:

各种问题间,类似于“比较大小”之类的基本操作是共享的,但是它们以不同方式被使用。NMNs背后的关键思想是让这个共享变得更加明确:我们使用两个不同的网络结构来回答上述两个问题,但我们在涉及相同基本操作的网络之间共享权重:

我们如何学习这样的模型?我们不是在大量成对的输入/输出上训练单一的大型网络,实际上,我们在训练大量不同的网络的同时,也在适当的情况下将它们的参数绑定在一起:

(包括DyNet和TensorFlow Fold在内的几个最新的深度学习框架都是在这种动态计算的基础上明确设计的。)

我们在训练过程结束时得到的不是一个深度网络,而是一个神经“模块”的集合,每个神经“模块”实现一个推理的单一步骤。当我们想在一个新的问题实例上使用我们的训练模型时,我们可以动态地组合这些模块来产生适合于这个问题的新的网络结构。

关于这个过程的一个出色的地方是,我们不需要为个别模块提供任何低级别的监督:该模型从来没有看到蓝色对象的孤立例子或“剩余”关系。模块只能在较大的组合结构中学习,只有(问题,答案)成对作为监督。但是训练过程能够自动地推断出结构片段之间的正确关系以及它们所负责的计算:

这个过程同样适用于回答关于更逼真的照片的问题,甚至是其他的知识资源,比如数据库:

整个过程的关键要素就是像上面那样的高层次的“推理蓝图”。这些蓝图告诉我们应该如何布置每个问题的网络,以及不同的问题如何相互关联。但蓝图从哪里来?

在我们对这些模型的初步研究中(1,2),我们在设计特定于问题的神经网络的问题和分析语法结构的问题上得出了惊人的联系。语言学家早已观察到,一个问题的语法与回答它所需的计算步骤的顺序密切相关。这得益于自然语言处理方面的最新进展,我们可以使用现成的语法分析工具自动地为这些蓝图提供近似的版本。

但从语言结构到网络结构的准确映射仍然是一个具有挑战性的问题,转换过程容易出错。在之后的工作中,我们不是依靠这种语言学分析,而是转向由人类专家生成的数据,他们用理想化的推理蓝图直接标记了一系列问题(3)。通过学着去模仿这些人,我们的模型能够大大提高预测的质量。最令人惊讶的是,当我们采用了模仿专家的模式,但是允许它探索自己对这些专家预测的修改之后,就可以找到比各种问题的专家更好的解决方案。

尽管近年来深度学习方法取得了令人瞩目的成就,但其中包括少量学习和复杂推理等许多问题仍然是一个挑战。但是,这些问题恰恰是诸如语义解析和程序归纳等更结构化的经典技术真正发挥作用的问题。神经模块网络为我们提供了两全其美的方法:离散组合的灵活性和数据效率,以及深度网络的代表性能力。NMNs已经在视觉和文本推理任务上取得了一些成功,我们也很兴奋地开始将它们应用到其他人工智能问题上。

这篇文章是参考以下文献:

  1. Neural Module Networks.Jacob Andreas,Marcus Rohrbach,Trevor Darrell和Dan Klein。CVPR 2016.(arXiv
  2. Learning to Compose Neural Networks for Question Answering.Jacob Andreas,Marcus Rohrbach,Trevor Darrell和Dan Klein。NAACL 2016.(arXiv
  3. Modeling Relationships in Referential Expressions with Compositional Modular Networks.Ronghang Hu, Marcus Rohrbach, Jacob Andreas, Trevor Darrell and Kate Saenko.CVPR 2017.(arXiv

图像来自VQACLEVR数据集。

本文的版权归 用户9527 所有,如需转载请联系作者。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 向量自回归简介

    通常,我们试图分析大量的数据来找到有用的信息或预测未来的事件。数据集中最重要的类型之一是时间序列。时间序列表示按时间顺序索引的一系列数据点。有很多模型来分析这种...

    人工智能资讯小编
  • 教程从头开始在Python中实现k最近邻居

    k近邻法(或简称为kNN)是一种易于理解和实现的算法,也是一种功能强大的工具。

    人工智能资讯小编
  • 机器学习 从入门到精通的学习方法

    我将介绍5个“机器学习”的步骤,这五个步骤是非常规的。

    人工智能资讯小编
  • 一道一线大厂面试题引发的思考

    晚上10点,你拖着疲惫的身子准备打卡下班,突然钉钉群报警,你负责的项目线上出问题了,你心理一慌,什么鬼?

    python编程从入门到实践
  • 记一次项目上线的BUG

    今天在写项目的时候突然项目经理跟我说之前项目的一个功能请求出现了异常,当时虎躯一震,上线的项目出问题了?什么问题?当时慌的一批。

    技术从心
  • LeetCode | 58.最后一个单词的长度

    这个题只要从后往前遍历整个字符串就可以了,在遍历的过程中只要找到空格就可以很容易计算到最后一个单词的长度。这么简单的问题,但是其中有两个小小的坑...

    码农UP2U
  • 一个问题引发的不良率讨论

    在某论坛闲逛,看到一篇帖子。本以为是个伸手要代码的学生党发的求助贴,没想到内容跟我想的不太一样,有点意思。

    MCU起航
  • Linux之sar命令

    Linux中的sar命令是系统运行状态的统计命令,他讲指定的操作系统状态显示到标准的输出设备中,它的全称是system activity reporte...

    AsiaYe
  • MySQL 案例:“丢失数据”的谜题

    最近偶尔会收到用户反馈数据不见了,数据丢失了的问题。从现象上来看,这类问题在数据库层面就是紧急程度最高的那一类了,抛开客观条件来说,针对这一类问题的恢复手段几乎...

    王文安@DBA
  • 蓝桥杯 基础练习 字符串对比

    给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一:   1:两个字符串长度不等。比如 Beijing 和 H...

    Meng小羽

扫码关注云+社区

领取腾讯云代金券