一文看盡2019年NLP前沿突破
本文經(jīng)AI新媒體量子位(公眾號ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。
2019年,自然語言處理(NLP)都取得了哪些突破?
提到NLP,BERT可以說是家喻戶曉。
在情感分析、問答、句子相似度等多個 NLP 任務(wù)上都取得了優(yōu)異的成績。
而且,無論是在類似于Kaggle這樣的競賽,或者媒體報道中,也總能看到它的身影。
它發(fā)表于2018年末,自那之后的一年,NLP和NLU(自然語言理解)領(lǐng)域有了較大的發(fā)展。
那么,以BERT的發(fā)布作為時間節(jié)點,本文便梳理了一下在此之前和之后,NLP領(lǐng)域的重要項目和模型。
BERT之前的一些主要 NLP 項目時間表
在提出BERT模型之前,NLP領(lǐng)域中的主要項目按時間排序,如下圖所示:

Word2Vec模型發(fā)布于2013年1月,至今也是非常流行。
在任何NLP任務(wù)中,研究人員可能嘗試的第一個模型就是它。
https://arxiv.org/abs/1301.3781
FastText和GloVe分別于2016年7月和2014年1月提出。
FastText是一個開源的、免費的、輕量級的庫,它允許用戶學(xué)習(xí)文本表示和文本分類器。
https://fasttext.cc/
GloVe是一種無監(jiān)督的學(xué)習(xí)算法,用于獲取單詞的向量表示。
https://nlp.stanford.edu/projects/glove/
Transformer于2017年6月提出,是一種基于 encoder-decoder 結(jié)構(gòu)的模型。
在機器翻譯任務(wù)上的表現(xiàn)超過了 RNN,CNN,只用 encoder-decoder 和 attention 機制就能達到很好的效果,最大的優(yōu)點是可以高效地并行化。
https://ai.googleblog.com/2017/08/transformer-novel-neural-network.html
ELMo于2018年2月提出,利用預(yù)訓(xùn)練好的雙向語言模型,然后根據(jù)具體輸入從該語言模型中可以得到上下文依賴的當前詞表示,再當成特征加入到具體的NLP有監(jiān)督模型里。
https://allennlp.org/elmo
還有一個叫Ulmfit,是面向NLP任務(wù)的遷移學(xué)習(xí)模型,只需使用極少量的標記數(shù)據(jù),文本分類精度就能和數(shù)千倍的標記數(shù)據(jù)訓(xùn)練量達到同等水平。
https://arxiv.org/abs/1801.06146
值得注意的是,ELMo和Ulmfit出現(xiàn)在BERT之前,沒有采用基于Transformer的結(jié)構(gòu)。
BERT
BERT模型于2018年10月提出。
全稱是Bidirectional Encoder Representation from Transformers,即雙向Transformer的Encoder(因為decoder不能獲取要預(yù)測的信息)。

△論文地址:https://arxiv.org/abs/1810.04805
模型的主要創(chuàng)新點都在pre-train方法上,即用了Masked LM和Next Sentence Prediction兩種方法分別捕捉詞語和句子級別的表示。
谷歌甚至開始使用BERT來改善搜索結(jié)果。

奉上一份較為詳細的BERT模型教程:
http://jalammar.github.io/illustrated-bert/
預(yù)訓(xùn)練權(quán)重相關(guān)內(nèi)容可以從官方 Github repo 下載:
https://github.com/google-research/bert
Bert 也可以作為 Tensorflow hub 模塊:
https://tfhub.dev/google/collections/bert/1
文末還會奉上各種非常實用的庫。
BERT之后的一些主要 NLP 項目時間表
在谷歌提出BERT之后,NLP領(lǐng)域也相繼出了其他較為突出的工作項目。

Transformer-XL
Transormer-XL是Transformer的升級版,在速度方面比Transformer快1800多倍。
這里的XL,指的是extra long,意思是超長,表示Transformer-XL在語言建模中長距離依賴問題上有非常好的表現(xiàn)。同時,也暗示著它就是為長距離依賴問題而生。
長距離依賴問題,是當前文本處理模型面臨的難題,也是RNN失敗的地方。
相比之下,Transformer-XL學(xué)習(xí)的依賴要比RNN長80%。比Vanilla Transformers快450%。
在短序列和長序列上,都有很好的性能表現(xiàn)。
https://arxiv.org/abs/1901.02860
GPT-2
GPT-2可以說是在BERT之后,媒體報道最為關(guān)注的一個NLP模型。
這是OpenAI發(fā)布的一個“逆天”的語言AI,整個模型包含15億個參數(shù)。
無需針對性訓(xùn)練就能橫掃各種特定領(lǐng)域的語言建模任務(wù),還具備閱讀理解、問答、生成文章摘要、翻譯等等能力。
而且,OpenAI最初還擔(dān)心項目過于強大,而選擇沒有開源。但在10個月之后,還是決定將其公布。
https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf
ERNIE
ERNIE是基于百度自己的深度學(xué)習(xí)框架飛槳(PaddlePaddle)搭建的,可以同時利用詞匯、句法和知識信息。
實驗結(jié)果顯示,在不同的知識驅(qū)動任務(wù)取得了顯著的改進,同時在其它常見任務(wù)上與現(xiàn)有的BERT模型具有可比性。
當前,ERNIE 2.0版本在GLUE排行榜上排名第一。
https://github.com/PaddlePaddle/ERNIE
XLNET
XLNet 是一個類似BERT的模型,是一種通用的自回歸預(yù)訓(xùn)練方法。
它不使用傳統(tǒng) AR 模型中固定的前向或后向因式分解順序,而是最大化所有可能因式分解順序的期望對數(shù)似然。
其次,作為一個泛化 AR 語言模型,XLNet不依賴殘缺數(shù)據(jù)。
此外,XLNet還改進了預(yù)訓(xùn)練的架構(gòu)設(shè)計。
https://arxiv.org/abs/1906.08237
RoBERTa
RoBERTa由Facebook提出。
它在模型層面沒有改變谷歌的BERT,改變的只是預(yù)訓(xùn)練的方法。
在模型規(guī)模、算力和數(shù)據(jù)上,與BERT相比主要有以下幾點改進:
更大的模型參數(shù)量:模型使用 1024 塊 V100 GPU 訓(xùn)練了 1 天的時間。
更大bacth size:RoBERTa在訓(xùn)練過程中使用了更大的bacth size,嘗試過從 256 到 8000 不等的bacth size。
更多的訓(xùn)練數(shù)據(jù):包括CC-NEWS 等在內(nèi)的160GB純文本。
https://arxiv.org/abs/1907.11692
Salesforce CTRL
CTRL全名是Conditional Transformer Language,包含16億個參數(shù)。
它具有強大且可控的人工文本生成功能,可以預(yù)測哪個訓(xùn)練數(shù)據(jù)子集對生成的文本序列影響最大。
通過識別模型中最有影響力的訓(xùn)練數(shù)據(jù)來源,為分析大量生成的文本提供了一種潛在的方法。
CTRL還可以通過微調(diào)特定任務(wù)或轉(zhuǎn)移模型已學(xué)習(xí)的表示形式來改進其他NLP應(yīng)用程序。
https://blog.einstein.ai/introducing-a-conditional-transformer-language-model-for-controllable-generation/
ALBERT
ALBERT是谷歌發(fā)布的輕量級BERT模型。
比BERT模型參數(shù)小18倍,性能還超越了它,在SQuAD和RACE測試上創(chuàng)造了新的SOTA。
前不久,谷歌還對此進行了升級,發(fā)布了ALBERT 2和中文版本。
在這個版本中,“no dropout”、“additional training data”、“long training time”策略將應(yīng)用到所有的模型。
從性能的比較來說,對于ALBERT-base、ALBERT-large和ALBERT-xlarge,v2版要比v1版好得多。
說明采用上述三個策略的重要性。
https://arxiv.org/abs/1909.11942
性能評測基準
評估這些語言模型的方法之一是Glue Benchmark。
它包括評估模型的各種NLP任務(wù),如分類、問答等。
在Glue Benchmark剛剛發(fā)布的時候,BERT模型的性能位居榜首。
但截至2020年1月2日,在僅僅1年時間內(nèi),BERT已經(jīng)排名到了19位。

現(xiàn)在還有一個 SuperGlue 基準測試,它包含了更難理解的語言任務(wù)。

對于評估問題回答系統(tǒng),SQuAD是較為常用的。
BERT和基于transformer模型在此處的性能是較好的。

其它與BERT相關(guān)項目
DistilBERT
DistilBERT是HuggingFace發(fā)布的小型NLP transformer模型,與BERT的架構(gòu)類似,不過它僅使用了 6600 萬參數(shù),但在 GLUE 基準上實現(xiàn)了BERT 95% 的性能。
https://arxiv.org/abs/1910.01108
Megatron-LM
Megatron-LM是英偉達發(fā)布的NLP模型。
英偉達用自己的硬件與并行計算軟件相結(jié)合,當時創(chuàng)下了三項紀錄:
訓(xùn)練速度只需53分鐘;
推理速度只需2.2ms;
包含83億參數(shù)。
https://github.com/NVIDIA/Megatron-LM
BioBERT
BioBERT是用于生物醫(yī)學(xué)文本挖掘的預(yù)訓(xùn)練生物醫(yī)學(xué)語言表示模型。
在生物醫(yī)學(xué)語料庫上進行預(yù)培訓(xùn)時,它在各種生物醫(yī)學(xué)文本挖掘任務(wù)上的表現(xiàn),在很大程度上超過了BERT和之前的先進模型。
https://github.com/dmis-lab/biobert
CamemBERT
CamemBERT是一種基于RoBERTa 結(jié)構(gòu)的法語語言模型。
https://camembert-model.fr/
NLP庫
下面是作者認為需要了解的一些NLP庫。
Spacy
Spacy 是一個流行的、快速的NLP程序庫,可以處理各種自然語言處理任務(wù),如標記、詞性等。它還提供了預(yù)先訓(xùn)練的NER等模型。
https://spacy.io/
HuggingFace Transformers
它是首批提供 BERT Pytorch實現(xiàn)的庫之一,最初被稱為“ Pytorch-pretrained-BERT”。
后來,他們增加了更多的模型,如GPT-2,XLNET等。
在不到一年的時間里,它已經(jīng)成為最流行的 NLP 庫之一,并且使得BERT和其他模型的使用變得更加容易。
https://github.com/huggingface/transformers
AllenNLP
AllenNLP是來自艾倫人工智能研究所(Allen Institute of AI)的NLP庫,基于PyTorch。
https://allennlp.org/
Flair
Flair也是一個帶有 NER、 POS 等模型的 NLP 庫,還支持 BERT、 ELMO、 XLNET 等嵌入。
https://github.com/flairNLP/flair
GluonNLP
GluonNLP是Apache MXNet 上的NLP工具包,是最早包含預(yù)先訓(xùn)練的BERT嵌入式的庫之一。
https://gluon-nlp.mxnet.io/
那么,在2020年,NLP又會怎樣的突破呢?
傳送門
https://towardsdatascience.com/2019-year-of-bert-and-transformer-f200b53d05b9