论文阅读:《Deep Compositional Question Answering with Neural Module Networks》
标题:神经模块网络
来源:CVPR 2016 https://openaccess.thecvf.com/content_cvpr_2016/html/Andreas_Neural_Module_Networks_CVPR_2016_paper.html
代码:https://github.com/jacobandreas/nmn2
一、问题提出
增强了网络的可解释性
VQA模型的分类:
(1)巨型网络 (monolithic network):传统的神经网络,以CNN、RNN等为基础,设计一个固定的网络架构处理 VQA 任务,比如CNN+LSTM 再连一个全连接分类器;
(2)神经模块网络(Neural modular network ,NMN),该类方法认为问题是一系列基础模块的组合(如find, relate, count等),这些基础模块的功能可以用子网络来拟合,回答不同的问题需要选择不同模块网络来组合成一个大网络,因此网络结构是视问题而定的、动态的。相比于巨型网络,这种动态组合的网络更加直观、可解释,中间过程也更加透明。
本文首次提出了Neural Module Networks神经模块网络(NMN),不是像传统的神经网络模型一样是一个整体,它是由多个模块化网络组合而成。根据VQA数据集中每个questions定制一个网络模型。也就是说NMN模型的网络是根据question的语言结构动态生成的。
二、主要思想
2.1 主要步骤:
Step1:使用语义分析器parser分析每个问题,并结合分析获取模块布局layout(包括回答问题所需要的基本计算模块和之间的关系)。
Setp2:组合生成针对特定任务的模块,回答问题。模块内部需要人工设计,模块之间传递的信息可能是原始图像特征、注意力或分类决策。NMN中的所有模块都是独立的和可组合的,这使得计算对于每个问题实例是不同的,并且在训练期间可能不会被观察到。
该图中首先生成一个关注狗的注意力(attend模块),它将其输出传递给一个位置分类器(classify模块)。
Step3:最终答案使用了一个循环网络(LSTM)来读取问题输入,并结合NMN的输出综合得到分类结果。
2.2 问题定义:
三元组(w, x, y)
w:自然语言问题
x:图片
y