預訓練模型探索1

2021-02-21 JustDocu

本系列將對預訓練語言模型進行初步探索,本部分為第一部分,對預訓練模型的優點以及發展歷史進行簡要介紹。

引言

回顧近年來基於深度學習的NLP技術的重大事件,就不得不提到由ELMo/GPT/BERT帶來的預訓練模型熱潮。在最近剛結束的2020年ACL大會上,「不要停止預訓練:將語言模型應用於目標領域和任務上」[^1]這樣看似標題黨的論文獲得了ACL2020 best paper的榮譽提名。[^2]這裡所說預訓練思想的本質是模型參數不再是隨機初始化,而是通過一些任務(如語言模型)對模型進行預訓練從而使模型得到一個初始化的參數。[^3]

而所謂的預訓練語言模型,其實就是預先在一個比較大的語料庫上進行訓練並且能夠獲得通用的語言表示。也就是預訓練語言模型已經擁有一個初始的參數,在面對具體任務時,根據該任務的數據集對該預訓練模型進行參數微調即可,從而不需要重新訓練一個模型。

為什麼預訓練

對於傳統的非預訓練語言模型,如果要進行某個具體的任務時,都需要大量注釋好的數據集進行訓練與學習。這是數據的性質決定的,因為對於文本數據,提取出對類別具有決定性作用的特徵是很難的。傳統方式諸如TF-IDF方法也無非只是提取出一些關於詞的統計性的特徵,但是對於一個文本,它富含的信息遠不止幾個關鍵詞的詞頻,還包括語序,詞義以及整體的語義等。但是要讓模型學到通用的語義,是需要大量數據集的進行學習的。

以我們人類為例,在我們小學時是很難讀懂大學時的文章,這是由我們的知識儲備所決定的。當人們學習過足夠多的知識,讀過足夠多的書之後,那很少有能讀不懂的文章了。而這裡的預訓練模型恰恰如同一個學富五車的學者,而普通非預訓練模型就如同三歲小孩,相比之下自然就有優勢了。

前面提到,由於注釋成本極其昂貴,對於大多數NLP任務而言,構建大規模的標記數據集是一項巨大的挑戰,尤其是對於語法和語義相關的任務。相反,大規模的未標記語料庫相對容易構建,使用大規模的未標記語料庫來預訓練模型是相對容易的。自2018年以來,預訓練模型在NLP各種任務上的SOTA效果也是用事實證明預訓練模型相比於傳統模型的優越。邱錫鵬教授發表的關於NLP預訓練模型的綜述[^4]也總結了預訓練模型的以下三個優點:

在龐大的無標註數據上進行預訓練可以獲取更通用的語言表示,並有利於下遊任務;為模型提供了一個更好的初始化參數,在目標任務上具備更好的泛化性能、並加速收斂;是一種有效的正則化手段,避免在小數據集上過擬合(一個隨機初始化的深層模型容易對小數據集過擬合)。預訓練語言模型的發展

近些年預訓練模型的發展首先要從Word2Vec[^5][^6]說起,它的核心思想是通過詞的上下文得到詞的向量化表示。方法有兩種:CBOW和Skip-gram。CBOW是通過附近的詞來預測中心詞,Skip-gram則是通過中心詞預測附近的詞。訓練得到的這些詞向量可以進行一些線性的語義預算,如「皇帝-皇后=男-女」。

但是這些詞向量都是上下文無關的。也就是說,同一個詞在不同的語境中詞向量卻是相同的,很明顯這就導致詞向量模型缺乏詞義消歧(WSD)的能力。ELMo[^7]就是針對這個問題進行優化:ELMo通過多層的stack LSTM去學習詞的複雜用法;ELMo提出pre-training+finetuning的方法,現在大語料庫中預訓練得到詞向量,再根據下遊任務的語料庫對上面得到的詞向量進行微調。

