论文阅读:《Learning by abstraction: The neural state machine》

标题:抽象学习:神经状态机
来源:NeurIPS 2019 https://proceedings.neurips.cc/paper/2019/hash/c20a7ce2a627ba838cfbff082db35197-Abstract.html
代码:暂无 (该项目为网友复现,不全面–> https://github.com/ceyzaguirre4/NSM )

一、问题提出

针对神经网络和符号网络各自的优缺点,引入有限自动机的思想,提出一种神经状态机,将各自的互补优势整合到视觉推理任务中。

首先基于给定的图像,使用一个场景图抽取模型,得到对应的概率场景图。其中,对象被转化为节点,并使用属性表示表示特征;关系被转化为边,来捕获对象之间的空间关系和语义关系。此外,对输入的问题进行语义理解,并转化为一系列软指令。在推理过程中,概率场景图被视为一个有限状态机,利用指令集合在其上执行顺序推理,迭代遍历它的节点,以回答一个给定的问题或得出一个新的推理。

不同于一些旨在将多模态数据进行紧密交互的神经网络结构,神经状态机定义了一组语义概念embedding的概念,其描述领域的不同实体和属性,如各种对象、属性和关系。通过将视觉和语言形式转换为基于语义概念的表示,有效地使两种模态可以”说同一种语言“,从而可以在抽象的语义空间中进行综合推理,这使得结构从内容中分离出来,实现模型的模块化,增强模型的透明度和可解释性。

二、主要思想

两个阶段:

  • 建模:构造状态机。将视觉和语言形式都转换成抽象的表示形式:图像被分解成一个表示其语义的概率图——描述的视觉场景中的对象、属性和关系,问题被转换成一系列推理指令,通过执行指令回答问题。
  • 推理:模拟状态机的操作。在问题的指导下对语义视觉场景执行顺序推理:通过迭代地向机器输入指令并遍历其状态来模拟串行计算,以获得答案。

定义:元组 ( C , S , E , r i i = 0 N , p 0 , δ ) (C,S,E,{{r_i}}_{i=0}^N,p_0,\delta) (C,S,E,rii=0N,p0,δ)

(1)C:模型的概念词汇表,由一组属性概念组成。
(2)S:状态集。
(3)E:有向边的集合,指定状态之间的有效转换。
(4) { r i } i = 0 N \{{r_i}\}_{i=0}^N {ri}i=0N:维数为d的指令序列,作为过渡函数 δ \delta δ的输入依次传递。
(5) p 0 p_0 p0:S→[0,1] 初始状态的概率分布。
(6) δ S , E \delta_{S,E} δS,Ep i × r i → p i + 1 p_i\times\ r_i\rightarrow\ p_{i+1} pi×ripi+1是状态转移函数。实例化为神经模块,在每一步中,考虑状态分布 p i p_i pi和输入指令 r i r_i ri,并使用它沿边更新分布概率,产生一个更新的状态分布 p i + 1 p_{i+1} pi+1

Part1:概念词汇表Concept vocabulary C

用于捕获和表示输入图像的语义内容。

L + 2个属性:

一个对象主体 C O = C 0 C_O=C_0 CO=C0 eg:cat

L个属性 C A = U i = 1 L C i C_A=U_{i=1}^LC_i CA=Ui=1LCi eg:颜色、形状、材质

一种关系 C R = C L + 1 C_R=C_{L+1} CR=CL+1 eg:持有、看

每个属性类型定义了一组D维embedding。

Part2:状态集 S 和 边集 E

构建一个概率场景图,提取给定图像中的对象和关系,构建机器的状态图。

此处使用了前人提出的场景图生成模型和Mask R-CNN物体检测器。

场景图的组成:

(1)对象节点 S S S,每个对象包括一个边界框、一个mask遮罩、视觉特性表示和对应于概念词汇表中L个语义属性的离散概率分布 { P i } i = 0 L \{{P_i}\}_{i=0}^L {Pi}i=0L。转化到概率场景图中,每个对象对应一个状态 s ∈ S s\in\ S sS,使用 L + 1 L + 1 L+1的属性变量 { s j } i = 0 L \{{s^j}\}_{i=0}^L {sj}i=0L表示其特征:
s j = ∑ c k ∈ C j P j ( k ) c k s^j=\sum_{c_k \in C_j}{P_j(k)c_k} sj=ckCjPj(k)ck
其中, c k ∈ C j c_k\in\ C_j ckCj表示第j个属性类型的每个子类属性embedding(比如颜色属性里面的红色), P j P_j Pj表示这些子属性上的概率分布。该公式主要抽取出每个对象的属性特征。

例子:具有”red“属性的对象,其颜色属性会被赋予接近”red“特征的embedding。

(2)对象之间的关系边,每条边都与语义类型 C L + 1 C_{L+1} CL+1上的概率分布 P L + 1 P_{L+1} PL+1相关联。类似,计算每一条边的关系语义embedding:
e ′ = ∑ c k ∈ C L + 1 P L + 1 ( k ) c k e^\prime=\sum_{c_k\in C_{L+1}}{P_{L+1}(k)c_k} e=ckCL+1PL+1(k)ck
补充:

每个对象有 ( L + 1 ) × D (L+1) \times D (L+1)×D维特征;每个边有 D D D维特征。

Part3:推理指令Reasoning instructions { r i } i = 0 N \{{r_i}\}_{{i}={0}}^{N} {ri}i=0N

将问题翻译为推理指令。

Step1:

使用NLP领域的GloVe对问题进行词嵌入,之后将每个词翻译为词汇表中最相近的概念(即和图片映射到同一个语义空间),如果词汇表没有就保留。

针对每个词向量 w i w_i wi,首先计算和词汇表中属性的相似度的分布:
P i = s o f t m a x ( w i T W C ) P_i=softmax(w_i^TWC) Pi=softmax(wiTWC)
其中,C为所有子属性的embedding,该矩阵中还包括一个额外的embedding c ′ c^\prime c,表示非内容词汇。

之后,将每个词转变为基于词汇表C的特征表示:
v i = P i ( c ‘ ) w i + ∑ c ϵ C \ { c ‘ } P i ( c ) c v_i=P_i(c^`)w_i+\sum_{c \epsilon C \backslash \{c^`\}}{P_i(c)c} vi=Pi(c)wi+cϵC\{c}Pi(c)c
基于该变换,问题中属性词会被词典中的对应属性替代;而其余功能词等报错原始embedding。最终得到M个转换之后的词序列 V M × d = { v i } i = 1 M V^{M\times d}=\{{v_i}\}_{i=1}^M VM×d={vi}i=1M

