一个简单的关系推理神经网络模块

A simple neural network module for relational reasoning · Adam Santoro 等(DeepMind)· arXiv 2017 · Ilya 推荐书单 i22

论文名片

  • 关系推理
  • 视觉问答
  • 即插即用模块
基本信息一览
中文题名一个简单的关系推理神经网络模块
英文题名A simple neural network module for relational reasoning
作者与机构Adam Santoro 等(DeepMind)
发表arXiv 2017
一句话定位把「两两比较」做成一个即插即用的小模块。
一句话总结把所有对象两两配对、逐对提取关系,再按「不计顺序」的方式汇总成答案——神经网络由此学会回答关系问题。

原文出处见「原文与代码」。论文事实

Ilya 为什么选它

深度网络看「单个东西」已经很强:认出图里有一只猫、一个球、一个立方体,早就不是难事。可一旦换成「谁在谁左边」「哪个更重」「什么形状叠在什么材质上面」这类关系题,普通的前馈网络就明显吃力。这不是数据不够的问题,而是网络结构里天生缺一个擅长「比较」的部件——每个神经元看到的是单个对象的特征,而关系偏偏住在两个对象「之间」。

这篇论文的漂亮之处在于答案出奇地简单:不发明新学问,只做一个小组件——把对象两两配对、逐一比较、再对称汇总。它证明了「关系推理」这种听起来很高级的能力,可以交给一个结构清晰、随取随用的小模块去承担。对一个强调「简洁结构里藏着智能」的书单来说,这正是值得收录的一篇。

放在系列脉络里看,它与 i14「关系循环网络」思想同源,又与 i21「消息传递神经网络」的「传消息、再汇总」互相呼应——三条线索指向同一个信念:给网络配上合适的结构,推理能力会自己长出来。

从生活说起

想象老师想弄清楚「咱们班谁和谁最合得来」。最直接的办法不是让每个人各写一份自我介绍——简历写得再漂亮,也代替不了人和人之间的化学反应。有效的办法是:让全班同学两两握手、每一对都聊上几句,然后由班长把这几百场小聊天的记录汇总成一份结论。真正有用的信息不在个人简历里,而在两两互动里。

这篇论文做的事和班长一模一样。卷积神经网络(CNN,Convolutional Neural Network)先当「眼睛」,把图里的每个物体看清楚、变成一串特征;关系模块再当「班长」,把所有物体两两配对、逐对提取「这一对之间是什么关系」,最后汇总出「谁在谁左边、哪个更重」的答案。看是看的事,比是比的事,分工明确。

这个类比还顺带解释了为什么「握手」胜过「自我介绍」:两两交流把「单个物件的信息」升级成了「物件与物件之间的信息」,而后者才是关系题唯一有用的原材料。

核心思想拆解

整个模块的流程可以拆成四步。第一步,把输入拆成一堆「对象」:可以是视觉问答里检测到的每个物体,也可以是卷积特征图上的每个位置,只要能一一编号就行。第二步,把所有对象两两配对,每一对一起送进同一个小组网络,让它输出「这一对之间」的关系特征或打分。第三步,把全部配对的结果汇总起来(求和或求平均)。第四步,把汇总结果交给后面的回答模块,生成自然语言答案。

最关键的设计藏在第三步的「对称汇总」里。因为「甲和乙的关系」与「乙和甲的关系」在这类任务里被当作同一件事,所以汇总时完全不计较配对的先后顺序——不管握手结果按什么顺序递到班长手上,结论都一样。这种「不在乎顺序」的脾气,让训练更稳定,也正好贴合「关系本身没有方向」的语义。

与 i21「消息传递神经网络」对照着看更有味道:消息传递是「每个节点向邻居发消息、再汇总收到的消息」,保留着图结构的走法;关系模块则是「所有对象两两比较、再全局汇总」,干脆穷举全部配对。思路同源,侧重不同。

动手算一算

全配对的代价有多大?n 个对象两两配对(甲-乙与乙-甲算同一对),配对数是 n×(n−1)÷2。挨个算几个:3 个对象是 3 对;5 个对象是 10 对;10 个对象是 45 对;20 个对象是 190 对;100 个对象是 4950 对。

配对数 = n × (n−1) ÷ 2 (10 个对象:10×9÷2 = 45;20 个对象:20×19÷2 = 190)

留意增长的速度:对象数从 10 涨到 100,只翻了 10 倍;配对数却从 45 涨到 4950,翻了 110 倍——比对象数涨得快得多。好在每一对用的都是同一个小网络,各对之间互不牵扯,可以并行去算;而图形问答这类场景里的对象通常只有几个到十几个,全配对的代价完全付得起。至于式子里那个「除以 2」,原因很直白:甲-乙和乙-甲是同一对,重复的正好减半。

它改变了什么

论文验证 最直接的验证来自图形问答:把卷积网络(负责看)和关系模块(负责比)拼在一起,在 CLEVR 这类考察空间关系、数量比较的图形问答任务上成绩大幅提升——纯前馈网络答不好的关系题,加上这个模块后被明显攻克。

本站推断 更长远的影响在思路层面:「推理」第一次被做成了一个能随手拿走的小零件,可以塞进各种网络里复用。它与 i14「关系循环网络」、i21「消息传递神经网络」一起,构成「用结构先验换推理能力」这条路线上的三个路标,也和 i18「指针网络」、i20「神经图灵机」一样,体现了「给网络外挂一种明确能力」的设计哲学。

系列内相关阅读:i21 消息传递神经网络(同属「汇总消息」的思想家族)、i18 指针网络(同样是外挂明确能力的模块化设计)、i23 变分有损自编码器(书单下一站,话题从「推理结构」换挡到「信息预算」)。

术语小词典

本页术语速查
关系推理(Relational Reasoning)判断多个对象之间「谁左谁右、谁大谁小、谁压着谁」的能力。
对象(Object)输入被拆分后的基本单元,可以是一个检测到的物体,也可以是特征图上的一个位置。
配对比较(Pairwise Comparison)把两个对象一起送进小网络,提取它们之间的关系特征或打分。
对称汇总(Symmetric Aggregation)把所有配对结果求和或求平均,结果与汇总顺序无关。
视觉问答(Visual Question Answering,VQA)给定一张图和一个问题,让模型输出答案的任务。
卷积神经网络(CNN,Convolutional Neural Network)擅长从图像中提取局部特征的经典网络,本篇里负责「看」。