不管是Word2Vec還是ELMo,所使用的將預訓練好的語言模型應用到下遊任務的方式是都是基於特徵的。在ELMo模型出來不久,OpenAI GPT-1[^ 8]就使用了另外一種方式,基於微調,即引入一些特定於任務的參數,使用下遊任務的訓練集對預訓練模型參數進行微調訓練。

ELMo和GPT-1有個共同點就是他們的預訓練語言模型都是單向的,然而BERT[^9]指出,這樣的技術限制了預訓練模型表示的效果,因為這樣預訓練得到的模型僅僅只能學到單方向的語義。BERT作者受到完形填空任務的啟發,通過一個新的預訓練任務來解決前面的單向約束:「遮蔽語言模型」(MLM Masked Language Model)。通過這個預訓練任務就使得預訓練模型獲得了雙向的語義。除此之外,BERT還提出了「下一個句子預測」(NSP Next Sentence Prediction)的預訓練任務,這個任務將前後兩個句子建立其聯繫,在多句子語義理解或問答任務中有非常好的效果。由於BERT的這兩個全新的預訓練任務,它在當時大幅度刷新了11個NLP任務的最優結果。

隨著GPT-1,BERT的誕生,根據不同的預訓練任務,基於不同網絡結構等預訓練模型被不斷提出。例如基於排列語言模型(PLM Permutation Language Modeling)的XLNet[^10]。當然也有對預訓練模型任務或者語料庫進行優化而產生的預訓練模型,例如RoBERTa[^11]就是對BERT的預訓練任務以及數據集進行適當調整產生的。

本文剩下部分將如下安排。首先對BERT的網絡結構模型Transformer的原理進行分析,之後將深入探索BERT,理解其預訓練任務以及微調過程,再來就是對XLNet和RoBERTa進行簡要介紹。

參考文獻

[^1]: Don’t Stop Pretraining: Adapt Language Models to Domains and Tasks

[^2]: https://zhuanlan.zhihu.com/p/149210123

[^3]: https://zhuanlan.zhihu.com/p/76912493

[^4]: Pre-trained Models for Natural Language Processing: A Survey 

[^5]: Distributed Representations of Sentences and Documents:https://arxiv.org/abs/1405.4053

[^6]: Efficient Estimation of Word Representations in Vector Space: https://arxiv.org/abs/1301.3781

[^7]: Deep contextualized word representations:https://arxiv.org/abs/1405.4053

[^8]: Improving Language Understanding

[^9]: BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

[^10]: XLNet: Generalized Autoregressive Pretraining for Language Understanding

[^11]: RoBERTa: A Robustly Optimized BERT Pretraining Approach

