T5和mT5

T5:https://arxiv.org/pdf/1910.10683.pdf
T5 blog: https://ai.googleblog.com/2020/02/exploring-transfer-learning-with-t5.html
mT5: https://arxiv.org/pdf/2010.11934.pdf
mT5 code: https://github.com/google-research/multilingual-t5

背景

Bert和GPT2之后,各种预训练模型层出不穷。单语种模型训练完了,又开始了多语种预训练模型。因工作需要,首先关注到mT5模型,粗略的读后,就直接上手了。一段时候后,发现只记得个大概,还是应该好好梳理下思路。
先上整理的思路,再谈细节。

T5做了什么?

  1. 不同模型结构比较,LM,BERT-style,Deshuffling,BERT-style的encoder-decoder模型一般比decoder-only(LM)好;
  2. 不同目标函数比较,BERT-style denoising objective最好;
  3. 不同corruption rate(MLM)比较,10%,15%,25%,50%,15%最好;
  4. 不同corrupted span length比较,2,3,5,10,长度为3最好;
  5. 训练集数据重复比较;
  6. 训练策略比较:先pretrain再fine-tune的multitask learning非常有竞争力,但是需要谨慎选择不同任务训练频次;
  7. 模型规模比较:比较了不同size的模型(base,small,large,3B和11B),训练时间,以及融合模型,来决定如何充分利用计算性能。

1. T5/mT5区别

T5 mT5
训练数据 C4 mC4: cld3区分101种语言
模型参数 60million 11billion,1trillion tokens
模型框架 transformer encoder-decoder T5.1.1
分词 SentencePiece,32,000 wordpieces,
fine-tune做了机器翻译,因此词表包含non-English
同XLM-R,250,000 wordpieces

补充:

  1. T5使用了standard encoder-decoder Transformer,和原始transformer在layer norm上有个区别,T5是Pre-Norm,即在sub-block前使用Layer Normalization,sub-block输出时,加入初始输入;
  2. 模型框架:T5.1.1和T5的区别

详情:https://github.com/huggingface/transformers/issues/6285
a. 激活函数变更:Gated-GELU activation替代ReLU;
b. 无标签数据不做dropout;
c. embedding和分类层不做参数共享;
d. 更大的d_model,更小的num_heads和d_ff;
e. Pre-trained on C4 only without mixing in the downstream tasks.(不是很清楚,待梳理)

  1. 词表:mT5中,不同语种词表有差异,比如词组规模很大的中文,use a character coverage of 0.99999 and enable SentencePiece’s “byte-fallback” feature to ensure that any string can be uniquely encoded;
  2. 学习率:mT5和T5一样,square_root learning rate:
    1/\sqrt{max(n,k)},k=10^4,n为当前的iteration;
  3. Self-supervised objective:mT5和T5一样,mask 15% tokens,平均noise span length为3。

2. 和其他模型比较

model 基础框架 训练集 补充
mBERT BERT Wikipedia的104个语种 和BERT主要区别就是训练语料
XLM BERT Wikipedia的100个语种 通过cross-lingual pre-training objectives提升模型效果
XLM-R RoBERTa,改进XLM Common Crawl的100个语种 基于Wikipedia的n-gram语言模型对训练语料做清洗
mBART BART XLM-R的子集,只使用了其中25个语种 预训练时做了span masking和sentence shuffling
MARGE encoder-decoder Wikipedia和CC-News,共26个语种 对其中一种语言的文档进行重建时,检索对应文档的其他语种

补充:

  1. mT5和XLM-R比较:XLM-R是encoder-only模型,mT5是encoder-decoder,后者参数量差不多是前者2倍。但在进行分类任务时,参数量接近。
    XLM-R只需要处理CLS token,mT5的decoder部分会生成2个token,class label和EOS token。因此,XLM-R处理T+1个token,而mT5处理T+2个token。
预训练模型数据和结构比较

T5

