Mcginn's Blog

论文笔记 Tips and Tricks for Visual Question Answering

字数统计: 823阅读时长: 3 min
2018/10/09 Share

简介

​ 该论文作者取得了 2017 VQA Challenge 的第一,总结一些 tips 和 tricks 来提升 VQA 的表现。

​ 这篇论文的每个实验使用不同的随机种子重复3次实验来统计结果。

模型

一些细节

  • 所有问题的长度固定 14。

  • 问题特征 $q$ 与图像特征 $\hat v$ 的融合使用 Hadamard product(逐项相乘)。

  • 目标函数(损失函数)

  • 作者使用了额外的数据集 Visual Genome(VG),共 485,000。

关键点

Sigmoid output

  • 输出使用 sigmoid 将每个类别(或答案)归一化。

  • softmax 也可以用来归一化,但是会变成单个类别输出,而 sigmoid 可以输出多个类。这样可以适应一个问题有多个答案的情况。

Soft scores as ground truth targets

  • VQA 中问题答案附有置信度,将答案向量化有 2 种做法:1)使用固定阈值将答案二值化;2)使用 sigmoid 或 softmax 来归一化答案。

  • 做法1)就是 hard scores,每个类只有 0、1 两个选项。做法2)就是 soft scores,每个类都有一个浮点数的得分。

  • 作者使用了两个简单的二值化进行对比

Gated tanh activations

  • 使用 gated tanh activations 作为激活函数,而不是常用的 Rectified Linear Unit(ReLU)。

  • 激活函数 $f_a: x \in R^m \rightarrow y \in R^n$

  • $W,W’,b,b’$ 为训练参数,$\circ$ 表示 Hadamard product(逐项相乘)。

  • 该激活函数之前被用于自然语言处理。

Bottom up attention

  • 使用 bottom up attention 来提取图像特征,而不是直接使用 CNN 的特征层(feature map)。

  • Bottom up attention 基于 Faster R-CNN 框架,提取若干 Region of Interest(RoI)的特征,继而通过非线性层做 attention。论文里使用阈值来筛选出 $K$ 个 RoI 并设置了 100 的上限(作者将数量 $K$ 固定为 36,表现会差一些,但是减少了计算开销)。

  • Attention 的非线性层

    $q$ 为问题表示向量,$v_i$ 为 RoI 的特征向量。

  • 使用 bottom up attention 相对于传统的 CNN 提取特征,提升是很明显的。

Pretrained representations to initialize

  • 论文提出了加入先验知识 $w_o^{text}$ 和 $w_o^{img}$ 来初始化输出层参数

  • $w_o^{text}$ 使用 GloVe word embedding 初始化。

  • $w_o^{img}$ 使用谷歌图片搜索 10 张对应图片并用 ResNet-10 提取特征,10 个特征向量均值化得到最终的向量表示。

  • 这个做法提升了大约 0.87 个点。

Larger mini-batches

  • 通常来说,mini-batches 越大效果越好,但是大到一定程度后就不会有明显提升了,训练速度会慢。

Smart shuffling

  • batch 通常从数据中随机抽取。针对 VQA 这个问题来说,同个问题关联到不同图像会得到不一样的答案(balanced pair),所以作者提出了 smart shuffling 控制 balanced pair 的比例。
  • 这个做法 VQA 得分与随机做法差不多,但是提升了 Accuracy over paris。
CATALOG
  1. 1. 简介
  2. 2. 一些细节
  3. 3. 关键点
    1. 3.1. Sigmoid output
    2. 3.2. Soft scores as ground truth targets
    3. 3.3. Gated tanh activations
    4. 3.4. Bottom up attention
    5. 3.5. Pretrained representations to initialize
    6. 3.6. Larger mini-batches
    7. 3.7. Smart shuffling