谷歌T5預訓練模型重新整理GLUE榜單,110億引數量,17項NLP任務新SOTA

AIBigbull2050發表於2019-10-26
2019-10-25 16:40:28

2018 年,谷歌釋出基於雙向 Transformer 的大規模預訓練語言模型 BERT,為 NLP 領域帶來了極大的驚喜。而後一系列基於 BERT 的研究工作如春筍般湧現,用於解決多類 NLP 任務。預訓練模型也成為了業內解決 NLP 問題的標配。今日,谷歌又為大家帶來了新的驚喜,新模型在 17 個 NLP 任務中都達到了 SOTA 效能。

在最新發布的論文《Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer》中,谷歌提出預訓練模型 T5,引數量達到了 110 億,再次重新整理 Glue 榜單,成為全新的 NLP SOTA 預訓練模型。

谷歌T5預訓練模型重新整理GLUE榜單,110億引數量,17項NLP任務新SOTA

在 GLUE 基準排行榜上,T5 超越 ALBERT,位列榜首。

榜單地址:https://gluebenchmark.com/leaderboard

此外,在難度更大的 Glue 升級版基準 SuperGlue 上,T5 也超越了 Facebook 的 RoBERTa,成為僅次於人類基準的 SOTA 模型。

谷歌T5預訓練模型重新整理GLUE榜單,110億引數量,17項NLP任務新SOTA

在 SuperGLUE 基準排行榜上,T5 得分 88.9,超越 Facebook 的 RoBERTa,成為新的 SOTA 模型。

榜單地址:https://super.gluebenchmark.com/leaderboard

這篇 53 頁的 T5 論文釋出之後,引起了 NLP 社群極大的關注與討論。論文從實際驗證出發,包含了大量的實驗報告。而除了提出的 T5 模型之外,作者還開源了 750GB 的資料集 C4,內含從網上爬取的數百個千兆位元組乾淨英文文字。

相關模型程式碼,作者也已開放到在 Github 上了。

  • 論文連結:https://arxiv.org/abs/1910.10683
  • Github 連結:https://github.com/google-research/text-to-text-transfer-transformer

核心亮點

谷歌的這項研究在摘要生成、問答、文字分類等諸多基準測試中都取得了 SOTA 效能。他們的基本思想是將每個 NLP 問題視為文字到文字問題,即以文字作為輸入併產生新的文字作為輸出。至關重要的是,谷歌提出的文字到文字框架可以將同一模型、目標、訓練流程和解碼過程直接應用於他們實驗中的每一項任務。基於這個統一框架,研究者既可以比較不同遷移學習目標、未標註資料集和其他因素的有效性,也可以通過擴充套件模型和資料集來發現 NLP 領域遷移學習的侷限。

另外,谷歌強調這項研究的主要目的不是提出一種新的方法,而是從全面的視角來概述當前 NLP 領域遷移學習的發展現狀。所以研究的大部分內容是對現有技術的調查研究和實證比較。本研究的另外一項重要貢獻是,研究者將每個語言問題都作為文字到文字任務來解決。這個統一的框架與當前的方法不同,在簡單的同時還擁有強大的效能。

最後,研究者還通過訓練比以前更大的模型(最多 110 億個引數)來推動該領域的發展。為了進行如此大規模的實驗,他們引入了「Colossal Clean Crawled Corpus」(即 C4 語料庫),該資料集從 Common Crawl 網站上抓取數百個千兆位元組乾淨的英文文字。最後,他們意識到遷移學習的最要作用是在資料缺乏的環境中可以利用預訓練模型,因而開源了相關程式碼、資料集和預訓練模型。

T5 模型

谷歌提出的 T5 模型具體是何構造呢?

他們的編碼器-解碼器 Transformer 實現大致遵循 Vaswani 等人提出的原版 Transformer 架構。首先,token 的一個輸入序列被對映到嵌入序列,然後又傳遞至解碼器。解碼器包含一堆「塊」,每個「塊」又包含兩個子部件:自注意力層和小的前饋網路。