1. 训练数据的清洗

  1. 仅保留句末为句号、感叹号、问号或结尾引号这些有效符号的句子;
  2. 去掉包含冒犯性词汇的页面,比如List of Dirty, Naughty, Obscene or Otherwise Bad Words
  3. 过滤包含JavaScript脚本的文本行;
  4. 去掉包含类似'lorem ipsum'占位符的页面;
  5. 去掉包含'{'的页面;
  6. 句子去重,连续3个句子重复出现,则去重;
  7. 因为下游任务主要是英文,使用langdetect 以至少 0.99 的概率过滤掉任何未被归类为英语的页面。

C4: Colossal Clean Crawled Corpus, unlabeled public Common Crawl web from April 2019,通过以上方式,得到750GB English-language text。

2. 输入输出:Text-to-Text

T5 model

输入输出都是文本,文本前缀(text prefix)也是超参数,表示任务类型。
如上图,

  1. 对翻译任务:
    输入:‘translate English to German: That is good'
    输出:'Das ist gut'
  2. 对回归任务:
    输入:'stsb sentence1: The rhino grazed on the grass. sentence2: A rhino is grazing in a field.'
    输出:'3.8',输出类型为string,而不是number

为什么采用这种形式?
这种形式,天然的对翻译,摘要等文本生成任务有效;
BERT-stype模型只输出class label或者a span of input,T5可以使用同一个模型,同一损失函数(teacher-forced maximum-likelihood),同一超参数,实现任一NLP任务,这些任务包含机器翻译,文本摘要,QA,分类等。

3. 模型结构

优化器:AdaFactor;
测试:greedy decoding;
Unsupervised objective:denoising objective (masked language modeling)

  1. 受BERT MLM启发,denoising objective模型效果最好(见下面不同目标函数实验结果);
  2. 输入序列随机drop掉15%的token:
    做了10%,15%,25%,50%对比实验,corruption rates为15%时效果最好;
  3. 连续的token用一个‘sentinel’ token表示,输出为被drop掉的token:
    假如输入序列长度为500共25个span,则有500*15%=75个被打断的tokens,平均span长度为75/25=3,论文还对span length做了实验,最终发现长度为3时,模型效果最好。
预训练时做的各种实验

3种模型结构

3种模型结构

输入序列:x,输出序列:y,其中:y_i = \sum_j w_{i,j}x_j

  1. 左,Baseline model:standard encoder-decoder Transformer
    Encoder,Decoder的size和configuration和BERT-base相似,共220m个参数,差不多是Bert-base参数的2倍;
    encoder是fully-visible,做self-attention;
    decoder是auto-regressive,每个output timestep,根据predicted distribution选择输出token,作为下一个输入,输出下一个predicted token;
  2. 中,language model:transformer decoder;
  3. 右,prefix LM:将输入x和输出y拼接,x是fully-visible,y是autoregressive。
    和1的主要区别是模型的输出,更适用于text-to-text类型的任务。
    训练时,prefix的部分是随机选择的。

不同模型结构参数配置

type encoder layers decoder layers shared params. # of params. computation cost
1 L L False 2P M-FLOP
2 L L True P M-FLOP
3 L/2 L/2 False P M/2-FLOP
4 0 L - P M-FLOP
5 0 L decoder-only prefix LM, with fully-visible self-attention over input P M-FLOP

4. 实验结果

下游任务

  1. Machine translation:WMT English to German, French, and Romanian translation;
  2. QA:SQuAD;
  3. Abstractive summarization:CNN/Daily Mail;
  4. Text classification:GLUE, SuperGLUE。

1. 不同模型结构结果比较

不同模型结构结果比较

2. 不同目标函数结果比较

不同目标函数及结果比较

3. 不同预训练数据集结果比较

数据集 说明
C4 -
Unfiltered C4 没有经过deduplication, removing bad words, only retaining sentences的数据
RealNews-like C4中的RealNews数据集
WebText-like 使用C4中的URL数据,只有2GB,太少了,因此下载了2018.8~2019.08一年经过Reddit 得分大于3的数据,共17GB
Wikipedia 高质量的English Wikipedia text data from TensorFlow Datasets
Wikipedia + Toronto Books Corpus 和BERT一样
不同的预训练数据集结果比较

