[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i9ZZwvDF-1668665609465)(C:\Users\86188\AppData\Roaming\Typora\typora-user-images\1665817262311.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0lV2UFjn-1668665468481)(C:\Users\86188\AppData\Roaming\Typora\typora-user-images\1665817332402.png)]
Transformer模型讲解
1)不同于以往主流机器翻译使用基于RNN的seq2seq模型框架,该论文用attention机制代替了RNN搭建了整个模型框架。
2)提出了多头注意力(Multi-headed attention)机制方法,在编码器和解码器中大量的使用了多头自注意力机制(Multi-headed self-attention)。
3)在WMT2014语料中的英德和英法任务上取得了先进结果,并且训练速度比主流模型更快。
《Attention Is All You Need》是一篇Google提出的将Attention思想发挥到极致的论文。这篇论文中提出一个全新的模型,叫 Transformer,抛弃了以往深度学习任务里面使用到的 CNN 和 RNN ,Bert就是基于Transformer构建的,这个模型广泛应用于NLP领域,例如机器翻译,问答系统,文本摘要和语音识别等等方向。关于Transrofmer模型的理解特别推荐一位国外博主文章《The Illustrated Transformer》。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XmnoPKE7-1668665468482)(C:\Users\86188\AppData\Roaming\Typora\typora-user-images\1665817178415.png)]
BERT的预训练过程
接下来我们看看BERT的预训练过程,BERT的预训练阶段包括两个任务,一个是Masked Language Model,还有一个是Next Sentence Prediction。
Masked Language Model
MLM可以理解为完形填空,作者会随机mask每一个句子中15%的词,用其上下文来做预测,例如:my dog is hairy → my dog is [MASK]
此处将hairy进行了mask处理,然后采用非监督学习的方法预测mask位置的词是什么,但是该方法有一个问题,因为是mask15%的词,其数量已经很高了,这样就会导致某些词在fine-tuning阶段从未见过,为了解决这个问题,作者做了如下的处理:
80%的时间是采用[mask],my dog is hairy → my dog is [MASK]
10%的时间是随机取一个词来代替mask的词,my dog is hairy -> my dog is apple
10%的时间保持不变,my dog is hairy -> my dog is hairy
那么为啥要以一定的概率使用随机词呢?这是因为transformer要保持对每个输入token分布式的表征,否则Transformer很可能会记住这个[MASK]就是"hairy"。至于使用随机词带来的负面影响,文章中解释说,所有其他的token(即非"hairy"的token)共享15%*10% = 1.5%的概率,其影响是可以忽略不计的。Transformer全局的可视,又增加了信息的获取,但是不让模型获取全量信息。
注意:
有参数dupe_factor决定数据duplicate的次数。
其中,create_instance_from_document函数,是构造了一个sentence-pair的样本。对每一句,先生成[CLS]+A+[SEP]+B+[SEP],有长(0.9)有短(0.1),再加上mask,然后做成样本类object。
create_masked_lm_predictions函数返回的tokens是已经被遮挡词替换之后的tokens
masked_lm_labels则是遮挡词对应位置真实的label。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0i6hKBpQ-1668665468483)(C:\Users\86188\AppData\Roaming\Typora\typora-user-images\1665647715524.png)]
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,让模型去预测输入时正还是负。
此类的作用是将训练语料中的text信息转化成embedding向量,embedding向量的构成分为三个部分words_embeddings(词嵌入向量)、position_embeddings(位置嵌入向量)、token_type_embeddings(是否为前后语句对嵌入向量)。
Uniter模型中Image转化为embedding向量是关键,img_feat和img_pos_feat是如何生成的可以去前面2.1小节看一下,简单来说就是使用Faster-RCNN检测出多个region,region feature特征经过reshape或者dnn等方式转为img_feat,region的location转为img_pos_feat。然后分别经过fc层至相同维度,相加再经过LN层就生成了既含有图片特征又含有位置信息的embedding。
Uniter模型中的Encoder部分使用的就是原始Bert中的encoder层,具体的可以去看pytorch版bert源码。
提出的模态级掩蔽机制来学习三种模态之间的对齐,即文本、视觉和音频。模态级屏蔽与令牌级屏蔽机制并行。它从输入中屏蔽出一个或两个模式。
具体地,每个模态以0.3的概率被独立地屏蔽,并且跳过所有模态被屏蔽的情况。这带来了巨大的好处- 允许OPT使用单通道、双通道或三通道输入处理不同的下游任务。
我们在交叉模式编码器顶部附加了一个基于transformer的解码器[41],以学习重建输入文本。损失函数为,
使用了一个视觉解码器DVAE来赋予OPT模型图像生成能力。解码器经过训练,学会重建输入图像。如图2所示,视觉解码器由Transformer解码器和dVAE解码器组成。transformer解码器生成sequence of image codes(一系列图像代码)。我们强制执行自回归语言建模损失,如公式9所示,以学习好的图像代码。
第一阶段的预训练的dVAE解码器,在我们的OPT训练期间被冻结。损失函数如下:
启动两阶段训练,在第一阶段训练VQVAE,采用训练好的VQVAE提取图像token;在第二阶段训练Transformer解码器,建模文本token和图像token的跨模态关联关系:
src/scripts/test_txt2img.py
src/scripts/pretrain_three_ms.py
src/model_mindspore/pretrain_ms.py
设计了一个三模态预训练的样本级建模任务。具体来说,给定每个样本(即文本、图像、音频三元组),我们将一个或两个输入随机替换为其他样本的输入。该模型需要预测哪些输入是匹配的。因此,我们有五种情况:(1)所有三个输入都匹配;
(2) 只有图像和音频匹配;
(3) 只有文本和图像匹配;
(4) 只有文本和音频匹配;
我们提取[CLS]标记的输出表示作为文本图像音频三元组的联合表示,然后将其输入FC层和sigmoid函数以预测分数。我们将输出分数表示为sθ(T,I,A)∈ R5.损失函数是二进制交叉熵(BCE)损失:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cx1z6nOg-1668665468492)(C:\Users\86188\AppData\Roaming\Typora\typora-user-images\1665803279344.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hhJbvWVU-1668665468494)(C:\Users\86188\AppData\Roaming\Typora\typora-user-images\1665803337727.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fvkTHckV-1668665468494)(C:\Users\86188\AppData\Roaming\Typora\typora-user-images\1665803361882.png)]
VQVAE
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0UxZPFXZ-1668665468495)(C:\Users\86188\AppData\Roaming\Typora\typora-user-images\1665803381382.png)]
OPT
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YLJP9deV-1668665468495)(C:\Users\86188\AppData\Roaming\Typora\typora-user-images\1665803420760.png)]
VQVAE
[外链图片转存中…(img-0UxZPFXZ-1668665468495)]
OPT
[外链图片转存中…(img-YLJP9deV-1668665468495)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qVRcIce2-1668665468495)(C:\Users\86188\AppData\Roaming\Typora\typora-user-images\1665803440336.png)]