今天講講Google大一統(tǒng)模型—T5
作者:zizhan居士 來源:投稿
編輯:學姐
本文我們介紹Google的大一統(tǒng)模型——T5

T5論文:Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer
T5提出了一個統(tǒng)一的模型框架,將各種NLP任務都視為Text-to-Text任務,也就是輸入為Text,輸出也為Text的任務。由此可以方便地評估在閱讀理解、摘要生成、文本分類等一系列NLP任務上,不同的模型結(jié)構(gòu),預訓練目標函數(shù),無標簽數(shù)據(jù)集等的影響。

如圖所示,T5(Text-to-Text Transfer Transformer)模型將翻譯、分類、回歸、摘要生成等任務都統(tǒng)一轉(zhuǎn)成Text-to-Text任務,從而使得這些任務在訓練(pre-train和fine-tune)時能夠使用相同的目標函數(shù),在測試時也能使用相同的解碼過程。 注意這里回歸任務對應的浮點數(shù)會被轉(zhuǎn)成字符串看待,從而可以token by token的預測出來。雖然感覺奇怪,but anyway, it works。
T5模型結(jié)構(gòu)
T5模型采用Transformer的encoder-decoder結(jié)構(gòu),之前介紹過GPT采用的是Transformer的decoder結(jié)構(gòu)。

T5模型和原始的Transformer結(jié)構(gòu)基本一致,除了做了如下幾點改動:
remove the Layer Norm bias
place the Layer Normalization outside the residual path
use a different position embedding
數(shù)據(jù)集C4
作者對公開爬取的網(wǎng)頁數(shù)據(jù)集Common Crawl進行了過濾,去掉一些重復的、低質(zhì)量的,看著像代碼的文本等,并且最后只保留英文文本,得到數(shù)據(jù)集C4: the Colossal Clean Crawled Corpus。
輸入輸出格式
我們來看如何將各種下游NLP任務都統(tǒng)一轉(zhuǎn)化成Text-to-Text格式。
在下游任務上fine-tune模型時,為了告訴模型當前要做何種任務,我們會給每條輸入樣本加一個與具體任務相關(guān)的前綴。
翻譯前綴translate English to German:
分類前綴cola sentence:
摘要前綴summarize:
等等。注意這里每個任務前綴的選擇可以認為是一種超參,即人為設計前綴樣式。作者發(fā)現(xiàn)不同的前綴對模型的影響有限,因此沒有做大量實驗比較選擇不同前綴的結(jié)果。
實驗
作者首先設置了一個baseline模型,然后每次修改模型設置一個方面,采用控制變量法進行對比實驗。
Baseline
網(wǎng)絡結(jié)構(gòu)
不同于BERT或GPT僅使用Transformer結(jié)構(gòu)的一部分,T5的baseline模型直接采用標準的Transformer encoder-decoder結(jié)構(gòu),以便在生成任務和分類任務上都能取得不錯的效果。 具體來說,baseline模型結(jié)構(gòu)的encoder部分和BERT-base模型(12層)的大小一樣,而decoder部分和encoder大小相似,因此baseline模型的參數(shù)量基本是BERT-base模型的2倍。
預訓練目標
采用denoising objective,也就是類似BERT的masked language modeling目標函數(shù)。

如圖所示,在輸入樣本中,用一些唯一的特殊符號,來表示原始樣本中被隨機masked的span或token,而目標樣本則為被masked的span或token序列,用輸入樣本中對應位置的特殊符號,分隔,最后加上一個特殊符號表示序列結(jié)束。
在下游任務上fine-tune

在每個下游任務上單獨fine-tune后的評估結(jié)果如下:

可以發(fā)現(xiàn)pre-train的模型參數(shù)確實對下游任務的性能提升大有幫助。
接下來我們就要基于Baseline模型,對模型的某一部分進行修改,進行大量對比實驗了。
對比模型結(jié)構(gòu)

如圖所示為Transformer結(jié)構(gòu)的幾種變種,主要區(qū)別在于模型中self-attention機制的可見范圍。
fully-visible attention mask:輸出序列的每個元素可以看見輸入序列的每個元素。
causal attention mask:輸出序列的每個元素只能看對應位置及之前的輸入序列的元素,無法看見未來的元素。
causal with prefix attention mask:輸入序列的一部分前綴采用fully-visible attention mask,其余部分采用 causal attention mask。
在最左側(cè)的Encoder-Decoder結(jié)構(gòu)中,Encoder部分采用fully-visible attention mask,而Decoder部分采用causal attention mask。
中間的Language model結(jié)構(gòu)中,采用causal attention mask。
最右側(cè)的Prefix LM結(jié)構(gòu)中,采用causal with prefix attention mask。比如在翻譯任務中,給定訓練樣本translate English to German: That is good. target: Das ist gut.,我們對translate English to German: That is good. target:采用fully-visible attention mask,對Das ist gut.采用causal attention mask。

從表中可以發(fā)現(xiàn),(1) 采用encoder-decoder結(jié)構(gòu)且使用Denoising目標函數(shù)的效果最好; (2) encoder和decoder共享參數(shù)(Enc-dec, shared)的結(jié)構(gòu)表現(xiàn)也差不多好; (3) 相同參數(shù)量的encoder-decoder結(jié)構(gòu)(Enc-dec, shared)要比Prefix LM結(jié)構(gòu)的效果好,說明添加顯式的encoder和decoder之間的attention是有用的; (4) 采用Denoising目標函數(shù)的效果要好于采用一般的語言模型目標函數(shù)。
對比預訓練目標

