本文转载自公众号:徐阿衡。
论文:A simple neural network module for relational reasoning(2017)
github代码: https://github.com/siddk/relation-network
这篇回顾下 DeepMind 2017 年发表的关系推理方面的工作,Relational Networks(RNs)。
关系推理的传统方法有基于符号的方法(symbolic approaches)和基于统计的方法(statistical learning)。基于符号的方法存在着 symbol grounding 的问题,在小任务(small task)和输入变化(input variations)的问题上也不够鲁棒,学习能力不强;而基于统计的方法像深度学习,虽然泛化能力强,但是对数据稀疏但关系复杂的问题也是束手无策。DeepMind 2017年出的这篇论文提出的Relation network(RN),是用于关系推理(relational reasoning)的一个神经网络模块(NN module),能直接加载到已有的神经网络架构中。与 GNN 等网络结构相比,更为简单和灵活,即插可用(plug-and-play),在一些关系推理的测试上的准确率已经超过了人类。
RN 的网络结构是真的很简单(不然也不会说是”simple neural network”),以至于通篇下面一个公式就可以概括,核心就是利用神经网络来找出任意 pairwise 对象之间的潜在关系。
Inputs:
MLPs:
: 使用一个全连接的神经网络来量化 o_i 和 o_j 的关系,任意两个对象之间的关系使用同一套参数
: 考虑所有组合的关系,相当于考虑一个完全连接图,在这个图上计算各个边的权重,把重要的关系凸显出来,f 函数就计算了这个重要关系的集合
用在自然语言处理里,就是把每个句子当做一个对象,每个句子与句子的 pair 用 g 计算关系,再把所有关系加权和放到最终的预测网络里。
小结一下,RNs有以下三个特点:
可以学习推理。这里 RNs 计算了所有的两个对象之间的关系,当然也可以只计算部分两个对象之间的关系,这里的“部分”需要预定义
数据效率更高(data efficient)。RNs 使用一个 gθ 函数来计算所有的关系,任意两个对象之间的关系使用同一套参数,泛化能力更强
作用在一个集合上。对输入和输出都是与顺序无关的(input/output invariation)
简单提一下和 NLP 有关的任务。
RN 在 VQA 任务上的结构也很简单,CNN 处理图像,LSTM 编码 question,然后两两配对的 spatial cell(红蓝;黄红;蓝黄…)和 question embedding 拼接,后面接几个 FC 层,最后 softmax 得到某个 answer word。
Word-embedding: dim32; LSTM: dim128
: 4-layer MLP, dim256-256-256, RELU
: 3-layer MLP, dim256-256-29, RELU
: 综合所有组合 ,implicitly 提取有用的组合预测最终答案
RN 在 bAbI 测试集上的结构,每个问题之前的最多 20个句子作为 support set,使用 LSTM-dim32 把 support set 连同每个句子在 set 里的相对位置编码转化为 RN 的 object set,同时使用另一个 LSTM-dim32 的 encoding state 表示问题。
: 4-layer MLP, dim256-256-256-256
: 3-layer MLP, dim 256-512-159
在 joint training 也就是 20 个任务一起训练一个 QA 模型的情况下,通过了 18/20 bAbI test。与 DNC 比较发现,DNC 在 path finding 任务上表现不错,但在 basic induction 上误差达到 55.1%,而 RN 达到了 2.1% 的误差水平。
OpenKG.CN
中文开放知识图谱(简称OpenKG.CN)旨在促进中文知识图谱数据的开放与互联,促进知识图谱和语义技术的普及和广泛应用。
点击阅读原文,进入 OpenKG 博客。