标题:机器推理的合成注意网络
来源: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,