如圖所示,給定句子“Thank you for inviting me to your party last week .”,圖中展示了針對不同的預訓練目標,模型的Input和Target樣本的形式。

實驗表明BERT-style預訓練目標的效果最好,因此作者又進一步分析了該目標的幾種變種形式,如下圖:

其中Replace corrupted spans就是上上圖中的noise replace spans目標,Drop corrupted tokens就是上上圖中的noise, drop tokens目標。結(jié)果表明,這幾種BERT-style預訓練目標的變種效果差不多,但是后兩種方法不需要預測整個輸入序列,而僅需要預測被污染的部分,因此預測的序列長度更短,訓練速度也更快。
對比預訓練數(shù)據(jù)集
對比數(shù)據(jù)集種類

C4,unfiltered是沒有經(jīng)過過濾(比如去重、去除代碼等)的數(shù)據(jù)集
RealNews-like是從C4中篩選的僅新聞領(lǐng)域的數(shù)據(jù)
WebText-like是從Common Crawl中過濾篩選的Reddit用戶評分至少為3的數(shù)據(jù),數(shù)據(jù)質(zhì)量高
Wikipedia是英文百科全書的數(shù)據(jù)
TBC全稱是Toronto Books Corpus,數(shù)據(jù)主要來自于電子書,和百科全書是不同的領(lǐng)域(different domains)。

從實驗結(jié)構(gòu)可以看出,
(1) C4比unfiltered C4效果好,說明數(shù)據(jù)清洗的重要性;
(2) Wikipedia+TBC在SGLUE上的效果比C4好,主要是因為在SGLUE中的MultiRC任務得分很高,MultiRC是一個閱讀理解數(shù)據(jù)集,其中的數(shù)據(jù)主要是小說書籍,和TBC屬于同一領(lǐng)域數(shù)據(jù)。由此說明預訓練的數(shù)據(jù)集中包含一定的領(lǐng)域數(shù)據(jù)對下游該領(lǐng)域任務的性能提升有效;
2.對比數(shù)據(jù)集大小


從表中可以看出,隨著數(shù)據(jù)集不斷縮小,模型的性能逐漸下降,說明大的模型很可能在小的數(shù)據(jù)集上發(fā)生了過擬合,因此建議預訓練模型還是盡可能使用大數(shù)據(jù)集。
對比遷移方法

從實驗結(jié)果可以看出,(1) Multi-task pre-training + fine-tuning的效果可以和baseline Unsupervised pre-training + fine-tuning差不多;(2) 去掉無監(jiān)督任務的Supervised multi-task pre-training的效果很差,說明無監(jiān)督預訓練確實很有用,此外,可以發(fā)現(xiàn)在翻譯任務EnDe、EnFr、EnRo上的效果沒有下降很多,可能是因為只預訓練英文語料對翻譯任務影響不大。
對比模型規(guī)模
假如給了你4倍的算力,你應該把它用在哪?是擴大模型規(guī)模還是增長訓練時間?

從表中可以看出,(1) 擴大模型規(guī)模和增長訓練時間都能提高模型性能;(2) 將模型擴大到2倍規(guī)模,同時訓練時間也擴大2倍的效果和將模型擴大到4倍規(guī)模的效果差不多,說明增加訓練時間和擴大模型規(guī)模很可能是兩種互補的可以提高模型性能的方法;(3) emsemble對提高模型性能確實有效。
大一統(tǒng)
通過對各種對比實驗的結(jié)果進行分析,作者最終確定了訓練T5模型的較優(yōu)方案,其中以下幾點值得注意:
無監(jiān)督訓練目標:采用span-corruption目標,類似SpanBERT的做法。
預訓練策略:采用multi-task預訓練方式(即無監(jiān)督任務和有監(jiān)督任務一起預訓練),在對比遷移方法一小節(jié)中我們發(fā)現(xiàn)Multi-task pretraining + fine-tuning的效果和Unsupervised pre-training + fine-tuning的效果差不多,但是前者在預訓練過程還能夠監(jiān)控下游任務的性能,因此作者最后采用Multi-task pre-training。
總結(jié)
最后先來回顧下T5的特點: T5 is an encoder-decoder model pre-trained on a multi-task mixture of unsupervised and supervised tasks and for which each task is converted into a text-to-text format. T5 works well on a variety of tasks out-of-the-box by prepending a different prefix to the input corresponding to each task, e.g., for a translation task: translate English to German: xxx...
個人感覺T5論文算是對當前NLP領(lǐng)域pre-train fine-tune主流模式下的各種訓練技巧的一個總結(jié)和公平對比,分析各種訓練技巧對模型性能提升的實際影響,從而采用合適的技巧預訓練出一個好的模型。作者也說了,本文的目的不是提出一個新的方法,而是對NLP領(lǐng)域的一些技術(shù)支撐點提供一個較為全面的分析視角。
Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer Standford CS224N
NLP相關(guān)論文關(guān)注【學姐帶你玩AI】公眾號
回復“ACL”獲取,含多模態(tài)等20個細分方向