relation
- 论文:A simple neural network module for relational reasoning
- github代码: https://github.com/siddk/relation-network
1.Introduction
智能行为很重要的一点就是能够推理实体间的关系。这一点CNN和MLP都做的不好。这篇文章提出了Relation Networks(RNs), 并且在visual QA, test-based QA上都有很好的效果
2.Relation Networks
RN应该具有适合推理的结构,其背后的逻辑就是限制函数的结构使得它能抓住关系推理的关键,就好像CNN的结构能平移不变性, RNN能够处理序列数据一样。一个简单的RN如下所示:
其中输入是一个对象的集合
RNs有以下三个特点:
- 可以学习推理。这里RNs所有的两个对象之间的关系,当然也可以只计算部分两个对象之间的关系
- RNs的数据效率更高(data efficient)。RNs使用一个
gθ 函数来计算所有的关系,因此泛化能力更强。此外,它只把两个对象作为输入,而不是同时把所有的n 个对象作为输入,所以避免了学习n2 个函数,因此更加高效 - RNs作用在一个集合上,因此它对输入和输出都是与顺序无关的
3. Tasks
3.1 CLEVR
CLEVR带有3D渲染的物体的图片。作者使用了数据:1)像素版的数据,每个都是2D的图片. 2)状态描述版的数据,用一个状态矩阵,每行表示一个3D的物体的包括坐标、颜色、、尺寸等。
3.2 Sort-of-CLEVR
为了证明RNs等很好的做到推理,作者把数据集分成关联性问题(relational questions)和非关联性问题(non-relational question)。每个图片有6个物体,选择是圆的还是方的,每个物体颜色不同。关联性问题如”距离灰色物体最远的物体是什么颜色?”,非关联性问题如”灰色物体形状是什么?”
3.3 bAbI
bAbI数据集是包含20类不同类型的问题和答案的文本问答数据集。
3.4 动态物理系统
作者使用MuJoCu做了一个仿真的物理弹簧系统。在桌面上有一堆小球,有些球是用硬杆或者弹簧连在一起的,但是连接的东西是看不见的,这些求在桌面上运动、碰撞。根据每个球的运动的数据,判断两个球是否关联以及有多少个关联系统,即包含两类问题。
4. Module
- 对于像素图片, 使用CNN卷积,提取
k 个d×d 的特征图, 同一位置上的k 个像素组成了一个k 维的对象,一共d×d 个。 - 对于question,先对每个单词做embedding,把问题中的每个单词的embedding表示输入到LSTM中,取最后一个输出状态作为question的embedding表示。计算关系的时候可以吧公式修改为
RN(O)=fϕ(sumi,jgθ(oi,oj,q)) - 对状态描述数据,直接作为对象输入到RNs中
- 对于自然语言,问题和答案采用相同的处理办法,不过使用的LSTM不同。每个句子之后都加上他们的位置信息
如下图所示:
5. Results
1.CLEVR-pixels
2. CLEVR-discription 准确率96.4%
3. Sort-of-CLEVR : CNN+RNs: 两种问题均在94%以上 CNN+MLPs: 相关性问题只有64%
4. bAbI: 完成了18/20问题集,只有two supporting facts和supporting facts没有达到95%以上。
5. Dynamic System: 第一类问题上93%, 第二类95%
6. Conclusion
根据作者的实验得出结论,RNs能很好的完成关系推理,并且应用十分灵活。可以用在RL上,以及解决抽象问题方面。另外也可以使用attention机制过滤掉不需要考虑的对象。
文章最后发布于: 2017-08-16 16:59:55
相关阅读
Git分布式版本控制系统 目录 1.Git简介 1.1什么是GIt? 1.2什么是分布式版
问题分析 解决海报设计中的配色、布局、搭配、生成。海报的设计过程是一系列的具备某种特征属性(包括颜色、形状、纹理、主题等视
MD5值在文件加密校验上应用广泛,这里介绍文件的md5和字符串的md5值。比较简单,我们直接上代码: package main import ( "crypto/m
谁说菜鸟不会数据分析(入门篇)----- 学习笔记1(数据分析
1、何谓数据分析 数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,将它们加以汇总和理解并消化,以求最大化地开发数
禁用:方案思路:修改笔记本自带键盘驱动,以解决误触,实现 “禁用” 的目的梗概步骤:step1:鼠标右键 “我的电脑” -“管理“-”设备管理