從想法到實干,2018年13項NLP絕美新研究
在即將過去的 2018 年中,自然語言處理有很多令人激動的想法與工具。從概念觀點到實戰(zhàn)訓練,它們?yōu)?NLP 注入了新鮮的活力。
前一段時間,Sebastian Ruder 介紹了他心中 10 個最有影響力的想法,并且每一個都提供了具體論文與核心思想。正如 Ruder 所說,他的清單必然是主觀的,主要涵蓋了遷移學習和泛化相關的想法。其中有的想法在過去一年非常受關注,大家圍繞這些***的觀點展開了很多研究工作與實踐。而有的想法并不是當前趨勢,不過它們有可能在未來變得流行。因此,機器之心在 Ruder 介紹的基礎上,重點關注今年的前沿趨勢,并推薦一些真正好用的 NLP 新工具。
在本文中,我們會重點關注 2018 年里的 神經機器翻譯 與預訓練模型,這兩個概念真的非常 Excited!而后對于實戰(zhàn)裝備,數(shù)百種中文預訓練詞嵌入向量、BERT預訓練模型和建模框架 PyText 等工具真的令人忍不住想做一個新穎的 NLP 應用。
1. 神經機器翻譯
在 2018 年, 神經機器翻譯 似乎有了很大的改變,以前用 RNN 加上注意力機制打造的 Seq2Seq 模型好像都替換為了 Tramsformer。大家都在使用更大型的 Transformer,更高效的 Transformer 組件。例如阿里會根據(jù)最近的一些新研究對標準 Transformer 模型進行一些修正。這些修正首先體現(xiàn)在將 Transformer 中的 Multi-Head Attention 替換為多個自注意力分支,其次他們采用了一種編碼相對位置的表征以擴展自注意力機制,并令模型能更好地理解序列元素間的相對距離。
有道翻譯也采用了 Transformer,他們同樣會采取一些修正,包括對單語數(shù)據(jù)的利用,模型結構的調整,訓練方法的改進等。例如在單語數(shù)據(jù)的利用上,他們嘗試了回譯和對偶學習等策略,在模型結構上采用了相對位置表征等。所以總的而言,盡管 Transformer 在解碼速度和位置編碼等方面有一些缺點,但它仍然是當前效果***的 神經機器翻譯 基本架構。
在 Ruder 的介紹中,它非常關注兩種無監(jiān)督機器翻譯模型,它們都被接受為 ICLR 2018 論文。如果無監(jiān)督機器翻譯模型是能行得通的,那么這個想法本身就很驚人,盡管無監(jiān)督翻譯的效果很可能遠比有監(jiān)督差。在 EMNLP 2018 中,有一篇論文在無監(jiān)督翻譯上更進一步提出了很多改進,并獲得極大的提升。Ruder 筆記中提到了以下這篇論文:
-
論文:Phrase-Based & Neural Unsupervised Machine Translation
這篇論文很好地提煉出了無監(jiān)督 MT 的三個關鍵點:優(yōu)良的參數(shù)初始化、語言建模和通過回譯建模反向任務。這三種方法在其它無監(jiān)督場景中也有使用,例如建模反向任務會迫使模型達到循環(huán)一致性,這種一致性已經應用到了很多任務,可能讀者最熟悉的就是CycleGAN。該論文還對兩種語料較少的語言做了大量的實驗與評估,即英語-烏爾都語和英語-羅馬尼亞語。
無監(jiān)督 MT 的三個主要原則:A)兩種單語數(shù)據(jù)集、B)參數(shù)初始化、C)語言建模、D)回譯。
這篇論文獲得了 EMNLP 2018 的***長論文獎,它在遵循上面三個主要原則的情況下簡化了結構和損失函數(shù)。得到的模型優(yōu)于以前的方法,并且更易于訓練和調整。
2. 預訓練模型
2018 年,使用預訓練的語言模型可能是 NLP 領域最顯著的趨勢,它可以利用從無監(jiān)督文本中學習到的「語言知識」,并遷移到各種 NLP 任務中。這些預訓練模型有很多,包括 ELMo、ULMFiT、OpenAITransformer 和BERT,其中又以BERT***代表性,它在 11 項 NLP 任務中都獲得當時***的性能。不過目前有 9 項任務都被微軟的新模型超過。
機器之心曾解讀過BERT的的核心過程,它會先從數(shù)據(jù)集抽取兩個句子,其中第二句是***句的下一句的概率是 50%,這樣就能學習句子之間的關系。其次隨機去除兩個句子中的一些詞,并要求模型預測這些詞是什么,這樣就能學習句子內部的關系。***再將經過處理的句子傳入大型 Transformer 模型,并通過兩個損失函數(shù)同時學習上面兩個目標就能完成訓練。
如上所示為不同預訓練模型的架構,BERT可以視為結合了OpenAIGPT 和 ELMo 優(yōu)勢的新模型。其中 ELMo 使用兩條獨立訓練的 LSTM 獲取雙向信息,而OpenAIGPT 使用新型的 Transformer 和經典語言模型只能獲取單向信息。BERT的主要目標是在OpenAIGPT 的基礎上對預訓練任務做一些改進,以同時利用 Transformer 深度模型與雙向信息的優(yōu)勢。
這種「雙向」的來源在于BERT與傳統(tǒng)語言模型不同,它不是在給定所有前面詞的條件下預測最可能的當前詞,而是隨機遮掩一些詞,并利用所有沒被遮掩的詞進行預測。
此外,值得注意的是,最近微軟發(fā)布了一種新的綜合性模型,它在 GLUE 的 11 項基準NLP 任務中的 9 項超過了BERT,且評分也超過了BERT。除了準確率外,微軟的新模型只有 1.1 億的參數(shù)量,遠比BERT-Large 模型的 3.35 億參數(shù)量少,和BERT-Base 的參數(shù)量一樣多。
在「Microsoft D36***I & MSR AI」模型的描述頁中,新模型采用的是一種多任務聯(lián)合學習。因此所有任務都共享相同的結構,并通過多任務訓練方法聯(lián)合學習。目前新模型的信息還非常少,如果經過多任務預訓練,它也能像BERT那樣用于更廣泛的 NLP 任務,那么這樣的高效模型無疑會有很大的優(yōu)勢。
Sebastian Ruder 非常欣賞 ELMo 的創(chuàng)新性想法,它同樣也是今年的論文(NAACL 2018):
-
論文:Deep contextualized word representations (NAACL-HLT 2018)
這篇論文提出了廣受好評的 ELMo,除了令人印象深刻的實驗結果外,最吸引人的就是論文的分析部分,它剔除了各種因素的影響,并對表征所捕獲的信息進行了分析。在下圖左中語義消歧(WSD)執(zhí)行得很好,它們都表明語言模型提供的語義消歧和詞性標注(POS)表現(xiàn)都接近當前***水平。
***層和第二層雙向語言模型的語義消歧(左)和詞性標注(右)與基線模型對比的結果。
3. 常識推理數(shù)據(jù)集
將常識融入模型是 NLP 最重要的研究方向之一。然而,創(chuàng)建好的數(shù)據(jù)集并非易事,即使是流行的數(shù)據(jù)集也存在很大的偏好問題。今年已經出現(xiàn)了一些試圖教機器學習常識的數(shù)據(jù)集,如華盛頓大學的 Event2Mind 和 SWAG。但 SWAG 很快就被BERT打敗了。有代表性的研究成果包括:
-
論文:From Recognition to Cognition: Visual Commonsense Reasoning
這是***包含每個答案的基本原理(解釋)的可視化 QA 數(shù)據(jù)集。而且,回答問題需要復雜的推理。創(chuàng)作者竭盡全力解決可能出現(xiàn)的偏好,確保每個答案作為正確答案的先驗概率為 25%(每個答案在整個數(shù)據(jù)集中出現(xiàn) 4 次,其中 3 次作為錯誤答案,1 次作為正確答案);這需要利用可以計算相關性和相似性的模型來解決約束優(yōu)化問題。
給定一幅圖像、一系列地點和一個問題,模型必須回答該問題,并提供合理的推理解釋答案為什么是正確的(Zellers et al., 2018)
4.元學習
元學習 是目前機器學習領域一個令人振奮的研究趨勢,它解決的是學習如何學習的問題。元學習在少樣本學習、強化學習和機器人學方面有很多應用,其中最突出的應用是與模型無關的元學習(model-agnostic meta-learning,MAML),但在 NLP 中的成功應用卻非常少。元學習在訓練樣本有限時非常有用。有代表性的研究成果包括:
-
論文 1:Meta-Learning for Low-Resource Neural Machine Translation
作者利用 MAML 來學習一個好的用于翻譯的初始化,將每個語言對看成一個獨立的元任務。資源較少的語言或許是元學習在 NLP 領域最有應用價值的場景。將多語言遷移學習(如多語言BERT)、無監(jiān)督學習和元學習相結合是一個有前景的研究方向。
遷移學習、多原因遷移學習和元學習之間的差異。實線:初始化的學習。虛線:微調路徑。
-
論文 2:Meta-Learning a Dynamical Language Model
作者提出,用于優(yōu)化神經網(wǎng)絡模型的元學習器的行為和循環(huán)神經網(wǎng)絡類似,它會提取一系列模型訓練過程中的參數(shù)和梯度作為輸入序列,并根據(jù)這個輸入序列計算得到一個輸出序列(更新后的模型參數(shù)序列)。他們在論文中詳細描述了該相似性,并研究了將元學習器用于神經網(wǎng)絡語言模型中,以實現(xiàn)中期記憶:經過學習,元學習器能夠在標準 RNN(如 LSTM)的權重中,編碼中期記憶(除了短期記憶在 LSTM 隱藏狀態(tài)中的傳統(tǒng)編碼方式以外)。
他們的元學習語言模型由 3 層記憶層級組成,自下而上分別是:標準 LSTM、用于更新 LSTM權重以存儲中期記憶的元學習器,以及一個長期靜態(tài)記憶。他們發(fā)現(xiàn),元學習語言模型可以通過訓練來編碼最近輸入的記憶,就像一篇維基百科文章的開始部分對預測文章的結尾部分非常有幫助一樣。
5. 魯棒無監(jiān)督方法
今年,我們觀察到,跨語言嵌入方法在語言相似性低時會失效。這是遷移學習中的常見現(xiàn)象,源語言和目標語言設置(例如,域適應中的域、持續(xù)學習和多任務學習中的任務)之間存在差異,導致模型退化或失效。因此,使模型對這些變化更加魯棒非常重要。有代表性的研究成果包括:
-
論文:A robust self-learning method for fully unsupervised cross-lingual mappings of word embeddings
這篇論文根據(jù)其理解構建了一個更好的初始化,而沒有使用元學習作為初始化。特別地,他們將兩種語言中擁有相似詞分布的單詞配對。這是從分析中利用領域知識和 insight 以使模型更加魯棒的***范例。
三個單詞的相似性分布:與不相關的單詞(「two」和「cane」(狗))相比,等效翻譯(「two」和「due」)有更加相似的詞分布。(Artexte et al. 2018 http://www.aclweb.org/anthology/P18-1073)
6. 理解表征
今年,人們在更好地理解表征方面做了很多工作。特別地,《Fine-grained Analysis of Sentence Embeddings Using Auxiliary Prediction Tasks》這篇論文提出了「診斷分類器」(度量學習到的表征是否能預測特定屬性的任務),之后在其它研究中變得常見,如《What you can cram into a single vector: Probing sentence embeddings for linguistic properties》。有代表性的研究成果包括:
-
論文:Dissecting Contextual Word Embeddings: Architecture and Representation
這篇論文在更好理解預訓練語言模型表征方面做出了很大貢獻。他們廣泛地研究了精心設計的無監(jiān)督和有監(jiān)督任務上學習到的單詞和跨度表征。結果發(fā)現(xiàn):預訓練表征會在較低層學習到與低級形態(tài)和句法任務相關的任務,在較高層學習到更大范圍的語義。對我而言,該研究表明了預訓練語言模型確實能捕捉文本的相似屬性,正如計算機視覺模型在 ImageNet 上預訓練后,能捕捉圖像之間的相似屬性。
BiLSTM 和 Transformer 的預訓練表征的每一層的性能,從左到右依次是:POS 標記、選區(qū)解析和無監(jiān)督共指解析 (Peters et al. 2018 http://aclweb.org/anthology/D18-1179 )。
7. 輔助任務
在很多設置中,我們都看到人們越來越多使用帶有仔細選擇的輔助任務的多任務學習方法。其中最重要的一個案例是BERT。其使用了下一句預測來實現(xiàn)優(yōu)越性能(近期被用在 Skip-thoughts 以及 Quick-thoughts 等)。有代表性的研究成果包括:
-
論文 1:Syntactic Scaffolds for Semantic Structures
這篇論文通過為每個跨度預測對應的句法成分類型,以此提出了一種預訓練跨度表征的輔助任務。盡管在概念上很簡單,該輔助任務可以在跨度級預測任務中取得極大提升,例如語義角色標注和共指解析等。該論文表明,通過目標任務在所需級別學習的專用表征有極大的用處。
-
論文 2:pair2vec: Compositional Word-Pair Embeddings for Cross-Sentence Inference
依據(jù)相似的思路,這篇論文通過***化詞對以及語境的逐點互信息預訓練詞對表征。相比更加通用的表征(例如語言建模),這鼓勵模型學習更有意義的詞對表征。這些預訓練表征在諸如 SQuAD、和 MultiNLI 等需要跨句推理的任務中很有效。我們可以期待看到更多可捕捉適用于特定下游任務的預訓練模型,并且和更加通用的任務互補(例如語言建模)。
OntoNotes 的句法、***語料庫和共指標注。***語料庫SRL參數(shù)和共指在句法成分之上標注。幾乎每個參數(shù)都與句法成分有關 (Swayamdipta et al., 2018 http://aclweb.org/anthology/D18-1412 )
8.半監(jiān)督學習結合遷移學習
最近,遷移學習取得***進展,我們不應該忘記使用目標任務特定數(shù)據(jù)更明確的方式。其實,預訓練表征與多種形式的半監(jiān)督學習是互補的。已經有研究者探索半監(jiān)督學習的一個特定類別——自標注方法。有代表性的研究包括:
-
論文:Semi-Supervised Sequence Modeling with Cross-View Training
這篇論文表明,一個概念上非常簡單的想法——即確保對不同輸入視圖的預測與主模型的預測一致——可以在一系列不同的任務中獲得收益。這一想法與 word dropout 類似,但允許利用未標注數(shù)據(jù)來加強模型的魯棒性。與 mean teacher 等其他 self-ensembling 模型相比,它是專門為特定 NLP 任務設計的。
輔助預測模塊看到的輸入:輔助 1:They traveled to __________________. 輔助 2:They traveled to Washington _______. 輔助 3: _____________ Washington by plane. 輔助 4: ________________________ by plane
9. 利用大型文本的問答和推理
在一系列新的問答(QA)數(shù)據(jù)集的幫助下,問答系統(tǒng)取得了很多進展。除對話問答和多步驟推理之外,問答系統(tǒng)***挑戰(zhàn)性的一個方面是合成敘述和含有大量信息的本文。有代表性的研究包括:
-
論文:The NarrativeQA Reading Comprehension Challenge
本文作者根據(jù)對整個電影劇本和書籍的問答提出了一個頗具挑戰(zhàn)性的 QA 數(shù)據(jù)集。雖然目前的方法仍無法完成這項任務,但模型可以選擇使用摘要(而不是整本書)作為上下文,選擇答案(而不是生成答案),以及使用 IR 模型的輸出。這些變體提高了任務的可行性,使得模型可以逐漸擴展到完整的語境。
QA 數(shù)據(jù)集對比。
10. 歸納偏向
CNN 中的卷積、正則化、dropout 以及其他機制等歸納偏向都是神經網(wǎng)絡模型做為正則化項的核心部分,也使得模型采樣更為高效。然而,提出一種普遍可用的歸納偏向并把它融入到模型中非常具有挑戰(zhàn)性。有代表性的研究成果包括:
-
論文 1:sequence classification with human attention (CoNLL 2018)
該論文提出使用來自人類眼球追蹤語料庫的人類注意力來正則化RNN 中的注意。如今許多 Transformers 這樣的現(xiàn)有模型都在使用 attention,找到更高效訓練的合適方式是很重要的方向。也很高興看到人類語言學習能幫助我們改進計算模型。
-
論文 2:Linguistically-Informed Self-Attention for Semantic Role Labeling (EMNLP 2018)
該論文有很多喜人的地方:在句法與語義任務上同時訓練一個 Transformer;訓練時加入高質量解析的能力以及領域外評估。通過訓練一個注意力 head 來關注每個 token 的 syntactic parents,這篇論文也正則化了 Transformer 的多 head 注意力,使其對句法更為敏感。我們未來可能會看到更多 Transformer 注意 head 示例,做為專注輸入特定方面的輔助詞預測器。
過去十年的 PropBank 語義角色標記。在領域外數(shù)據(jù)上,Linguistically-Informed Self-Attention (LISA) 方法與其他方法的對比。
不論是采用 Mask 的語言模型還是通過回譯的無監(jiān)督機器翻譯,這 10 個想法都非常優(yōu)美。但是在實際應用中,我們更希望直接使用已有的工具構建高效應用,只有這樣,這些想法才能轉化為真正有意思的東西。
11. 上百種預訓練中文詞向量
做自然語言處理,詞嵌入基本是繞不開的步驟,各種任務都需要歸結到詞層面才能繼續(xù)計算。因此對于國內自然語言處理的研究者而言,中文詞向量語料庫是需求很大的資源。為此,北京師范大學等機構的研究者開源了「中文詞向量語料庫」,該庫包含經過數(shù)十種用各領域語料(百度百科、維基百科、人民日報 1947-2017、知乎、微博、文學、金融、古漢語等)訓練的詞向量,涵蓋各領域,且包含多種訓練設置。
中文詞向量項目地址: https://github.com/Embedding/Chinese-Word-Vectors
該項目提供使用不同表征(稀疏和密集)、上下文特征(單詞、n-gram、字符等)以及語料庫訓練的中文詞向量(嵌入)。我們可以輕松獲得具有不同屬性的預訓練向量,并將它們用于各類下游任務。
12.BERT開源實現(xiàn)
盡管如前所述BERT的效果驚人,但預訓練所需要的計算力同樣驚人,一般的開發(fā)者基本就不要想著能復現(xiàn)了。BERT的作者在 Reddit 上也表示預訓練的計算量非常大,Jacob 說:「OpenAI的 Transformer 有 12 層、768 個隱藏單元,他們使用 8 塊 P100 在 8 億詞量的數(shù)據(jù)集上訓練 40 個 Epoch 需要一個月,而BERT-Large 模型有 24 層、2014 個隱藏單元,它們在有 33 億詞量的數(shù)據(jù)集上需要訓練 40 個 Epoch,因此在 8 塊 P100 上可能需要 1 年?16 Cloud TPU 已經是非常大的計算力了。」
但是,谷歌團隊開源了BERT的預訓練模型,我們可以將它們用于不同的 NLP 任務。這節(jié)省了我們大量計算力,同時還能提升已有模型的效果,因此做 NLP 任務前,你可以先用預訓練的BERT試試水?
BERT實現(xiàn)地址: https://github.com/google-research/bert
其實目前已經有很多開發(fā)者將BERT預訓練模型應用到它們自己的項目中,包括抽取句向量、句子相似性判斷或情感分析等。
13. Facebook 開源 NLP 建??蚣?PyText,從論文到產品部署只需數(shù)天
為了降低人們創(chuàng)建、部署自然語言處理系統(tǒng)的難度,F(xiàn)acebook 開源了一個建模框架—— PyText ,它模糊了實驗與大規(guī)模部署之間的界限。PyTex 是 Facebook 正在使用的主要自然語言處理(NLP)建??蚣?,每天為 Facebook 及其應用程序系列的用戶提供超過 10 億次 AI 任務處理。這一框架基于 PyTorch,可以 1)簡化工作流程,加快實驗進度;2)提供一大批預構建的模型架構和用于文本處理和詞匯管理的工具,以促進大規(guī)模部署;3)提供利用 PyTorch 生態(tài)系統(tǒng)的能力,包括由 NLP 社區(qū)中的研究人員、工程師預構建的模型和工具。利用該框架,F(xiàn)acebook 在幾天內就實現(xiàn)了 NLP 模型從理念到完整實施的整個過程,還部署了依賴多任務學習的復雜模型。
Yann LeCun 對此介紹道,「PyText 是一個工業(yè)級的開源 NLP 工具包,可用于在 PyTorch 中開發(fā) NLP 模型,并通過 ONNX 部署。其預訓練模型包括文本分類、序列標注等。」