• 机器不学习:用神经模块网络学习推理


    机器不学习 jqbxx.com-机器学习好网站

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

    机器不学习:用神经模块网络学习推理

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

    机器不学习:用神经模块网络学习推理

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

    机器不学习:用神经模块网络学习推理

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

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

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

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

    机器不学习:用神经模块网络学习推理

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

    机器不学习:用神经模块网络学习推理

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

    机器不学习:用神经模块网络学习推理

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

    机器不学习:用神经模块网络学习推理

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

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

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

    机器不学习:用神经模块网络学习推理

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

    机器不学习:用神经模块网络学习推理

    机器不学习:用神经模块网络学习推理

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

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

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

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

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

    1. Neural Module Networks.Jacob Andreas,Marcus Rohrbach,Trevor Darrell和Dan Klein。CVPR 2016.(https://arxiv.org/abs/1511.02799)

    2. Learning to Compose Neural Networks for Question Answering.Jacob Andreas,Marcus Rohrbach,Trevor Darrell和Dan Klein。NAACL 2016.(https://arxiv.org/abs/1601.01705)

    3. Modeling Relationships in Referential Expressions with Compositional Modular Networks.Ronghang Hu, Marcus Rohrbach, Jacob Andreas, Trevor Darrell and Kate Saenko.CVPR 2017.(https://arxiv.org/abs/1611.09978)

    更多精彩内容,机器不学习官方网站(jqbxx.com)

  • 相关阅读:
    linux下通过命令行把文件拷贝到U盘上
    Fuzzy finder(fzf+vim) 使用入门指南
    利器: Mac自带的图片工具Sips
    C/C++性能测试工具GNU gprof
    ubuntu 16.04安装perf
    带你了解SDL
    Android USB Headset: Device Specification
    程序猿的看迪士尼
    音频处理贤内助--libsndfile
    蓝牙协议中的SBC编解码原理和仿真
  • 原文地址:https://www.cnblogs.com/jiqibuxuexi/p/8404288.html
Copyright © 2020-2023  润新知