标题:机器推理的合成注意网络
来源:ICLR 2018 https://arxiv.org/abs/1803.03067
代码:https://github.com/stanfordnlp/mac-network
作者笔记:https://cs.stanford.edu/people/dorarad/mac/blog.html

一、问题提出

虽然当前的深度神经网络模型在学习”输入和输出之间的直接映射“方面非常有效,其深度、规模和统计特性使得它们能够处理嘈杂和多样化的数据,但也限制了它们的可解释性,无法展示出一个连贯且透明的“思维过程”来得到他们的预测。

深度学习系统缺少推理能力,例如下例中,问题需要分步解决——从一个对象遍历到相关对象,迭代地朝着最终解决方案前进。

建立连贯的多步推理模型对于完成理解任务至关重要,作者文中提到了前人提出的一些将符号结构和神经模块起来的方法,例如:神经模块网络,其存在一定的问题,必须依赖于外部提供的结构化表示和功能程序,并且需要相对复杂的多阶段强化学习训练方案。这些模型结构的刚性和对特定操作模块的使用削弱了它们的鲁棒性和泛化能力。

为了在端到端的神经网络方法的通用性和鲁棒性 与 支持更加明确和结构化推理 的需求之间取得平衡,作者提出了MAC 网络,这是一种端到端的可微推理架构,用来顺序执行具体推理任务。

二、主要思想

给定一个知识库K(对于VQA,是一个图像)和一个任务描述q(对于VQA,是一个问题),MAC网络将问题分解为一系列推理步骤,每一个推理步骤使用一个MAC单元。

其组成主要包括三部分:

  • 输入单元
  • 堆叠的MAC单元(执行推理任务)
  • 输出单元

Part1:输入单元

处理输入的图片和问题:

图片:使用预训练的ResNet提取特征,获取中间层conv4特征,并后缀CNN得到图片每一个小块的特征表示,最终组合得到知识库:
K H × W × d = { k h , w d ∣ h , w = 1 , 1 H , W } , H = W = 14 K^{H\times W\times d}=\{k_{h,w}^d|_{h,w=1,1}^{H,W}\},H=W=14 KH×W×d={kh,wd​∣h,w=1,1H,W​},H=W=14
文本:将字符串转换为单词嵌入序列,并通过d维Bi-LSTM网络提取特征:

一系列隐藏状态: c w 1 , . . . , c w s cw_1,...,cw_s cw1​,...,cws​。

问题特征表示:最后的隐藏状态的拼接 c w 1 ← , c w s → \overleftarrow{cw_1},\overrightarrow{cw_s} cw1​ ​,cws​ ​,输入MAC单元时需要进行线性变换: q i = W i d × 2 d q + b i d q_i={W_i}^{d\times2d}q+b_i^d qi​=Wi​d×2dq+bid​。

Part2:MAC单元

MAC单元(Memory、Attention、Composition)是一个循环单元,被设计的类似于GRU或LSTM。

设计理念

MAC网络内部的设计作者借鉴了计算机体系结构的知识,将控制和内存分离,通过串行执行一系列指令来操作:

Step1:控制器获取指令并进行解码;

Step2:按照指令的指示,从内存中读取信息;

Step3:执行指令,选择地写入相应的内存,并考虑处理的信息进行下一步循环。

组成:

基于此,MAC单元显式地将内存与控制分离,内部保持双重隐藏状态:维度为 d d d的控制状态 c i c_i ci​和内存状态 m i m_i mi​,并由三个串联工作的操作单元组成,以执行一个推理步骤:

  • 控制单元Control:在每一步选择性地处理问题词序列中的一些部分来计算推理操作(这一步计算注意力来得到单词序列上的概率分布,表示该步骤对每个词的关注程度),并更新控制状态来表示单元要执行的推理操作。
  • 读取单元Read:在控制状态的指导下,从知识库中提取相关信息(在图片中选择性关注部分区域,同样使用注意力分布来表示提取到的信息)
  • 写单元Write:将提取到的新信息和前一步内存状态整合在一起,存储中间结果并更新内存状态——该状态为当前推理获得的结果。

初始化:初始化学习参数 c 0 c_0 c0​和 m 0 m_0 m0​。

控制单元

输入:问题词序列 c w 1 , . . . , c w s cw_1,...,cw_s cw1​,...,cws​,问题特征 q i q_i qi​,前一步的控制状态 c i − 1 c_{i-1} ci−1​

Step1:拼接问题特征表示 q i q_i qi​和先前的控制状态 c i − 1 c_{i-1} ci−1​并进行线性变换(获取相关知识);

Step2:基于注意力生成推理操作 c i c_i ci​:首先计算 c q i cq_i cqi​和每个问题词特征的相似度,之后通过线性变换和softmax函数获得问题词序列上的注意力分布,最后基于该分布对词进行加权求和生成新的推理操作 c i c_i ci​。

补充:后续该注意力可以用于可视化并解释控制状态内容,提高模型的透明度。

读取单元

输入:知识库 k h , w k_{h,w} kh,w​,前一步的内存状态 m i − 1 m_{i-1} mi−1​,当前步骤的控制状态 m i m_i mi​

Step1:通过将知识库元素和前一步的内存状态进行线性变换并对应位置相乘,提取模型从之前推理步骤中获取到的中间信息 I i , h , w I_{i,h,w} Ii,h,w​。

Step2:拼接知识库元素和中间结果。考虑到一些推理过程需要将独立的事实组合在一起得到答案,该步骤将允许模型推理考虑与之前的中间结果不直接相关的新信息。

