Google T5速讀

ALBERT凳子還沒坐熱,GLUE就又換了老大,Google T5 (Text-to-Text Transfer Transformer)大力出奇蹟,威震天在角落默不作聲。

簡介

這次的T5模型雖然名字和BERT+系列不一樣,但底子里還是差不多的。給我的感覺就是大型Seq2Seq的BERT+乾淨的數據+多任務+一些改動。論文的作者深入對比了不同的預訓練目標、模型結構、無監督數據集、遷移方法、NLU任務,最終拼成了T5。文章除去reference一共34頁,可以說很良心地剖析了transformer的效果,建議同學們根據自己的任務和時間慢慢讀。

來感受一下T5 11B的size:

貼一下在GLUE和SUPERGLUE的登頂照:

1. 模型

輸入和輸出

和GPT2一樣,T5把所有的NLP問題歸結為了「text-to-text」的任務,下圖展示了T5在翻譯、分類、相似度、摘要任務上的輸入輸出樣例:

Relative position embeddings (PE)

T5使用了簡化的相對位置embeding,即每個位置對應一個數值而不是向量,將(key和query)相對位置的數值加在attention softmax之前的logits上,每個head的有自己的PE,所有的層共享一套PE。個人認為這種方式更好一點,直接在計算attention weight的時候加入位置信息,而且每一層都加一次,讓模型對位置更加敏感。

2. 數據

Colossal Clean Crawled Corpus (C4)

作者選取了Common Crawl數據集,這個數據集每周大約爬取20TB的WEB數據。雖然數據集已經抽取了文本,但實際上並不幹凈,裡面還包含了很多非自然語言的東西,比如錯誤消息、菜單、重複文本,用過臟數據的同學一定深有體會。於是本文對數據進行了比較細緻的處理:

  • 只取結尾有標點的句子
  • 去掉包含髒話的網頁
  • 有很多頁面包含"enable Javascript"的提示,去掉包含Javascript的句子
  • "lorem ipsum"是一個測試網頁排版的拉丁文,去掉包含這個佔位符的網頁
  • 去掉包含代碼片段的網頁
  • 以三句為一個片段進行去重
  • 去掉非英文的網頁

經過上述處理後最終生成了750GB的數據集C4,並且在TensorFlow Datasets開源了。

3. 任務及數據格式

任務

機器翻譯、問答、生成式摘要、文本分類(單句&雙句)

數據格式

  • 輸入:參考GPT2,直接把任務名稱當作prefix和輸入拼在一起
  • 輸出:分類任務(如推斷),需要輸出"entailment", "neutral", "contradiction"這三種文本,否則都算錯;回歸任務輸出str類型的浮點數。還有其他任務,請需要的同學前往附錄D參考~

4. 訓練

預訓練

  • 參考SpanBERT,mask掉15%,平均長度為3的span
  • 訓練更長步數,1百萬步*1024個樣本
  • 使用Multi-task預訓練,即混入在無監督數據中混入一定比例的任務數據

精調

  • 也是Multi-task,將所有GLUE/SuperGLUE的數據拼在一起變成精調一個task,減少過擬合,但同時也會犧牲一些精度
  • batch size減小到8
  • 其實最後同時進行了多任務精調和單獨精調,根據dev集選擇最好的結果

解碼

大部分使用Greedy decoding,對於輸出句子較長的任務使用beam search

5. 結論

Architectures

  1. 原始的Transformer結構表現最好
  2. encoder-decoder結構和BERT、GPT的計算量差不多
  3. 共享encoder和decoder的參數沒有使效果差太多

Unsupervised objectives

  1. 自編碼和自回歸的效果差不多
  2. 作者推薦選擇更短目標序列的目標函數,提高計算效率

Datasets

  1. 在領域內進行無監督訓練可以提升一些任務的效果,但在一個小領域數據上重複訓練會降低效果
  2. Large、diverse的數據集最香了

Training strategies

  1. 精調時更新所有參數 > 更新部分參數
  2. 在多個任務上預訓練之後精調 = 無監督預訓練

Scaling

  1. 在小模型上訓練更多數據 < 用少量步數訓練更大的模型
  2. 從一個預訓練模型上精調多個模型後集成 < 分開預訓練+精調後集成

總體感覺T5除了position embedding之外沒什麼新的東西,在GLUE以及機器翻譯上的提升都很有限,但作者本來的意圖也是做一個全面的分析,砸百萬美元替大家排憂解難,此處應有掌聲。

從最近的研究來看,目前模型複雜度和性能真的是很難平衡,但今天也聽到了量子計算的福音,科技永遠向前,希望NLP越來越好。


本文轉載自公眾號: NLPCAB,作者:李如