VD-BERT: A Unified Vision and Dialog Transformer with BERT
https://github.com/salesforce/VD-BERT.
本文贡献
- 展示了BERT可以通过简单的视觉基础训练来有效地适应视觉对话任务,以捕捉复杂的视觉对话交互。此外,VD-BERT是第一个支持discriminative和 generative训练设置的统一模型,没有显式解码器。
- 不需要对外部视觉语言数据进行预处理,模型在视觉对话基准的discriminative设置和generative设置中产生了SOTA结果。
The VD-BERT Model
问题定义
给定一个基于图像
I
I
I的第
t
t
t轮question:
Q
t
Q_t
Qt,以及它的对话历史:
C
C
C表示图像的标题,agent被要求去预测它的答案
A
t
A_t
At,通过排名100个候选答案:
一般来说,有两种类型的解码器来预测答案:对候选答案进行排序并使用交叉熵损失进行训练的判别decoder,或者合成答案并使用最大对数似然损失进行训练的生成decoder。
Model
首先,使用一个统一的vision-dialog Transformer 来编码vision和dialog历史,其中在输入中添加了一个正确答案,以早期融合的方式模拟它们的交互。接下来,采用基于视觉的MLM和NSP目标,使用两种类型的自我注意masked——bidirectional和seq2seq去训练视觉和对话融合模型。最后设计了一个Rank模块来进一步微调。
Vision-Dialog Transformer Encoder
Faster RCNN提取图像特征:
O
i
O_i
Oi
∈
∈
∈
R
R
R
2
^2
2
0
^0
0
4
^4
4
8
^8
8 ,
k
k
k是目标的数量(被固定在36)
Language Features
将所有文本元素(标题和多轮对话)打包成一个长序列。使用WordPiece标记器将它分成一个单词序列 w w w,其中每个单词都嵌入了一个绝对位置代码,跟BERT一样。
Cross-Modality Encoding
[CLS] 开始
[SEP] 分割类型
[EOT] 对话结束标志
因此,输入序列:
x
x
x = ([CLS],
o
1
o_1
o1,…,
o
k
o_k
ok,[SEP],
C
C
C,[EOT],
Q
1
Q_1
Q1
A
1
A_1
A1,[EOT],…,
Q
t
Q_t
Qt
A
t
A_t
At,[SEP])
为了通知模型答案预测,在
Q
t
Q_t
Qt
A
t
A_t
At pair之间插入一个[PRED]标记。最后,将每个输入tokens嵌入与它的位置嵌入和片段嵌入(0或1,指示它是图像还是文本)和层归一化相结合。
Transformer Backbone
将嵌入的vision-dialog输入表示为
H
0
H^0
H0= [
e
1
e_1
e1,…,
e
e
e
∣
_|
∣
x
_x
x
∣
_|
∣],然后将它们编码成多级上下文表示
H
l
H^l
Hl = [
h
h
h
l
^l
l
1
_1
1,…,
h
h
h
l
^l
l
∣
_|
∣
x
_x
x
∣
_|
∣]使用
L
L
L堆叠变压器模块,其中第
L
L
L个Transformer模块表示为
H
l
H^l
Hl =Transforemer(
H
H
H
l
^l
l
−
^-
−
1
^1
1),
L
L
L
∈
∈
∈[
1
1
1,
L
L
L]。在每个Transformer模块中,前一层的输出
H
H
H
l
^l
l
−
^-
−
1
^1
1
∈
∈
∈
R
R
R
∣
^|
∣
x
^x
x
∣
^|
∣
×
^×
×
D
^D
D
h
^h
h使用多头self-attention进行聚合:
M
M
M是masked矩阵。
Visually Grounded Training Objectives
使用MLM和NSP来训练,旨在捕捉模态间(即图像-对话)和模态内(即图像-图像-对话)之间的密集交互:
文本段中15%的标记(包括像[EOT]和[SEP]这样的特殊标记)被随机屏蔽掉,并用特殊标记[MASK]替换。然后,要求模型不仅基于周围的标记,还基于图像
I
I
I来恢复它们(图像中不做mask处理):
对于NSP,与BERT不同:不是模拟两个句子之间的关系或图像-文本对的匹配,而是基于对图像和对话历史的共同理解来预测附加的回答是否正确:
S(·)取[CLS]位置的表示送到最后一层得到概率。
Discriminative Setting
为了在辨别环境中进行训练,将选择答案的任务转化为一个逐点二元分类问题。
从候选库中抽取一个答案样本,并将其附加到输入序列中,然后要求NSP辨别所抽取的答案是否正确。使用双向self-attention(mask矩阵M都设置为0)掩码。为了避免不平衡的类分布,在每个epoch中保持正负实例的比例为1:1。在推理过程中,根据NSP heads的正类别分数对答案进行排名。
Generative Setting
为了自回归生成答案,作者还使用seq2seq self -attention mask训练VD-BERT。将每个Transformer的输入序列分为两个子序列,上下文和答案:
通过将 M M M的左边部分设置为全0允许上下文中的tokens被完全可见。对于答案序列,屏蔽掉“未来”标记(通过设置为负无穷)以获得自回归关注(参见图2中的红点)。
在推理过程中,我们依赖于相同的统一Transformer encoder ,该encoder具有顺序MLM操作,而没有显式解码器。通过递归地在序列的末尾添加一个[MASK]标记,以触发one-step预测,然后用预测的token替换它,用于下一个token预测。解码过程基于贪婪采样,并在发出[SEP]时终止,所得的对数似然分数将用于对候选答案进行排序。
Fine-tuning with Rank Optimization
由于一些候选答案在语义上可能是相似的(例如,图2中的“brown”对“brown tan”),
作者提供了注释:该注释为100个候选答案指定实值相关性分数,[
s
1
s_1
s1,…,
s
1
s_1
s1
0
_0
0
0
_0
0]带
s
i
s_i
si
∈
∈
∈ [
0
0
0,
1
1
1]。为了对此进行微调,将来自模型的所有候选答案的NSP分数组合成向量[
p
1
p_1
p1,…,
p
1
p_1
p1
0
_0
0
0
_0
0]。由于密集注释的微调通常是一个学习排名(LTR)的问题,所以可以利用一些排名优化方法。本文采用List-Net with top-1 approximation作为VD-BERT的排序模块:
实验
DATASETS
VisDial v0.9 and v1.0 datasets
参数
BASE-BERT作为主干。将最大输入序列长度(包括36个可视对象)保持在250。
Adam以3e-5的初始学习率和32的batch_size来训练模型。线性学习率衰减:0.1
首先使用MLM和NSP
L
L
L
O
O
O
S
S
S
S
S
S(具有相等的系数)在4个V100 GPUs的集群上训练VD-BERT 30个epochs。
结果
VisDial v1.0:
VisDial v0.9
消融实验:
(a)训练设置:BERT初始化最优
(b)对话上下文设置:全历史多指标最优
(c)loss设置:ListNet 和ApproxNDCG
(d)选择标准