OpenAI在昨天悄然放出了GPT第三代——《Language Models are Few-Shot Learners》。刷遍Twitter!史無前例!論文介紹了GPT-3這是一種由1750億個參數組成的最先進的語言模型。論文由32位作者72頁pdf。
最近的工作表明,通過對大量文本進行預訓練,然后對特定任務進行微調,在許多NLP任務和基準測試方面取得了巨大的進展。盡管這種方法在架構中通常與任務無關,但它仍然需要成千上萬個特定于任務的實例微調數據集。相比之下,人類通常只需要幾個例子或簡單的指令就可以完成一項新的語言任務——這是目前的NLP系統仍然難以做到的。在這里,我們展示了擴展語言模型極大地提高了任務無關性、低命中率的性能,有時甚至達到了與先前最先進的微調方法的匹配性能。具體來說,我們訓練了一個帶有1750億個參數的自回歸語言模型GPT-3,比以前任何非稀疏語言模型都多10倍,并在小樣本設置下測試了它的性能。對于所有任務,GPT-3的應用沒有任何梯度更新或微調,任務和小樣本演示指定純粹通過與模型的文本交互。GPT-3在許多NLP數據集上實現了強大的性能,包括翻譯、問答和完形填空任務,以及一些需要即時推理或領域適應的任務,如整理單詞、在句子中使用新單詞或執行3位算術。同時,我們還確定了一些數據集,其中GPT-3的小樣本學習仍然效果不佳,以及一些數據集,其中GPT-3面臨著與大型web語料庫上的訓練有關的方法問題。最后,我們發現GPT-3可以生成新聞文章的樣本,這些文章是人類評價者難以區分的。我們討論了這個發現和一般的GPT-3的更廣泛的社會影響。
GPT-3的主要目標是用更少的領域數據、且不經過精調步驟去解決問題。
為了達到上述目的,作者們用預訓練好的GPT-3探索了不同輸入形式下的推理效果。
這里的Zero-shot、One-shot、Few-shot都是完全不需要精調的,因為GPT-3是單向transformer,在預測新的token時會對之前的examples進行編碼。
作者們訓練了以下幾種尺寸的模型進行對比:
實驗證明Few-shot下GPT-3有很好的表現:
最重要的是,GPT-3在Few-shot設定下,在部分NLU任務上超越了當前Fine-tuning的SOTA。
在為視覺訓練深度神經網絡時,預訓練表示的遷移提高了樣本效率并簡化了超參數調整。我們回顧了在大型監督數據集上進行預訓練和在目標任務上對模型進行微調的范例。我們擴大了預訓練的規模,并提出了一個簡單的方法,我們稱之為大遷移(BiT)。通過組合一些精心選擇的組件,并使用一個簡單的啟發式傳輸,我們在20多個數據集上實現了強大的性能。BiT在非常廣泛的數據范圍內執行得非常好——從每個類1個示例到總共100萬個示例。BiT在ILSVRC-2012上達到87.5%的top-1準確率,在CIFAR-10上達到99.4%,在19個任務的視覺任務適應基準(VTAB)上達到76.3%。在小型數據集上,在ILSVRC-2012上BiT達到了76.8%,每個類有10個例子,在CIFAR-10上達到了97.0%,每個類有10個例子。我們對導致高遷移性能的主要部件進行了詳細的分析。
過去幾年間,遷移學習給 NLP 領域帶來了豐碩的成果,掀起了新一波的發展浪潮。 而遷移學習之所以如此有效,得益于其利用自監督任務(如語言建模或填充缺失詞)在大量可用的無標注的文本數據上對模型進行預訓練;接著,又在更小的標注數據集上對模型進行微調,從而讓模型實現比單單在標注數據上訓練更好得多的性能。 遷移學習在2018年出現的GPT、ULMFiT、ELMo以及 BERT等成果上初露鋒芒,之后又在2019年大顯身手,推動了領域內多種新方法的發展,其中就包括XLNet、RoBERTa、ALBERT、Reformer 和 MT-DNN 等等。 隨著 NLP 領域的發展迅猛,評估其中的哪些發展成果最具有意義以及這些成果結合起來會發揮出怎樣的效果,已不是易事。
論文地址://arxiv.org/abs/1910.10683
谷歌研究者在論文《使用統一的文本到文本的Transformer 來探索遷移學習的局限性》中,提出了一個大規模的實證評估,以確定哪些遷移學習技術效果最好,并大規模應用這些遷移學習技術來創建一個新模型,作者將這個新模型稱之為文本到文本的遷移Transformer (Text-To-Text Transfer Transformer,T5)。與此同時,他們還引入了一個新的開源預訓練數據集——Colossal Clean Crawled Corpus(C4)。 作者在C4數據集上對T5 模型進行預訓練,讓模型在許多 NLP 基準上都實現了最佳結果,與此同時還擁有足夠的靈活性,進行微調后可應用到多個重要的下游任務上。
一、共享的文本到文本框架
創建了T5模型后,作者將所有的 NLP 任務都重新構建為統一的文本到文本格式,輸入和輸出都始終是文本字符串,與只能輸出類標簽或者輸入范圍的 BERT 式的模型截然不同。 該文本到文本的框架讓他們可以在任何 NLP 任務上都使用相同的模型、損失函數以及超參數,包括機器翻譯、文檔摘要、問答和分類任務(如情感分析)等等。 T5 模型甚至可以被應用到回歸任務上,具體方式是訓練 T5 模型來預測一個數字的字符串表示,而不是這個數字本身。
文本到文本框架圖。對于每個任務,作者都考慮使用文本作為模型的輸入,并訓練模型生成一些目標文本。這讓他們能夠在多個任務上使用相同的模型、損失函數和超參數,包括翻譯(綠色框)、語言可接受性(紅色框)、句子相似性(黃色框)和文檔摘要(藍色框)。它也為實證評估中所包含的方法提供了一個標準的試驗臺。
二、大型預訓練數據集(C4)
遷移學習的一個重要部分,便是用于模型預訓練的未標注的數據集。為了準確地評估擴大預訓練規模的效果,我們需要一個不僅高質量、多樣化而且規模龐大的數據集。 現有的預訓練數據集無法滿足上述三點要求,例如來自維基百科的文本是高質量的,并且格式統一,但是規模相對而言較小,而從Common Crawl 網站上爬取的文本雖然規模較大并且多樣化程度高,但是質量相當低。 為了滿足這三點要求,作者開發了一個Colossal Clean Crawled Corpus數據集 (C4),該數據集是比維基百科大兩個數量級的 Common Crawl 的清潔版本。他們的清潔處理過程涉及到刪除重復數據、去除不完整的句子以及消除冒犯性或有噪音的內容。 這一過濾可以讓模型在下游任務上獲得更好的表現,與此同時額外規模的數據集也讓模型在預訓練期間不過擬合的情況下,增加其大小。 C4數據集地址:
三、遷移學習方法的系統研究
作者使用T5 文本到文本框架和新的預訓練數據集C4,評估了在過去幾年間為NLP 遷移學習引入的大量思想和方法。詳盡的評估細節可前往論文查看,其中包括以下實驗:
模型架構的實驗中,他們發現編碼—解碼模型通常比“僅解碼”的語言模型,性能更優; 預訓練目標的實驗中,他們證實了填空式的去噪目標(即訓練模型來復原輸入中缺失的詞)的效果更好,并且其中最重要的因素是計算成本。 未標注數據集的實驗中,他們展示了在域內數據集上訓練模型是有益的,而在更小的數據集上對模型進行預訓練則會導致不利的過擬合; 訓練策略的實驗中,他們發現多任務學習可以與“先預訓練再微調”的方法相媲美,但是要求更細致地選擇模型在每個任務上訓練的頻率。 模型規模的實驗中,他們對比了不同大小的模型、訓練時間以及集成模型的數量,以確定如何才能最好地利用固定的計算能力。
四、遷移方法+數據規模=性能最佳
為了探索NLP目前遷移學習的局限性,作者進行了最后一組實驗,結合系統研究中的所有最佳方法,并利用Google Cloud TPU加速器進行了優化。 其中最大規模的模型有110億個參數,在GLUE、Superglue、Team和CNN/Daily Mail基準測試中都能夠達到SOTA。另外,在SuperGLUE 自然語言理解的基準測試中獲得了接近人類水平的分數。
五、擴展到其他任務,表現也同樣可喜
T5非常靈活,可以非常容易的進行修改,除了作者論文中的一些任務,在其他任務中也能取得了巨大的成功。例如在下面兩個新任務中,模型表現也不錯。
1、封閉數據問答
在閱讀理解問題中往往可以使用文本到文本的框架。給模型提供上下文信息以及一個問題,訓練其在上下文信息中找到問題的答案,例如可以向模型提供維基百科文章中關于康尼颶風的文本,并提問“康妮颶風在哪天發生?”然后訓練模型,讓其找到文章中的日期。事實上,作者使用這種方法在斯坦福問答數據集(SQuAD)中取得了最先進的結果。 在作者的Colab demo和后續論文中,其訓練了T5在一個更加困難的封閉的環境中回答瑣碎的問題,而且不需要接觸任何外部知識。 換句話說,T在回答問題時只能用其在無監督預訓練期間訓練出的參數和知識。
在預訓練期間,T5學習如何從C4文檔中填充文本的丟失跨度。對模型進行了微調,在無需輸入任何信息或者上下文的情況下,將其應用于已經封閉式問答。 T5非常擅長這項任務,其110億參數模型分別在TriviaQA、Web問題(WebQuestions)和自然問題(Natural Questions)對50.1%、37.4%和34.5%的答案進行了精確生成。 為了客觀看待此類問題,T5團隊在酒吧瑣事挑戰(pub trivia challenge)與訓練好的模型并肩作戰,但不幸的是慘敗而歸。如下動圖所示
2、完形填空 第二個任務是完形填空。像GPT-2這種大型語言模型在文本生產方面非常擅長。模型在經過訓練之后,能夠根據輸入預測出下一個單詞,如此將模型集成,便會產生非常創新性的應用程序,例如基于文本的游戲“AI地下城”。
T5使用的預訓練目標與填空任務非常相似,在填空任務中,模型預測文本中缺少的單詞,但是此目標是對“繼續任務”(continuation task)的概括,因為填空任務中的空白有可能出現在文本的末尾。 為了完成目標,創建了一個名為“填充空白”的新任務,并要求模型用指定數量的單詞替換空白。例如給模型輸入:我喜歡吃花生醬和—4—三明治。大概會訓練模型用4個單詞進行填空。 用C4對模型進行了微調,效果良好,尤其是模型對缺失文本的預測非常棒!例如下列對于輸入:“我喜歡花生醬和—N—三明治”,輸出結果如下所示:
預訓練模型:
代碼: Colab Notebook