相關焦點

  • 預訓練模型綜述
    第 2 節按時間順序簡要概述了預訓練語言模型的整個發展歷史;第 3 節詳細介紹自然語言處理領域的經典預訓練模型;第 4 節小結了預訓練模型的優點和其對比分類;第 5 節對自然語言處理領域的預訓練語言模型的未來發展趨勢進行展望。2 預訓練模型發展歷史 早期的 PTMs 技術的目標是學習好的詞嵌入。
  • 【NLP】預訓練模型綜述
    第 2 節按時間順序簡要概述了預訓練語言模型的整個發展歷史;第 3 節詳細介紹自然語言處理領域的經典預訓練模型;第 4 節小結了預訓練模型的優點和其對比分類;第 5 節對自然語言處理領域的預訓練語言模型的未來發展趨勢進行展望。2 預訓練模型發展歷史 早期的 PTMs 技術的目標是學習好的詞嵌入。
  • ERNIE 3.0 Titan:最強中文預訓練模型
    作者提出了名為ERNIE 3.0的統一框架,用於預訓練大規模知識增強模型,並訓練了一個具有 100 億個參數的模型。ERNIE 3.0 在各種 NLP 任務上的表現優於最先進的模型。為了探索擴展 ERNIE 3.0 的性能,作者在PaddlePaddle平臺上訓練了具有多達2600億個參數的百億參數模型 ERNIE 3.0 Titan。
  • 深度 | 通過NMT訓練的通用語境詞向量:NLP中的預訓練模型?
    在我們的實驗中,給這些網絡提供 CoVe 的情況總會改善模型的性能,這十分令我們振奮,所以所以我們公布了這個能夠生成 CoVe 的可訓練神經網絡,以進一步探索自然語言處理中的可重用表徵。詞向量今天大多數用於自然語言處理的深度學習模型都依賴詞向量來代表單個單詞的含義。
  • 乘風破浪的PTM:兩年來預訓練模型的技術進展
    1  引言  我們知道,在預訓練模型框架下,解決NLP問題,會劃分為序列進行的兩階段:第一階段是預訓練階段,然後是Fine-tuning階段,本文集中在預訓練階段。    在原始Bert模型的基礎上,RoBERTa通過實驗,證明了如下幾點:  1)進一步增加預訓練數據數量,能夠改善模型效果;  2)延長預訓練時間或增加預訓練步數,能夠改善模型效果;
  • PTMs:NLP預訓練模型
    2020年3月18日,邱錫鵬老師發表了關於NLP預訓練模型的綜述《Pre-trained Models for Natural Language Processing: A Survey》[1],這是一篇全面的綜述,系統地對PTMs進行了歸納分類。
  • 國內數十位NLP大佬合作,綜述預訓練模型的過去、現在與未來
    BERT 、GPT 等大規模預訓練模型(PTM)近年來取得了巨大成功,成為人工智慧領域的一個裡程碑。由於複雜的預訓練目標和巨大的模型參數,大規模 PTM 可以有效地從大量標記和未標記的數據中獲取知識。通過將知識存儲到巨大的參數中並對特定任務進行微調,巨大參數中隱式編碼的豐富知識可以使各種下遊任務受益。現在 AI 社區的共識是採用 PTM 作為下遊任務的主幹,而不是從頭開始學習模型。
  • NLP集大成之預訓練模型綜述
    介紹預訓練模型的出現,將自然語言處理帶入了新紀元,本論文中就此綜合地介紹了自然語言的預訓練模型。預訓練模型主要有以下三個優點:可以從巨大的語料中學習表示,從而幫助到下遊任務;提供了一個很好的模型初始化結果,有著更好的泛化能力,並且能加速下遊任務的收斂。
  • 復旦大學邱錫鵬教授:NLP預訓練模型綜述
    這一通過 PTMs 從未標註大規模數據集中提取表示的預訓練過程在很多 NLP 任務中都取得了很好的表現。預訓練的優點可以總結為以下三點:1 在大規模語料上通過預訓練學習通用語言表示對下遊任務很有幫助;2) 預訓練提供了更好的模型初始化參數,使得在目標任務上有更好的泛化性能和更快的收斂速度;3) 預訓練是一種有效的正則化方法,能夠避免在小數據集上過擬合。
  • 天池NLP中文預訓練模型賽來了!
    自從2017年具有劃時代意義的Transformer模型問世以來,短短兩年多的時間內,如雨後春筍般的出現了大量的預訓練模型,比如:
  • 8種優秀預訓練模型大盤點,NLP應用so easy!
    模型的作者已經設計出了基準模型,這樣我們就可以在自己的NLP數據集上使用該預訓練模型,而無需從頭開始構建模型來解決類似的問題儘管需要進行一些微調,但這為我們節省了大量的時間和計算資源在本文中展示了那些助你開始NLP之旅的頂級預訓練模型,以及該領域的最新研究成果。
  • RoBERTa中文預訓練模型:RoBERTa for Chinese
    RoBERTa模型RoBERTa是BERT的改進版,通過改進訓練任務和數據生成方式、訓練更久、使用更大批次、使用更多數據等獲得了State of The Art的效果;可以用Bert直接加載。本項目是用TensorFlow實現了在大規模中文上RoBERTa的預訓練,也會提供PyTorch的預訓練模型和加載方式。
  • pytorch中文語言模型bert預訓練代碼
    這篇論文做了很多語言模型預訓練的實驗,系統的分析了語言模型預訓練對子任務的效果提升情況。有幾個主要結論:在目標領域的數據集上繼續預訓練(DAPT)可以提升效果;目標領域的語料與RoBERTa的原始預訓練語料越不相關,DAPT效果則提升更明顯。在具體任務的數據集上繼續預訓練(TAPT)可以十分「廉價」地提升效果。
  • COLING 2020 | 字符感知預訓練模型CharBERT
    如果字符序列出現了噪音或者拼寫錯誤(如去掉了字符k),那麼整個子詞組合就會完全變化,輸入到模型中的表示也就完全不一樣了,因此魯棒性較差。以CoNLL-2003 NER的開發集為例,我們基於BERT[2]的tokenizer切詞後統計發現28%的名詞會被切分成多個子詞。如果隨機刪除所有名詞中的任意一個字符,78%的詞會切分成如圖1這樣完全不一樣的組合。
  • ERICA: 提升預訓練語言模型實體與關係理解的統一框架
    近年來,預訓練語言模型(PLM)在各種下遊自然語言處理任務中表現出卓越的性能,受益於預訓練階段的自監督學習目標,PLM 可以有效地捕獲文本中的語法和語義
  • 智源研究院發布清源 CPM —— 以中文為核心的大規模預訓練模型
    在人工智慧與深度學習領域圍繞超大規模預訓練模型展開的「軍備競賽」日益白熱化,成為對海量數據、並行計算、模型學習能力的全方位考驗。預訓練模型規模以平均每年10倍的速度增長 (最後一列計算時間為使用單塊NVIDIA V100 GPU訓練的估計時間。M-百萬,B-十億)在這一態勢下,亟需建立以中文為核心的超大規模預訓練模型。
  • ELECTRA:超越BERT,19年最佳NLP預訓練模型
    今天要介紹的ELECTRA是我在ICLR盲審中淘到的寶貝(9月25日已截稿),也是BERT推出以來我見過最贊的改進,通過類似GAN的結構和新的預訓練任務,在更少的參數量和數據下,不僅吊打BERT,而且僅用1/4的算力就達到了當時SOTA模型RoBERTa的效果。論文地址:https://openreview.net/forum?
  • 超讚,以QA形式對NLP預訓練模型進行的全面總結!
    總的來看,預訓練模型PTMs的優勢包括:在龐大的無標註數據上進行預訓練可以獲取更通用的語言表示,並有利於下遊任務;為模型提供了一個更好的初始化參數,在目標任務上具備更好的泛化性能、並加速收斂;是一種有效的正則化手段,避免在小數據集上過擬合(一個隨機初始化的深層模型容易對小數據集過擬合);二、詞嵌入和分布式表示
  • 預訓練模型超全知識點梳理與面試必備高頻FAQ
    總的來看,預訓練模型PTMs的優勢包括:在龐大的無標註數據上進行預訓練可以獲取更通用的語言表示,並有利於下遊任務;為模型提供了一個更好的初始化參數,在目標任務上具備更好的泛化性能、並加速收斂;是一種有效的正則化手段,避免在小數據集上過擬合(一個隨機初始化的深層模型容易對小數據集過擬合);詞嵌入和分布式表示詞嵌入是自然語言處理
  • 【論文解讀】MacBERT: 中文自然語言預訓練模型
    表1:預訓練語言模型的比較。我們將在第6.1節中消融這些修改,以更好地證明每個組件的貢獻。四、實驗設置4.1 預訓練語言模型的設置我們下載了Wikipedia dump(截至2019年3月25日),並根據Devlin等人的提議使用WikiExtractor.py進行了預處理。(2019),提取了1,307個文件。我們同時使用了簡體中文和繁體中文。