【论文】12-in-1


【论文】Lu, Jiasen, Vedanuj Goswami, Marcus Rohrbach, Devi Parikh, and Stefan Lee. 12-in-1: Multitask vision and language representation learning. (pdf


What is 12-in-1 ?

针对之前的工作,作者认为将每个任务数据集分裂开进行预训练的方法忽略了语言和视觉之间潜在且统一的联系,fine-tuning 后模型输出的结果是只针对某一特定任务的独立模型,即这个模型无法对另外一个任务给出参考。例如,模型学习到的是 “small red varse”,在 VQA 中我们对于问题 “What color is the small vase ? ” 我们回答 “red”,在 referring expression grounding 中我们将 small red varse 定位到红色小花瓶的区域,但是由于上述的割裂我们在 VQA 上微调的模型就无法反过去定位花瓶的图像区域

因此,作者在 ViLBERT 上进行拓展,将许多任务联合在一起进行训练使模型得到来自不同任务源的 grounding supervision,最终实现将四大任务、 12 个数据集集合在一个模型上进行训练的 12-in-1

主要贡献:

  • 系统地分析了不同 V&L 数据集和任务与多任务联合训练的关系,提出 Clean V&L Multi-Task setup,保证在十二合一的训练中不会训练集测试集交叉的情况
  • 提出了一种融合了 12 个训练集在一个模型上的 single multi-task model,并为解决 12-in-1 的大规模训练提出了 dynamic stop-and-go training scheduler,taskdependent input tokens 和 simple hyper-parameter heuristics 三种 training tricks

Task-Groups and Datasets

Vocab-based VQA: 考虑三个主流数据集 VQAv2,GQA 和 VGQA

Image Retrieval: 考虑 COCO 和 Flick30K 针对于该任务组的 caption datasets

Referring Expression: 在给定自然语言描述的情况下,定位描述所指的图像区域。在不同数据集中,这种指代性的描述差异很大,可能是简短的名词短语,也有可能是多轮的对话。作者考虑了 RefCOCO(+/g) 的 pharse grounding,Visual17W 的 pointing questions,以及 GuessWhat 中的对话序列

Multi-modal Verification: 给定一张或者多张图像以及一段自然语言描述,判断它们之间的匹配是否正确,或预测它们的语义关系。考虑 NLVR2 和 SNLI-VE。在 NLVR2 中给出两张图像和一段描述,要求两张图像都与描述匹配。在 SNLI-VE 中,匹配程度视为一个分类问题,分为 entailment、contradiction 和 neutral,表示图像内容与描述相符、不符和不完全符合

A Clean V&L Multi-Task Setup

如下图所示,许多 V&L 任务之间的数据集会存在重叠情况,如果只是简单的将 12 个数据集揉在一起的话会导致某一任务从其他任务的数据集中习得一些作弊信息,所以作者提出了 clean V&L multi-task setup 保证所有的测试数据都不会再训练或者验证数据中出现

Multi-Task Learning

12-in-1 的结构是这样的,对于每一个任务有一个 head network,然后它们有一个共享的 trunk ViLBERT,共享的 trunk ViLBERT 的参数记为 θ s \theta_s θs,针对所有下游任务 T \mathcal T T 的 head network 的参数记为 { θ t } t = 1 T \left\{\theta_t\right\}_{t=1}^{\mathcal T} {θt}t=1T,那么整个网络要学的参数就是 θ s ∪ { θ t } t = 1 T \theta_s\cup \left\{\theta_t\right\}_{t=1}^{\mathcal T} θs{θt}t=1T

作者对 ViLBERT 的预训练方式做出了两个修改:

  • 遮罩图像区域的时候,作者将其他有明显重叠的区域也进行了遮罩(IoU > 0.4),避免其他区域泄露信息
  • 在跨模态对齐预测的时候不对 unmatching caption 的样本进行采样,以此增强 masked multimodal modelling losss

Task Token

不同组的任务的处理是不同的,因此作者引入了 task token [TASKt],那么新的 ViLBERT 的输入格式就是 { I M G , v q , ⋯   , v T , C L S , T a s k t , w 1 , ⋯   , w T , S E P } \left\{IMG,v_q,\cdots,v_T,CLS,Task_t, w_1,\cdots,w_T,SEP\right\} {IMG,vq,,vT,CLS,Taskt,w1,,wT,SEP},由此 12-in-1 可以以一种自底向上的方式利用任务信息

Vocab-Based VQA Output

h I M G h_{IMG} hIMG h C L S h_{CLS} hCLS 的元素积的结果作为 overall imagequery representation,然后通过一个两层的 MLP 得到预训练回答 A A A 的得分
P v ( A ∣ I , Q ) = σ ( M L P ( h I M G ⊙ h C L S ) ) P_v(A|I,Q)=\sigma(MLP(h_{IMG}\odot h_{CLS})) Pv(AI,Q)=σ(MLP(hIMGhCLS))
VQA 和 VGQA 共享 MLP 和 answer vocabulary,GQA 单独使用一套

Image Retrieval Output

按照如下公式计算图文对的匹配得分
R e l ( I , Q ) = W i ( h I M G ⊙ h C L S ) Rel(I,Q)=W_i(h_{IMG}\odot h_{CLS}) Rel(I,Q)=Wi(hIMGhCLS)
COCO 和 Flickr30K 共享 W i W_i Wi

Referring Expression Output

根据给定的描述对一组 region proposals 进行重排序,将每个图像区域 i i i 的最终表征 h v i h_{v_i} hvi 通过 W r ∈ R d × 1 W_r\in\mathbb R^{d\times1} WrRd×1 投影计算匹配得分
R e l ( v i , Q ) = W r h v i Rel(v_i,Q)=W_rh_{v_i} Rel(vi,Q)=Wrhvi
W r W_r Wr 在所有 referring expression tasks 之间共享

Multi-modal Verification Output

以 NLVR2 为例,输入两张图片 I 0 , I 1 I_0,I_1 I0,I1 以及描述 Q Q Q,我们将该问题是做一个分类问题,可以给出一个关于图文对 ( I 0 , Q ) (I_0,Q) (I0,Q) ( I 1 , Q ) (I1,Q) (I1,Q) 的 embedding,根据该 embedding 做分类预测
P v ( C ∣ I 0 , I 1 , Q ) = s o f t m a x ( M L P ( [ h I M G 0 ⊙ h C L S 0 h I M G 1 ⊙ h C L S 1 ] ) ) P_v(C|I_0,I_1,Q)=softmax\left(MLP\left(\left[\begin{matrix} h_{IMG}^0\odot h_{CLS}^0\\ h_{IMG}^1\odot h_{CLS}^1 \end{matrix}\right]\right)\right) Pv(CI0,I1,Q)=softmax(MLP([hIMG0hCLS0hIMG1hCLS1]))
其中, [ ⋅ ] [\cdot] [] 表示 concatenation

对于 SNLI-VE,输入的是一张图片,我们采用另外一个分开的分类器,形式和上面相似

Large-Scale Multitask Training

如此下来,12-in-1 具有 6 个 task head、超过 4.4m 的参数,融合了 12 个数据集,对于这样的网络的训练是十分困难的。除了网络自身的庞大,数据集的不统一也带来了很多问题,例如, VGQA 的一个 epoch 相当于 RefCOCOg 上的 19.8 个 epoch。同样,分开计算的情况下,RefCOCOg 会迭代 5K 次,但是 VQA 要迭代 84K 次。诸如此类在数据集上的不统一都给模型的训练带来了大问题,因此作者提出了如下的一些 training tricks

Pretraining

所有模型都在 Conceptual Caption 数据集上进行预训练,预训练的自监督任务包括上面提到的两点修改

Round-Robin Batch-Level Sampling

根据论文的描述不太清楚,但简单来说就是在开始多任务训练之前在不同任务之间轮转按照一种分 batch level 的采样策略进行采样,这可以使得在一个 multi-task iteration 中既能完成每个任务的前向传播,也能按顺序更新完参数

Dynamic Stop-and-Go(DSG)

如前所述,如果我简单的将迭代次数设置为所有任务中所需的最大值,那么对于 5K 次迭代的任务就会出现过拟合。但是,如果让这些迭代次数不多的任务提前终止又会出现基础网络漂移的问题,有点像刻舟求剑, 对应 RefCOCOg 数据集的任务在 5K 迭代的时候停止,认为这时表现最佳,但是在 84K 次 VQA 迭代完成后,trunk ViLBERT 的参数早不是 5K 迭代时的参数,同样会导致 RefCOCOg 上表现不好

于是作者提出了一种 “走走停停” 的训练方式,我们跟踪任务 t t t 的验证损失 s t s_t st,如果两个 task epoch 之间的涨幅未超过 0.1% 那么我们就视为该 head network 已经收敛,将其设置为 stop mode,进入 stop mode 后每隔 iter-gap Δ \Delta Δ 个 epoch 之后才更新 head network。同样,反过来,如果某一次跟踪到的 head network 表现下降了 0.5%,我们认为产生基础网络漂移了,需要将其重新加入整个结构体系的训练中,算法如下图所示

Curriculum Learning

作者研究了一下 curriculum 和 anti-curriculum strategies 对模型性能的影响。所谓 curriculum 就是先在收敛最慢的任务组 G1(Vocab-Based VQA)上训练,然后再开始完整的循环多任务预训练;所谓的 anti-curriculum 就是先在收敛最快的任务组 G3(Referring Expression)上进行训练,然后再开始完整的循环多任务训练。作者最后指出不使用 curriculum learning 反而会有更好的表现

Setting Multi-Task Hyperparameters

论文遵循一个简单的设计思想—— “大家好才是真的好”,换言之,每个任务在自己里面尝试超参数组合,而不跑到别的任务上联合寻找不错的超参数组合,这样子大大减少了搜索联合训练超参数的工作负担

  • Batch Size:各自任务的批大小应该调整来适合自己任务
  • Warm-up Duration:记 N N N 表示所有单个任务训练需要的最大迭代次数,作者采用了一个线性的预热,即使用 η ∗ N \eta*N ηN 次迭代进行预热。预热时间过短,比较复杂的任务性能会有所下降。在实验中,作者设 η = 0.1 \eta=0.1 η=0.1
  • Loss Scaling:不同的任务使用分离的学习率是很重要的,共享的基础模型的学习率设置为所有单个任务学习率的最小值。为了适应每个数据集的可变学习率,作者用任务目标学习率除以基础模型学习率等到一个比例参数,以此比例参数来缩放每个数据集的任务损失

Experiments

12-in-1 通过在 Visual Genome 数据集上带属性损失进行训练 的ResNeXT-152 based Faster RCNN 来获得图像特征;使用 BERT 的权重初始化 ViLBERT;通过线性预热、学习率线性衰减机制和 AdamW 优化,在 8 块 V100 上训练 5 天经过 40K 迭代得到

下表是和一些 SOTA 的比较,可以发现在全部任务上训练出来的 12-in-1 在参数减小的情况下还是取得了和 UNITER 接近的结果(大部分表现超过了 UNITERbase,比起 UNITERlarge 来说略微不足)

下表是 12-in-1 自己内部的一些比较

下图展示了 12-in-1 模型对于一些 V&L 任务的处理

同时论文在附录中也给出了一些失败的例子

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值