UNITER多模态预训练模型原理加代码解读

更新时间:2023-07-28 04:59:03 阅读: 评论:0

UNITER多模态预训练模型原理加代码解读UNITER多模态预训练模型原理
1. 数据
过去的5年中,Vision+NLP的研究者所使⽤的主要数据集如下展⽰:
本⽂中所使⽤到的4种数据集如下图所⽰,Conceptual Captions和SBU Captions数据集是免费的,但是不是太clean:
2. 算法
强调英文
鲇鱼怎么读2.1 整体结构
这⾥采⽤的是two-stage training pipeline训练流程。在⼀些⼤量的,含有噪声但是⽐较cheap的数据上,我们设计⼀些预训练任务,但是这些预训练任务需要被⼩⼼的design,因为我们要获得⼀个鲁棒的training。然后,把这些预训练好的模型通过fine-tining适应到下流的任务中,同时在下流任务中的数据⼀般是规模⽐较⼩的⽽且clean的。同时之前的任务⼀般最多只能适应2-3个task,但是这⾥我们同时在下游fine-tine9个model,取得了9个SOTA。具体如下图所⽰:
原始训练数据的形式是如下图所⽰:
⾸先通过⽬标检测模型把image转换成⼀系列的region,然后把句⼦tokenize之后转化成⼀个序列,之后把它们作为输⼊转化到UNITER 中:
drunk是什么意思
西安英语培训班UNITER的结构由三个部分构成,第⼀个部分是Image Embedder,具体来说就是⽤Faster-RCNN抽取每个region的region feature,同时⽤⼀个7维的向量(可能是四个坐标位置加上宽⾼或者⾯积等信息构成的7维向量,UNITER并没有直接使⽤检测器针对每个region输出的类别信息)来encode每⼀个region的position,将region feature和location feature通过fc层再相加构成了⼀个Image feature。
在Text Embedder中,就和bert中类似,就是⼀个token embedding和position embedding相加之后经过⼀个Layer Norm层,得到了Text Feature。把前⾯两部分特征经过transfomer就得到了UNITER Model。
除此之外UNITER还设计了三个预训练的任务去训练UNITER模型。第⼀个是Masked Language Modeling(MLM),即随机mask掉⼀些词,然后训练模型尝试让他去recover这个词。相同的MRM表⽰的是我们随机mask掉图⽚中提取出来的⼀些区域,然后recover这些缺失的区域。第三个任务是Image-Text-Matching(ITM),在这个任务中我们抽取整样本图⽂pair或者负样本图⽂pair,让模型去预测输⼊时正还是负。
expired是什么意思2.2 具体细节
下⾯让我们看⼀下每⼀个预训练任务具体的细节。
(1)第⼀个预训练任务MLM,输⼊是图⽚和⽂本对,随机的mask掉⼀些位置的词语,⽬标是在这些mask掉的位置让UNITER去recover 原本的token,所以这⾥⽤到的损失函数是负的log似然函数,具体如下图:
(2)第⼆个预训练任务是MRM,被mask掉的不是word,⽽是图⽚中的region,希望能够recover那些mask掉的region,这⾥提出了三种⽅法(对应三种loss)去重构。第⼀种是让模型recover出的feature对应的vector1和真实的feature对应的vector2之间做L2范数损失。
ver
第⼆种是Faster-RCNN得到的是class label和bbox,所以我们针对⼀个region可以让UNITER去预测它的分类,我们希望ground truth 的class可以得到最⾼的置信度分数,具体来说如下图所⽰,橙⾊的是ground的label,绿⾊的是UNITER的输出置信度,我们可以⽤交叉熵损失,从⽽让他学习到每⼀个mask类型的分类。
第三种是我们可以⽤Faster-RCNN输出的类别分布做损失,橙⾊的是Faster-RCNN的输出,我们希望UNITER输出的分布尽可能接近橙⾊的分布,具体见下图:
(3)第三个预训练任务是ITM,每当我们输⼊⼀个image-text pair,我们希望通过随机mask掉image或者text来建造⼀个negative pair,我们的⽬标是预测输⼊的image-text pair是不是存在对应关系,所以这是⼀个⼆分类问题。
前⾯介绍了这么多预训练任务和⽅法,具体哪些⽅法对模型性能提升有效果,这个在实验中具体介绍。
3.计算
3.1 计算资源
计算基本资源如下所⽰,每个virtual machine(VM)是有16个机器,每个机器上有4块V100的卡。对于UNITER ba来说,预训练4.5天即可,加上finetune基本上10天时间确定⼀个模型的performance⾜够,UNITER large需要4个VM,预训练需要10天时间。
barkhaun3.2 Optimization on Limited GPUscyclone
本⽂中⼀共⽤了三种计算优化⽅法,下⾯依次介绍⼀下。
3.2.1 Dynamic Batching
第⼀种就是动态batching,因为transformer的计算复杂度是和输⼊序列的长度的⼆次⽅呈线性相关,这⾥的长度在我们的新宝来广告歌曲
高考英语作文范文
vision+language⾥⾯是词的数量加上region的长度。⼀般的batching是像左边图这样,把输⼊padding⾄相同的长度,所以可以看见浪费很多的计算空间,⽽我们的做法是把输⼊按照长度进⾏排序,然后把长度相近的放在同⼀个batch⾥,这样我们就减少了padding从⽽节省了计算时间。

本文发布于:2023-07-28 04:59:03,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/190961.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:训练   模型   计算
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图