Question-Guided Spatio-Temporal Contextual Attention for Video Question Answering 论文阅读笔记

1. 主要解决了什么问题?怎么解决的?

解决的问题: 现有方法没有充分利用 时空信息question关系

原文是这么说的:“the relationship between spatio-temporal information and question still has not been well utilized in most existing methods for Video QA.”。这里的时空信息没有指定是视频中的还是问题中的,但是从结果来看应该是视频、问题两种模态都有,并且我认为以问题中的时空信息为主。

解决方法自然是挖掘这种“关系”并有效利用它。网络整体结构如下图所示。以下将分别介绍Video-Guided Question Attention Block、Contextual Attention Block。

Question-Guided Spatio-Temporal Contextual Attention for Video Question Answering 论文阅读笔记

Video-Guided Question Attention Block

(1)将 Question Embedding 中的每个word embedding都与视频的全局特征vg做点积,得到视频-问题的联合表征Jq ,再经过一个卷积层得到每个单词的权重 sqw,去表示每个单词在这种关系中的重要性。然后乘以最初的question embedding得到 加权后的 问题特征Qw
Question-Guided Spatio-Temporal Contextual Attention for Video Question Answering 论文阅读笔记

Jiq=Fuse(vg,qi)=WvqvgWqqqiJ_{i}^{q}=\operatorname{Fuse}\left(v^{g}, q_{i}\right)=W_{v}^{q} v^{g} \odot W_{q}^{q} q^{i} siqw=exp(WwqJiq)i=1Texp(WwqJiq)qiw=siqwqi+qiQw=[q1w,q2w,,qTw]\begin{aligned} s_{i}^{q w} &=\frac{\exp \left(W_{w}^{q} J_{i}^{q}\right)}{\sum_{i=1}^{T} \exp \left(W_{w}^{q} J_{i}^{q}\right)} \\ q_{i}^{w} &=s_{i}^{q w} q_{i}+q_{i} \\ Q^{w} &=\left[q_{1}^{w}, q_{2}^{w}, \ldots, q_{T}^{w}\right] \end{aligned}

第三个公式中多加了一项原始的单词特征qi是为了避免在计算word attention的时候损失了重要特征。

(2)得到了Qw之后,结合Self-Attention可以产生两个question attention masks(公式中哪里体现了self attention?),分别为Masks和Maskt。这两个mask分别强调问题特征中的时间和空间部分,并通过它们将question embedding分为Temporal Question Embedding、Spatial Question Embedding。

maskis=exp(Wsqqiw)i=1Texp(Wsqqiw)Masks=[mask1s,mask2s,,maskTs]qs=i=1Tmaskisqiw\begin{aligned} \operatorname{mas} k_{i}^{s} &=\frac{\exp \left(W_{s}^{q} q_{i}^{w}\right)}{\sum_{i=1}^{T} \exp \left(W_{s}^{q} q_{i}^{w}\right)} \\ \text {Mask}^{s} &=\left[\operatorname{mask}_{1}^{s}, \operatorname{mas} k_{2}^{s}, \ldots, \operatorname{mas} k_{T}^{s}\right] \\ q^{s} &=\sum_{i=1}^{T} \operatorname{mas} k_{i}^{s} q_{i}^{w} \end{aligned} Ldiv=MasksMasktMasksMaskt\mathcal{L}_{d i v}=\frac{M a s k^{s} \cdot M a s k^{t}}{\left\|M a s k^{s}\right\|\left\|M a s k^{t}\right\|}
(3)为了避免两个embedding有重合,引入Diversity Loss来使得两种特征尽可能不一样。

以上的过程在原文中叫"Video-Guided Question Attention Block",主要目的是引入视频信息来更好地理解问题。尤其是产生的word attention可以对与视频有关的那些单词进行(加权)强调。 加权之后最终将问题特征分成了时间、空间两部分,也就是挖掘得到了我们想要的”时空信息“与question的关系。

– Contextual Attention Block(分为SCAB、MS-TCAB)