Step2:

使用一个基于注意力的encoder-decoder结构处理词序列:

encoder部分为一个LSTM循环神经网络,最终状态 q q q作为问题特征表示;

decoder部分为固定步数( N + 1 N+1 N+1)的循环decoder,其产生 N + 1 N+1 N+1个隐藏状态 h i h_i hi,每一步decoding时计算对词序列的注意力,并转换为对应的推理指令:
r i = s o f t m a x ( h i V T ) V r_i=softmax(h_iV^T)V ri=softmax(hiVT)V
该步骤使用注意力机制生成了一系列推理指令,其可以有选择性给关注问题中的各个部分,达到循序渐进找答案的效果。

补充: r i r_i ri为1*d维向量

Part4:模型推理

已求得:

概念词汇表 C = U i = 0 L + 1 C i C=U_{i=0}^{L+1}C_i C=Ui=0L+1Ci

图的状态S 每个状态: { s j } i = 0 L \{{s^j}\}_{i=0}^L {sj}i=0L

边E 每一条边: e ′ e^\prime e

指令序列 { r i } i = 0 N \{{r_i}\}_{i=0}^N {ri}i=0N

自动机初始化:场景图上对象的初始概率分布 p 0 p_0 p0

每个推理步 i i i:读取指令 r i r_i ri,并通过其沿着边更新概率,将注意力重新分配给状态。
δ S , E : p i × r i → p i + 1 \delta_{S,E}:p_i\times\ r_i\rightarrow\ p_{i+1} δS,E:pi×ripi+1
Step1:理解指令的含义,即找到与指令 r i r_i ri最相关的属性类型。

D D D为词汇表中 L + 2 L+2 L+2个属性,先求出指令和各属性相关的程度:

R i = s o f t m a x ( r i T ⋅ D ) R_i=softmax(r_i^T \cdot D) Ri=softmax(riTD)

比如 R i ( L + 1 ) ∈ [ 0 , 1 ] R_i(L+1)\in[0,1] Ri(L+1)[0,1]表示为 r i ′ r_i^\prime ri,代表着该指令和语义关系的相关性程度。

Step2:得到指令的内容,将其与所有的状态和边进行比较,计算节点和边的相关性分数:

Step3:将模型的注意力从现有状态转移到最相关的邻居状态(即下一个状态):

(3)计算基于每个状态自身属性潜在转移的概率,(4)则考虑到相对于当前状态、转移到下一状态的上下文相关性。最终通过加权平均概率得到下一状态的概率分布。

通过将该过程重复执行N步,模拟神经状态机的推理步骤。

Part5:分类

为了预测问题,使用两次全连接层的softmax分类器,接收LSTM输出的问题特征和最终指令 r N r_N rN引导下提取到的最终状态聚合得到的信息m:

(6)先按照指令类型求平均值,之后加上了对最终状态的注意力 p N p_N pN

三、实验

数据集:GQA VQA-CP

结果:

GQA:

VQA-CPv2:

模型泛化性能:

对GQA数据集进行修改,泛化了内容以及语法结构:内容泛化:测试机包括训练集不存在的种类;结构泛化:同中问题语法表达修改。

可视化推理过程:

四、总结

本文提出了神经状态机NSM,其从图像中抽取出一个图结构,并模拟有限自动机的推理步骤,来执行视觉推理任务。通过实验,证明了其有效性、鲁棒性和很好的泛化性能,此外也提高了可解释性。

通过将有限状态机的概念融入神经网络结构,使得符号和连接主义方法更加紧密的整合在一起,从而将神经模型从感官和知觉任务提升到更高层次的抽象、知识表征、组合性和推理领域。

VQA系列论文(六)相关推荐

  1. 软考高级系统架构设计师系列论文六十四:论软件测试方法和工具的选用

    软考高级系统架构设计师系列论文六十四:论软件测试方法和工具的选用 一.软件测试相关知识点 二.摘要 三.正文 四.总结 一.软件测试相关知识点 写论文前先全面了解软件测试相关知识点: 软考高级系统架构 ...

  2. VQA系列论文(二)

    论文阅读:<Multimodal Graph Networks for Compositional Generalization in Visual Question Answering> ...

  3. VQA系列论文(五)

    标题:机器推理的合成注意网络 来源:ICLR 2018 https://arxiv.org/abs/1803.03067 代码:https://github.com/stanfordnlp/mac-n ...

  4. VQA系列论文(三)

    论文阅读:<Deep Compositional Question Answering with Neural Module Networks> 标题:神经模块网络 来源:CVPR 201 ...

  5. VQA系列论文(一)

    阅读论文:<MuKEA: Multimodal Knowledge Extraction and Accumulation for Knowledge-based Visual Question ...

  6. VQA系列论文(四)

    标题:可解释的视觉问题回答的概率神经符号模型 来源:ICML 2019https://proceedings.mlr.press/v97/vedantam19a.html 代码:https://git ...

  7. 软考高级系统架构设计师系列论文之:百篇软考高级架构设计师论文范文

    软考高级系统架构设计师系列论文之:百篇软考高级架构设计师论文范文 软考高级架构设计师论文写作技巧: 软考高级系统架构设计师系列论文:详细介绍一篇论文的万能模版,快速了解如何写好一篇架构设计师论文 软考 ...

  8. 软考高级系统架构设计师系列论文三十六:论基于构件的软件开发

    软考高级系统架构设计师系列论文三十六:论基于构件的软件开发 一.摘要 二.正文 三.总结 一.摘要 本文以我主持的某商业银行交易监控分析系统项目为实例,探讨了作为开发方公司基于构件技术开发项目碰到的问 ...

  9. 数学之美 系列十六 (下)- 不要把所有的鸡蛋放在一个篮子里 最大熵模型

    数学之美 系列十六 (下)- 不要把所有的鸡蛋放在一个篮子里 最大熵模型 我们上次谈到用最大熵模型可以将各种信息综合在一起.我们留下一个问题没有回答,就是如何构造最大熵模型.我们已经所有的最大熵模型都 ...

最新文章

  1. 发展大数据还有三道坎要迈
  2. Maven3路程(三)用Maven创建第一个web项目(1)
  3. 剑走偏锋——用css制作一个三角形箭头
  4. 测试思想-好东西与大家分享-1
  5. delphi内存泄露查找工具之MemProof教程
  6. 计算机在外语专业中有哪些应用,CALL(3):计算机在外语教学中的应用
  7. SAP Commerce Cloud CMS 里的一些元素类型
  8. 计算机服务管理器延迟启动项,开机延时启动程序
  9. 这些学霸的作息表“曝光”,太震撼了,快来找差距!
  10. C# 分割字符串方法
  11. Linux学习笔记-子目录的支持
  12. 面试中精华,俺自己总结的
  13. 华为云计算机访问手机软件,华为云电脑来了,只需一个APP就能让手机秒变Windows电脑!...
  14. 人工智能——数据、信息与知识
  15. OpenGL基础10:变换
  16. 小程序键盘遮挡输入框情况之一
  17. @Resource和@Autowired注解的区别
  18. 杂谈(20210405)
  19. 博通linux网卡驱动,在64位CentOS 6 系统上安装Broadcom网卡驱动
  20. html肤质测试,皮肤致敏试验

热门文章

  1. ARM Linux下UPnP使用
  2. java如何重写onestring,44 java toString 方法 重写equals 方法
  3. 论文阅读 Skeleton-based abnormal gait recognition with spatio-temporal attention enhanced
  4. word和wps公式编辑器的区别
  5. 【Bootstrap学习笔记】12.轮播插件
  6. N - Cthulhu
  7. ipad iphone开发_如何在iPhone或iPad上取消应用订阅
  8. 007数据分析能力:SQL
  9. 非容器化Jenkins连接Kubernetes
  10. Java中的CST-UTC时间格式相互转换