關注前沿科技 量子位
十三 發自 凹非寺
2019年,自然語言處理(NLP)都取得了哪些突破?
提到NLP,BERT可以說是家喻戶曉。
在情感分析、問答、句子相似度等多個 NLP 任務上都取得了優異的成績。
而且,無論是在類似於Kaggle這樣的競賽,或者媒體報導中,也總能看到它的身影。
它發表於2018年末,自那之後的一年,NLP和NLU(自然語言理解)領域有了較大的發展。
那麼,以BERT的發布作為時間節點,本文便梳理了一下在此之前和之後,NLP領域的重要項目和模型。
BERT之前的一些主要 NLP 項目時間表
在提出BERT模型之前,NLP領域中的主要項目按時間排序,如下圖所示:
Word2Vec模型發布於2013年1月,至今也是非常流行。
在任何NLP任務中,研究人員可能嘗試的第一個模型就是它。
https://arxiv.org/abs/1301.3781
FastText和GloVe分別於2016年7月和2014年1月提出。
FastText是一個開源的、免費的、輕量級的庫,它允許用戶學習文本表示和文本分類器。
https://fasttext.cc/
GloVe是一種無監督的學習算法,用於獲取單詞的向量表示。
https://nlp.stanford.edu/projects/glove/
Transformer於2017年6月提出,是一種基於 encoder-decoder 結構的模型。
在機器翻譯任務上的表現超過了 RNN,CNN,只用 encoder-decoder 和 attention 機制就能達到很好的效果,最大的優點是可以高效地並行化。
https://ai.googleblog.com/2017/08/transformer-novel-neural-network.html
ELMo於2018年2月提出,利用預訓練好的雙向語言模型,然後根據具體輸入從該語言模型中可以得到上下文依賴的當前詞表示,再當成特徵加入到具體的NLP有監督模型裡。
https://allennlp.org/elmo
還有一個叫Ulmfit,是面向NLP任務的遷移學習模型,只需使用極少量的標記數據,文本分類精度就能和數千倍的標記數據訓練量達到同等水平。
https://arxiv.org/abs/1801.06146
值得注意的是,ELMo和Ulmfit出現在BERT之前,沒有採用基於Transformer的結構。
BERT
BERT模型於2018年10月提出。
全稱是Bidirectional Encoder Representation from Transformers,即雙向Transformer的Encoder(因為decoder不能獲取要預測的信息)。
△論文地址:https://arxiv.org/abs/1810.04805
模型的主要創新點都在pre-train方法上,即用了Masked LM和Next Sentence Prediction兩種方法分別捕捉詞語和句子級別的表示。
谷歌甚至開始使用BERT來改善搜索結果。
奉上一份較為詳細的BERT模型教程:
http://jalammar.github.io/illustrated-bert/
預訓練權重相關內容可以從官方 Github repo 下載:
https://github.com/google-research/bert
Bert 也可以作為 Tensorflow hub 模塊:
https://tfhub.dev/google/collections/bert/1
文末還會奉上各種非常實用的庫。
BERT之後的一些主要 NLP 項目時間表
在谷歌提出BERT之後,NLP領域也相繼出了其他較為突出的工作項目。
Transformer-XL
Transormer-XL是Transformer的升級版,在速度方面比Transformer快1800多倍。
這裡的XL,指的是extra long,意思是超長,表示Transformer-XL在語言建模中長距離依賴問題上有非常好的表現。同時,也暗示著它就是為長距離依賴問題而生。
長距離依賴問題,是當前文本處理模型面臨的難題,也是RNN失敗的地方。
相比之下,Transformer-XL學習的依賴要比RNN長80%。比Vanilla Transformers快450%。
在短序列和長序列上,都有很好的性能表現。
https://arxiv.org/abs/1901.02860
GPT-2
GPT-2可以說是在BERT之後,媒體報導最為關注的一個NLP模型。
這是OpenAI發布的一個「逆天」的語言AI,整個模型包含15億個參數。
無需針對性訓練就能橫掃各種特定領域的語言建模任務,還具備閱讀理解、問答、生成文章摘要、翻譯等等能力。
而且,OpenAI最初還擔心項目過於強大,而選擇沒有開源。但在10個月之後,還是決定將其公布。
https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf
ERNIE
ERNIE是基於百度自己的深度學習框架飛槳(PaddlePaddle)搭建的,可以同時利用詞彙、句法和知識信息。
實驗結果顯示,在不同的知識驅動任務取得了顯著的改進,同時在其它常見任務上與現有的BERT模型具有可比性。
當前,ERNIE 2.0版本在GLUE排行榜上排名第一。
https://github.com/PaddlePaddle/ERNIE
XLNET
XLNet 是一個類似BERT的模型,是一種通用的自回歸預訓練方法。
它不使用傳統 AR 模型中固定的前向或後向因式分解順序,而是最大化所有可能因式分解順序的期望對數似然。
其次,作為一個泛化 AR 語言模型,XLNet不依賴殘缺數據。
此外,XLNet還改進了預訓練的架構設計。
https://arxiv.org/abs/1906.08237
RoBERTa
RoBERTa由Facebook提出。
它在模型層面沒有改變谷歌的BERT,改變的只是預訓練的方法。
在模型規模、算力和數據上,與BERT相比主要有以下幾點改進:
更大的模型參數量:模型使用 1024 塊 V100 GPU 訓練了 1 天的時間。
更大bacth size:RoBERTa在訓練過程中使用了更大的bacth size,嘗試過從 256 到 8000 不等的bacth size。
更多的訓練數據:包括CC-NEWS 等在內的160GB純文本。
https://arxiv.org/abs/1907.11692
Salesforce CTRL
CTRL全名是Conditional Transformer Language,包含16億個參數。
它具有強大且可控的人工文本生成功能,可以預測哪個訓練數據子集對生成的文本序列影響最大。
通過識別模型中最有影響力的訓練數據來源,為分析大量生成的文本提供了一種潛在的方法。
CTRL還可以通過微調特定任務或轉移模型已學習的表示形式來改進其他NLP應用程式。
https://blog.einstein.ai/introducing-a-conditional-transformer-language-model-for-controllable-generation/
ALBERT
ALBERT是谷歌發布的輕量級BERT模型。
比BERT模型參數小18倍,性能還超越了它,在SQuAD和RACE測試上創造了新的SOTA。
前不久,谷歌還對此進行了升級,發布了ALBERT 2和中文版本。
在這個版本中,「no dropout」、「additional training data」、「long training time」策略將應用到所有的模型。
從性能的比較來說,對於ALBERT-base、ALBERT-large和ALBERT-xlarge,v2版要比v1版好得多。
說明採用上述三個策略的重要性。
https://arxiv.org/abs/1909.11942
性能評測基準
評估這些語言模型的方法之一是Glue Benchmark。
它包括評估模型的各種NLP任務,如分類、問答等。
在Glue Benchmark剛剛發布的時候,BERT模型的性能位居榜首。
但截至2020年1月2日,在僅僅1年時間內,BERT已經排名到了19位。
現在還有一個 SuperGlue 基準測試,它包含了更難理解的語言任務。
對於評估問題回答系統,SQuAD是較為常用的。
BERT和基於transformer模型在此處的性能是較好的。
其它與BERT相關項目
DistilBERT
DistilBERT是HuggingFace發布的小型NLP transformer模型,與BERT的架構類似,不過它僅使用了 6600 萬參數,但在 GLUE 基準上實現了BERT 95% 的性能。
https://arxiv.org/abs/1910.01108
Megatron-LM
Megatron-LM是英偉達發布的NLP模型。
英偉達用自己的硬體與並行計算軟體相結合,當時創下了三項紀錄:
訓練速度只需53分鐘;
推理速度只需2.2ms;
包含83億參數。
https://github.com/NVIDIA/Megatron-LM
BioBERT
BioBERT是用於生物醫學文本挖掘的預訓練生物醫學語言表示模型。
在生物醫學語料庫上進行預培訓時,它在各種生物醫學文本挖掘任務上的表現,在很大程度上超過了BERT和之前的先進模型。
https://github.com/dmis-lab/biobert
CamemBERT
CamemBERT是一種基於RoBERTa 結構的法語語言模型。
https://camembert-model.fr/
NLP庫
下面是作者認為需要了解的一些NLP庫。
Spacy
Spacy 是一個流行的、快速的NLP程序庫,可以處理各種自然語言處理任務,如標記、詞性等。它還提供了預先訓練的NER等模型。
https://spacy.io/
HuggingFace Transformers
它是首批提供 BERT Pytorch實現的庫之一,最初被稱為「 Pytorch-pretrained-BERT」。
後來,他們增加了更多的模型,如GPT-2,XLNET等。
在不到一年的時間裡,它已經成為最流行的 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工具包,是最早包含預先訓練的BERT嵌入式的庫之一。
https://gluon-nlp.mxnet.io/
那麼,在2020年,NLP又會怎樣的突破呢?
傳送門
https://towardsdatascience.com/2019-year-of-bert-and-transformer-f200b53d05b9
延伸閱讀
英偉達「暴力碾壓」谷歌:53分鐘訓練完BERT,2.2毫秒完成推理,創下NLP三項新紀錄
谷歌ALBERT模型V2+中文版來了:之前刷新NLP各大基準,現在GitHub熱榜第二
全面超越人類!Google稱霸SQuAD,BERT橫掃11大NLP測試
逆天的語言AI模型來了!編故事以假亂真,問答翻譯寫摘要都行,橫掃各大語言建模任務
作者系網易新聞·網易號「各有態度」籤約作者
— 完 —
原標題:《一文看盡2019年NLP前沿突破》
閱讀原文