層正則化(layer normalization)用於每個子部件的輸入,並且一個殘差跳躍連線(residual skip connection)將每個子部件的輸入新增至它的輸出中。此外,前饋網路中、跳躍連線和注意力權重上以及整個堆疊的輸入和輸出中都應用到了 dropout。解碼器在結構上與編碼器類似,但解碼器在每個自注意力層(注意的是編碼器的輸出)之後包含一個標準的注意力機制。解碼器中的自注意力機制也利用了一種自迴歸或因果自注意力,這導致該模型只注意過去的輸出。最終解碼器塊的輸出被饋入一個具有 softmax 輸出的密集層,該密集層的權重與輸入嵌入矩陣共享。Transformer 中所有的注意力機制被分解為獨立的「頭」(head),這些頭的輸出在得到進一步處理之前被連線了起來。

由於自注意力不受順序的影響,所以通常的做法是將明確的位置訊號提供給 Transformer。儘管最初的 Transformer 利用正弦位置訊號或學習到的位置嵌入,但近來更普遍的做法是使用相對位置嵌入。相對位置嵌入並沒有使用各個位置的固定嵌入,而是根據自注意力機制中進行比較的「key」和「query」之間的偏置生成一個不同的學習到的嵌入。

研究者還使用了一種簡化的位置嵌入,其中每個「嵌入」僅是新增到用於計算注意力權重的相應 logit 的一個標量。為了提升效率,他們在 T5 模型的所有層上都分享了位置嵌入引數,儘管在給定的層中,每個注意力頭使用了一個不同的學習到的位置嵌入。通常來說,模型學習到了固定數量的嵌入,並且每個嵌入對應一系列可能的 key-query 偏置。

在本文中,所有的模型都使用了 32 個嵌入,其中範圍的大小可以對數方式最高增加到 128 偏置,如果超出,則將所有的相對位置指定給同一嵌入。值得注意的是,如果超出 128 token,給定的層對相對位置不敏感,但後續層可以通過結合之前層的本地資訊來建立對更大偏置的敏感性。

C4 語料庫

以前 NLP 領域的許多遷移學習研究工作利用大量的未標註資料集來進行無監督學習。在本文中,研究者對測量這種未標註資料的質量效應、特性和大小更感興趣。為了使得生成的資料集滿足研究需求,他們在 Common Crawl 網站上爬取源文字。