4. 重复数据对模型效果的影响分析

Pretrained data size对模型结果影响

5. 训练策略对模型影响

常规的训练模式:unlabeled data的预训练 + supervised task 的fine-tuning
问题:因为low-resource tasks,fine-tuning可能会带来suboptimal。
a. 对T5的encoder-decoder模型结构,进行fine-tuning,有2种方式;
b. 除了fine-tuning,还可以进行多任务训练,混合不同任务数据集一起训练,进行各项任务判断时,选择对应的ckpt。这里有个问题,就是 how much data from each task the model should be trained on,基于这个疑问,做了3个策略比较;
c. 除了以上2大类训练模式,还进行multi-task with fine-tuning训练模型,训练模型类似MT-DNN,在所有任务上进行预训练,单一监督式任务上进行fine-tuning。

Fine-tuning

  1. Adapter layers
    fix大部分的模型参数,仅adapter layer和normalization layer参数会被更新。Adapter layers are additional dense-ReLU-dense blocks that are added after each of the preexisting feed-forward networks in each block of the Transformer。
  2. Gradual unfreezing
    常见于语言模型,一开始,仅更新final layer,然后更新2~最后一层的参数,接着是整个模型参数更新。在T5中,并行更新encoder和decoder的模型,也就是说decoder的top层参数更新时,encoder的top层也会被更新。