Step3:计算控制状态 c i c_i ci​和中间信息 I i , h , w ‘ I_{i,h,w}^` Ii,h,w‘​的相似度,并通过softmax产生知识库元素上的注意力分布,最终加权求和得到读取单元的检索信息 r i r_i ri​。

可视化注意力:

例子:问题“what color is the matte thing to the right of the sphere in front of the tiny blue block”,首先找到蓝色小块并更新 m 1 m_1 m1​,之后控制单元关注到”the sphere in front of“,找到前面的球体并更新 m 2 m_2 m2​,最后关注到"the matte thing to the right of",找到问题的结果:紫色圆柱。

写单元:

输入:前一步的内存状态 m i − 1 m_{i-1} mi−1​,读取单元的检索信息 r i r_i ri​,当前步骤的控制状态 m i m_i mi​

主要用于基于推理指令,集成先前推理得到的内存状态和该步得到的检索信息

Step1:拼接 r i r_i ri​和 m i − 1 m_{i-1} mi−1​并进行线性变换,得到更新的内存状态 m i i n f o m_i^{info} miinfo​;

可选操作:

Step2:注意力机制:为了支持非顺序推理,允许单元综合先前的所有内存状态进行更新。计算当前指令 c i c_i ci​和先前指令序列 c 1 , . . . , c i − 1 c_1,...,c_{i-1} c1​,...,ci−1​的相关性并生成注意力分布 s a i j sa_{ij} saij​。利用该概率分布对前序内存状态进行加权求和,并组合 m i i n f o m_i^{info} miinfo​得到更新的内存状态 m i ‘ m_i^` mi‘​。

Step3:记忆门控:允许模型根据给定的问题动态调整推理过程长度。基于指令可选的更新内存状态 m i m_i mi​。

Part3:输出单元

基于问题特征表示 q q q和最终的存储状态 m p m_p mp​,利用双层全连接softmax分类器获得最终的答案预测。

三、实验

实验:CLEVR数据集

结果:

可解释性:

计数:

四、总结

1、保持问题和图像的表征空间之间的严格分离(它们只能通过可解释的离散分布进行交互),极大地增强了网络的可泛化性,并提高了其透明度。

2、不同于模块网络,MAC是端到端的完全可微网络,无需额外的监督数据,通过MAC单元的堆叠顺序执行推理才做,不需要依靠语法树或者其他设计和部署模块集合。此外,与深度神经网络方法相比,MAC具有更好的泛化性能、更高的计算效率和更透明的关系推理能力。

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

  1. 软考高级系统架构设计师系列论文五十七:论软件项目管理技术及其应用

    软考高级系统架构设计师系列论文五十七:论软件项目管理技术及其应用 一.软件项目管理技术相关知识点 二.摘要 三.正文 四.总结 一.软件项目管理技术相关知识点 写论文前充分了解软件项目管理技术相关的知 ...

  2. 软考高级系统架构设计师系列论文五十四:论软件设计模式及应用

    软考高级系统架构设计师系列论文五十四:论软件设计模式及应用 一.设计模式相关技术知识点 二.摘要 三.正文 四.总结 一.设计模式相关技术知识点 写论文前充分了解设计模式相关的知识点,并把这些知识点应 ...

  3. VQA系列论文(二)

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

  4. VQA系列论文(一)

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

  5. VQA系列论文(六)

    论文阅读:<Learning by abstraction: The neural state machine> 标题:抽象学习:神经状态机 来源:NeurIPS 2019 https:/ ...

  6. VQA系列论文(三)

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

  7. VQA系列论文(四)

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

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

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

  9. 软考高级系统架构设计师系列论文三十五:论企业应用集成

    软考高级系统架构设计师系列论文三十五:论企业应用集成 一.摘要 二.正文 三.总结 一.摘要 2021年4月,我参加了南京车站综合信息平台项目的开发,承担项目的方案设计任务.该项目力图通过对车站现有系 ...

最新文章

  1. IOS之未解问题--关于IOS图像渲染CPU和GPU
  2. 皮一皮:原来骑骆驼要求这么高。。
  3. 仅需一行代码,你的纯文本秒变Markdown
  4. Java类class getClasses()方法及示例
  5. 感觉csdn论坛不是很好用,感觉……
  6. 一维卷积神经网络_人人都能看得懂的卷积神经网络——入门篇
  7. C#winform两个或多个panel重叠布局时如何显示一个
  8. 【转】推荐系统算法总结(一)
  9. 图的遍历 (深度优先遍历和广度优先遍历)
  10. 用计算机键盘方法是,键盘一键打开计算器的方法
  11. 如何干掉腾讯网迷你版
  12. 日期计算器---日期相减、日期加天数、日期减天数
  13. java long to int_java int 转 Long
  14. 超市总营业额分析程序
  15. 如何把视频写在博客里?
  16. SpringCloud【框架】
  17. 天润融通牵手葵网新保险电销青睐云呼叫
  18. 重启电脑打印服务自动停止
  19. SSM高级整合-crud
  20. Spyder断点调试

热门文章

  1. LeetCode 328.奇偶链表
  2. 去AV片马赛克,开发者被抓了
  3. [LintCode/LeetCode] Rotate List
  4. 【软件通信协议】2. 详细解析UDP通信协议(附广播 组播)
  5. nodejs 在执行 npm install 的时候出现问题
  6. Ubuntu18.04 LTS 屏幕顶部状态栏设置同时显示日期和时间
  7. Android中如何实现蓝牙的配对与连接
  8. 如何使用ag-Grid
  9. python安装目录怎么更改_pip install 默认安装路径修改
  10. 2018的穿肠毒药和2019的心灵鸡汤