作為公開可用的網路歸檔庫,Common Crawl 網站可以去除所爬取 HTML 文件的標籤和其他非文字內容,每個月可以爬取 20TB 大小的文字資料。但是,爬取到的大部分文字不是自然語言,而是包含大量選單欄、錯誤資訊或複製文字等無用資料或格式化文字。此外,爬取到的很多文字包含有對任何任務都沒有幫助的內容(攻擊性的語言、佔位符文字以及原始碼等)。為了解決這些問題,研究者利用以下啟發式方法來清洗從 Common Crawl 網站上爬取到的文字:

  • 僅保留以終端標點符號(即句號、感嘆號、問號或結束引號)結尾的文字行;
  • 刪除任何包含「汙穢、下流或其他髒話字眼」的頁面;
  • 由於爬取到的很多頁面包含「應啟用 Javascript」的警告資訊,所以刪除含有 Javascript 一詞的所有文字行;
  • 有些頁面包含佔位符「亂數假文」(lorem ipsum),所以刪除出現「亂數假文」短語的所有頁面;
  • 有些頁面會無意中含有程式碼。由於花括號「{」出現在很多程式語言中(如網上廣泛使用的 Javascript),但不會出現在自然文字中,所以刪除所有含有花括號的頁面;
  • 為了刪除資料集中的重複資料,刪除資料集中多次出現的任何三個句子中的兩個。

此外,由於大多數下游任務都集中在英文文字上,因此研究者使用 langdetect 來過濾掉所有未歸類為英文的頁面(概率至少為 0.99)。為了彙編基礎資料集,他們下載了自 2019 年 4 月開始網路爬取的文字並進行了過濾。這樣產生的文字集合不僅比用於預訓練的大多數資料集大幾個數量級(大約 750GB),而且還包含非常乾淨自然的英文文字。研究者將此資料集稱為「Colossal Clean Crawled Corpus」(或簡稱 C4 語料庫),並將其作為 TensorFlow 資料集的一部分發布。

輸入 & 輸出格式

為了訓練一個在不同任務中都能表現良好的模型,我們需要在所有任務中都使用統一的輸入和輸出格式。McCann、Radford 等人在之前的研究中提到,可以用「文字到文字」的格式來表示大多數 NLP 任務,即在模型中輸入一些語境文字,然後要求模型的輸出也是文字。這一框架可以為預訓練和微調提供一個統一的訓練目標。具體來說,無論任務是什麼,我們都用一個最大似然目標來訓練模型(利用「teacher forcing」)。若要指定模型需要執行的任務,我們只需在原始輸入饋入模型之前為其新增一個特定於某個任務的(文字)字首。比如說,如果需要模型將「That is good」從英語翻譯到德語,則輸入為「translate English to German: That is good.」輸出則為「Das ist gut.」

該框架及其輸入、輸出示例如下圖 1 所示:

谷歌T5預訓練模型重新整理GLUE榜單,110億引數量,17項NLP任務新SOTA

圖 1:谷歌提出的文字到文字框架圖解。研究者考慮的每個任務(包括翻譯、問答、分類)都被轉換為輸入模型的文字,然後訓練模型生成目標文字。這樣就能保證在不同的任務中使用相同的模型、損失函式、超引數等。

按照該框架提供的方法,模型就能在每個任務中應用文字到文字的格式(STS-B 任務除外,因為這是一個迴歸任務,目標是預測一個 1-5 的相似度得分)。在論文中,研究者通過一些變通方法將 STS-B 問題轉換為了 21-class 分類問題。

此外,研究者還將 Winograd 任務轉化為了一個更簡單的格式,使其更加適合文字到文字的框架。

實驗

在論文的「實驗」部分,谷歌的研究者進行了一系列實驗來測試 T5 模型的遷移學習效能。結果如下表 14 所示:

谷歌T5預訓練模型重新整理GLUE榜單,110億引數量,17項NLP任務新SOTA

表 14:T5 模型眾多變體在各個任務上的效能。Small、Base、Large、3B 和 11B 表示模型引數量分別為 6000 萬、2.2 億、7.7 億、30 億和 110 億。每個表的第一行列出了該任務之前的 SOTA 得分。

總體而言,在實驗的 24 項任務中,T5 模型在其中的 17 個任務上都取得了 SOTA 效能。它在 GLUE 基準中的平均得分為 89.7;在 SuperGLUE 上的平均得分為 88.9,遠高於之前的 SOTA 得分 84.6。

不出所料,引數量為 110 億的最大 T5 模型在所有任務中效能最佳。30 億引數量的 T5 模型也在幾項任務中擊敗了之前的 SOTA 模型,但將模型增大至 110 億引數量才是實現 SOTA 效能最重要的因素。

但遺憾的是,T5 模型在翻譯等語言任務中表現不盡如人意,谷歌將此歸咎於特定任務資料的相對缺乏和訓練規模的不足。因此,他們提倡對利用較小模型實現更強效能的方法展開研究,以便將遷移學習應用到其發揮最大影響的地方。

論文中寫道:「我們的研究得出了一個雖不足為奇但非常重要的結論,即越大的模型往往表現越好。執行這些模型的硬體成本越來越低,功能越來越強大,這一事實表明,擴大規模可能仍然是實現更好效能的有前途方法。但是,在某些應用和場景下,總是存在使用較小或成本較低模型反而更有幫助的情況,例如在執行客戶端推理或聯邦學習時。」

參考連結: https://venturebeat.com/2019/10/24/google-achieves-state-of-the-art-nlp-performance-with-an-enormous-language-model-and-data-set/



https://www.toutiao.com/i6751657786502808077/




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2661525/,如需轉載,請註明出處,否則將追究法律責任。

相關文章