Multitask learning

  1. Examples-proportional mixing
    N个任务,每个任务对应数据集为e_n,K人工设置的dataset size limit,采样概率为r_m = min(e_m,K)/ (\sum min(e_n,K)
  2. Temperature-scaled mixing
    参考了multilingual BERT,保证模型充分训练了low-resource的数据,引入temperature T,采样概率r_m^{1/T}
  3. Equal mixing
    每个任务均等采样,在每个batch,每个样本是均匀采样,是suboptimal,对high-resource任务是underfit,low-resource任务时overfit

Multi-task + Fine-tuning

  1. Base
    pre-train on Examples-proportional mixing + fine-tuning 每个下游任务
  2. Leave-one-out
    pre-train on Examples-proportional mixing + fine-tuning pre-train没有做的下游任务,pre-train时过滤下游任务类型
  3. Supervised multi-task pre-training
    pre-train on Examples-proportional mixing of all of the supervised tasks

mT5

1. 训练数据的清洗

  1. 文档去重,去除包含bad words的页面;
  2. 不同语种的标点符号不同,通过line length filter进行筛选,要求页面至少有3行文本包含200以上个characters;
  3. 通过cld3检测每一页的主要语种是哪一个,保留置信度高于70%的页面。

不同语种数据的采样

训练数据语种分布

不同语种数据占比不同,有的语言样本少,比较简单常见,模型就会过拟合;如果样本量太大,内容丰富,模型又可能欠拟合。
mT5对low-resource的语种进行p(L)∝ |L|^{\alpha} 的采样方式:

p(L):预训练中,给定语种的样本,采样概率;
|L|:给定语种的样本数量;
\alpha<1:超参数,control how much to “boost” the probability of training on low-resource languages,模型测试了0.2(MMNMT),0.3(XLM-R),0.7(mBERT),经过消融测试,最终发现0.3效果最好。

2. 实验

XTREME(Cross-lingual TRansfer Evaluation of Multilingual Encoders) benchmark:

  1. XNLI:包含了14种语言,模型输出label text;
  2. XQuAD:阅读理解任务,包含了10种语言,模型输出答案;
  3. MLQA:阅读理解任务,包含了7种语言,模型输出答案;
  4. TyDi QA:阅读理解任务,包含了11种语言,模型输出答案;
  5. NER of WikiAnn:包含了40种语言,模型输出entity tags和labels:
    如果存在多个实体,则按顺序进行concat,如果没有实体,则输出None;
  6. PAWS-X:包含了7种语言,模型输出label text。

2.1 3种训练方式

  1. zero-shot:只用English-data进行fine-tuned,在non-English上做测试;
  2. translate-train:机器翻译,英文翻译到目标语种,做数据增强;
  3. in-language multitask:在所有目标语言的gold data上进行训练。
实验结果
  1. mT5-XXL模型在所有分类和QA任务上都超过SOTA,在NER任务上也接近SOTA (69.2 vs. 70.1);
  2. 在translate_train任务类型上,模型同样在XTREME的分类和QA任务上超过SOTA,fine_tune阶段,数据集使用了带标签的英文数据和机器翻译数据;
  3. 3种训练方式比较,使用gold data训练(in-language multitask),模型效果比zero-shot和translate-train好,且模型规模越大,模型效果的差距最小。
    以mT5-XXL为例子,zero-shot,translate-train,in-language multitask在TyDi QA的数据集的f1分别为80.8, 82.8,88.5,比mT5-Small的35.2, 48.2,73.0差距小的多。
    这意味着,machine translations of the monolingual dataset bring diminishing returns as model capacity increases。These trends point to the possibility of avoiding the costly step of annotating data in more than one language when using large models(做多语种的大模型时,可以避免数据标注)。
T5 vs. mT5

随着模型规模扩大,mT5和T5模型在SQuAD任务上的结果越来越接近, 这也意味着模型有足够的能力学习到101个语言,且不受不同语种的干扰。

2.2 消融实验

在mT5-Large上做了消融实验:

  1. dropout提高到0.1, 希望缓解在low-resource languages上的过拟合问题;
  2. 序列长度从1024降低到512;
  3. 提高平均noise span length,从3提高到10,因为作者发现和T5相比,每个token有更少的characters;
  4. 数据采样,\alpha取值范围(0.2, 0.7);
  5. 关闭line length filter数据筛选策略;
  6. 补充预训练数据到103种语种。

实验结果如下:


消融实验

2.3 Zero-shot generation

虽然,前面实验表格显示,模型在各种QA任务上都超过了SOTA。
但是,实验发现,进行XQuAQ zero-shot时,fine-tuning英文数据,因为accidental translation,导致模型生成freestyle。
解决方式:在fine-tuning阶段,混合少量多语种预训练任务,就可以抵消这个问题。

问题:Illegal prediction
任务:zero-shot cross-lingual span selection,跨语言短语选择
模型:多语言模型预训练,在英文数据集上做fine-tuning,然后在其他语言数据集上做测试
模型输出:legal non-English prediction
实际输出:illegal prediction,如下表:

Illegal predictions

这种不合法输出可以归为以下3个类别:

  1. Normalization:prediction是合法的,但是unicode characters被替代了,可以通过Unicode NFKC normalization来恢复;
  2. Grammatical adjustment:answer本身就存在语法问题;
  3. Accidental translation:模型直接做了翻译,将目标语言翻译成英文了,以至于生成部分或者完整英文。

怎么避免Accidental translation?
在做span selection时,怎么避免被翻译到英文?
作者觉得,输入为non-English,输出English的原因是因为模型没有在fine-tuning阶段看到non-English。没看到non-English的原因是,仅在English数据集上做fine-tuning的模型,在non-English上做推理时,non-English的likelihood会降低,以至于English变成最可能的输出。

为了防止模型忘记生成non-English,在fine-tuning阶段,混合无监督的多语言预训练任务。怎么理解?

  1. 删除目标序列的‘sentinel’ token(对应没有被mask的输入序列),否则在下游任务时就有可能观察到;
  2. 样本采样参数更新,\alpha从0.3降低到0.1,差不多是均匀采样。

在进行XQuAQ 的fine-tuning时,以1比100的比例,混合少量的无监督任务(包含101种语言)。加入这批多语种语料后,模型效果显著提升,illegal问题也降低了70%。


模型效果变化
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容