王小新 编译自 BAIR博客 量子位 出品 | 公众号 QbitAI 最近,加州大学伯克利分校人工智能研究所(BAIR)的博士生Jacob Andreas在博客上发文,介绍了如何用神经模块网络(NMN)模型来完成推理任务。 这个博客是BAIR刚刚建立的,他们打算分享、讨论计算机视觉、深度学习、机器人、NLP等领域的研究成果。 这篇关于神经模块网络研究的梳理,是BAIR技术博客的第二篇文章(第一篇是博客的介绍),atv,量子位翻译出来,和大家分享: 假设我们想要开发出一种家用机器人,能够回答关于周围环境的一些问题。 我们可能会向机器人提出这样的问题:
△这是什么? 和蓝色圆柱一样大小的物体是什么颜色的? 我们该怎样训练机器人来正确回答这些问题? 在深度学习领域,一种经典方法是通过收集大量问题、图像和对应的答案,构成数据集,来训练一个能直接从问题和图像映射到答案的神经网络。 对于“这是什么”一类的问题,其实我们需要解决的是一个经典的图像识别任务,这类整体方法非常有效:
△问:这是什么?答:猫。 但对于图1右侧的问题,这种方法效果不佳。
△问:和蓝色圆柱一样大小的物体是什么颜色的? 答:蓝色。 这回,我们训练的神经网络似乎没理解这个问题,直接用这张图中出现最多的颜色猜了个答案。 这个问题难在哪? 即使是一张更简洁的图片,回答这样的问题仍需要多步推理。模型不能简单地识别图像中的主要物体,而是先要找到蓝色圆柱体,然后找到具有相同大小的另一个物体,再确定其颜色。 这是一个复杂的分析过程,需要对具体问题进行具体计算,不同的问题还可能有不同的解决步骤。 深度学习中大多使用了“一刀切”的方法:对于要解决的任何问题,通过设计一个固定的模型结构,希望能够从已标记的训练数据中学习到相关模型参数,捕获关于输入和输出间的一切关系。 但在现实世界中,并不能以这种方法来实现推理。我们遇到的每个新问题都涉及多种可能性,以不同的方式结合在一起。 解决这类问题所需要的模型,要能根据面对的问题来决定推理方式,建立一个能灵活地自行选择内部结构的神经网络。 在这篇文章中,我们要讨论一种名叫神经模块网络(neural module networks,NMNs)的模型。这种方法保留了深度学习有效的表现力,也为解决问题提供了更灵活的方法。 回到上文说的那个问题: 和蓝色圆柱一样大小的物体是什么颜色的? 要回答这个问题,分三步:1. 找到一个蓝色圆柱,2. 找到和它尺寸相同的另一个物体,3. 确定其颜色。 流程如下图所示:
换个问题,步骤也会不一样。当问题为“有多少与球尺寸相同的物体?”,流程图会变成这样:
像“比较尺寸”这种基本运算,在很多问题上都能共用,不过是用在不一样的地方。 NMN的核心思想是让这种“共用”更加明确:回答上面两个问题,我们用了不同结构的网络,但是在设计相同的基本运算时,两个网络相关部分共用了同样的权重。
△“比较尺寸”部分是共用的 该如何学习得到这样的模型? 我们不是训练一个神经网络,直播,让它能完成多对输入输出,而是同时训练大量不同的网络,然后在合适的地方将它们的参数匹配起来。
△网络部分节点共享示意图 一些新的深度学习框架,例如DyNet和TensorFlow Fold等,在设计的时候就考虑到了这种动态计算。 (责任编辑:本港台直播) |