理解好问题之后,就可以找答案了。得到了分别表示时空信息的question embedding,作者用它们俩去指导挖掘视频中和正确答案有关的特征信息。
Question-Guided Spatio-Temporal Contextual Attention for Video Question Answering 论文阅读笔记
(1)对于SCAB,输入的Visual Feature为每一帧的CNN特征,Context Feature为Visual Feature沿着空间维度上做平均的每一帧的全局特征(什么叫沿着空间维度平均?CNN出来的不就是每一帧的全局特征吗?)。这个模块用于筛选出每一帧中与question有关的空间region。

v~i=Concatenate(vic,cc)Jc=Wvcv~iWqcqcsic=exp(WacJic)i=1Nexp(WacJic)va=i=1Nsicvic\begin{aligned} \widetilde{v}_{i} &=\text {Concatenate}\left(v_{i}^{c}, c^{c}\right) \\ J^{c} &=W_{v}^{c} \widetilde{v}_{i} \odot W_{q}^{c} q^{c} \\ s_{i}^{c} &=\frac{\exp \left(W_{a}^{c} J_{i}^{c}\right)}{\sum_{i=1}^{N} \exp \left(W_{a}^{c} J_{i}^{c}\right)} \\ v^{a} &=\sum_{i=1}^{N} s_{i}^{c} v_{i}^{c} \end{aligned}

vicicccontext\begin{aligned} 其中v_{i}^{c}第i帧的特征, c^{c}为输入的context上下文特征 \end{aligned}(2)对于TCAB,输入的Visual Feature为SCAB的输出做空洞卷积(dilation rate=k)的结果,Context Feature为SCAB的输出经过LSTM建模的结果。如图5所示。这个模块用于筛选出视频中和question有关的时序region。

(3)考虑到回答不同的问题,需要关注的时间region的跨度不同,设计了K个不同dilation rate的平行TCAB head(即Multi Scale-TCAB),并将它们的输出concate起来作为最终的输出。
Question-Guided Spatio-Temporal Contextual Attention for Video Question Answering 论文阅读笔记

– Joint Representation

将得到的spatial / temperal question embedding concate起来作为qf,与SCAB、MS-TCAB得到的视频特征vf做融合,得到两个模态的联合表征。具体的融合是用如下的公式:
Jf=WvfvfWqfqf+bfJ^{f}=W_{v}^{f} v^{f} \odot W_{q}^{f} q^{f}+b^{f}

– Answer Model

(1) 对于open-ended words task:建模为分类任务。使用全连接层FC+softmax对每个答案做预测,用交叉熵训练。

(2)对于multi-choice task,将候选答案做与初始question embedding同样的embedding(维度与QueST输出的Jf维度一样),然后将Jf与候选答案的embedding做点积得到联合表征,接着用共享权重的全连接层将得到的联合表征投射为一个实数,最后用softmax归一化。并用交叉熵进行训练。

(3)对于open-ended numbers task, such as counting,建模为回归任务。使用全连接层得到不同的实数答案,用均方误差训练。

2. 为什么会work?

(1)Divide and Conquer,分而治之。将时间、空间分开处理。

(2)视频和问题多次点积,得到的attention再反作用于彼此,在特征表示阶段就进行了实际意义上的跨模态融合,使得两种模态的表示不会各自孤立。

3. 对我有什么启发?

(1)学到了两种模态进行点积得到attenton的做法。
(2)Diversity Loss既简单又有效。
(3)Multi-scale的做法更符合实际情况,而且很通用。
(4)考虑问题要全面,比如本文考虑到word attention时可能造成的重要特征丢失,加了一路残差。这种做法可能不会每次都起作用,比如在CAB中就没有加残差。我不知道是不是作者试过但是效果不好,但是这种trick可以作为提高效果的一种思路,每次都可以试试。

4. 论文中不理解的地方

(1)空洞卷积在分割任务中常用,这里为什么会用到CAB中?
(2)TCAB、SCAB中的context各起到了什么作用,尤其是SCAB?
(3)文章中提到的self-attention具体体现在哪里?为什么用self-attention得到mask的公式和用卷积得到attention weights的公式一模一样?