VQA系列论文(六)
论文阅读:《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,E: p i × r i → p i + 1 p_i\times\ r_i\rightarrow\ p_{i+1} pi×ri→pi+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 s∈S,使用 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=ck∈Cj∑Pj(k)ck
其中, c k ∈ C j c_k\in\ C_j ck∈Cj表示第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′=ck∈CL+1∑PL+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×ri→pi+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(riT⋅D)
比如 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系列论文(六)相关推荐
- 软考高级系统架构设计师系列论文六十四:论软件测试方法和工具的选用
软考高级系统架构设计师系列论文六十四:论软件测试方法和工具的选用 一.软件测试相关知识点 二.摘要 三.正文 四.总结 一.软件测试相关知识点 写论文前先全面了解软件测试相关知识点: 软考高级系统架构 ...
- VQA系列论文(二)
论文阅读:<Multimodal Graph Networks for Compositional Generalization in Visual Question Answering> ...
- VQA系列论文(五)
标题:机器推理的合成注意网络 来源:ICLR 2018 https://arxiv.org/abs/1803.03067 代码:https://github.com/stanfordnlp/mac-n ...
- VQA系列论文(三)
论文阅读:<Deep Compositional Question Answering with Neural Module Networks> 标题:神经模块网络 来源:CVPR 201 ...
- VQA系列论文(一)
阅读论文:<MuKEA: Multimodal Knowledge Extraction and Accumulation for Knowledge-based Visual Question ...
- VQA系列论文(四)
标题:可解释的视觉问题回答的概率神经符号模型 来源:ICML 2019https://proceedings.mlr.press/v97/vedantam19a.html 代码:https://git ...
- 软考高级系统架构设计师系列论文之:百篇软考高级架构设计师论文范文
软考高级系统架构设计师系列论文之:百篇软考高级架构设计师论文范文 软考高级架构设计师论文写作技巧: 软考高级系统架构设计师系列论文:详细介绍一篇论文的万能模版,快速了解如何写好一篇架构设计师论文 软考 ...
- 软考高级系统架构设计师系列论文三十六:论基于构件的软件开发
软考高级系统架构设计师系列论文三十六:论基于构件的软件开发 一.摘要 二.正文 三.总结 一.摘要 本文以我主持的某商业银行交易监控分析系统项目为实例,探讨了作为开发方公司基于构件技术开发项目碰到的问 ...
- 数学之美 系列十六 (下)- 不要把所有的鸡蛋放在一个篮子里 最大熵模型
数学之美 系列十六 (下)- 不要把所有的鸡蛋放在一个篮子里 最大熵模型 我们上次谈到用最大熵模型可以将各种信息综合在一起.我们留下一个问题没有回答,就是如何构造最大熵模型.我们已经所有的最大熵模型都 ...
最新文章
- 发展大数据还有三道坎要迈
- Maven3路程(三)用Maven创建第一个web项目(1)
- 剑走偏锋——用css制作一个三角形箭头
- 测试思想-好东西与大家分享-1
- delphi内存泄露查找工具之MemProof教程
- 计算机在外语专业中有哪些应用,CALL(3):计算机在外语教学中的应用
- SAP Commerce Cloud CMS 里的一些元素类型
- 计算机服务管理器延迟启动项,开机延时启动程序
- 这些学霸的作息表“曝光”,太震撼了,快来找差距!
- C# 分割字符串方法
- Linux学习笔记-子目录的支持
- 面试中精华,俺自己总结的
- 华为云计算机访问手机软件,华为云电脑来了,只需一个APP就能让手机秒变Windows电脑!...
- 人工智能——数据、信息与知识
- OpenGL基础10:变换
- 小程序键盘遮挡输入框情况之一
- @Resource和@Autowired注解的区别
- 杂谈(20210405)
- 博通linux网卡驱动,在64位CentOS 6 系统上安装Broadcom网卡驱动
- html肤质测试,皮肤致敏试验
热门文章
- ARM Linux下UPnP使用
- java如何重写onestring,44 java toString 方法 重写equals 方法
- 论文阅读 Skeleton-based abnormal gait recognition with spatio-temporal attention enhanced
- word和wps公式编辑器的区别
- 【Bootstrap学习笔记】12.轮播插件
- N - Cthulhu
- ipad iphone开发_如何在iPhone或iPad上取消应用订阅
- 007数据分析能力:SQL
- 非容器化Jenkins连接Kubernetes
- Java中的CST-UTC时间格式相互转换