【技术综述】深度学习在自然语言处理中的应用发展史
本篇介紹深度學習在自然語言處理(NLP)中的應用,從詞向量開始,到最新最強大的BERT等預訓練模型,梗概性的介紹了深度學習近20年在NLP中的一些重大的進展。
作者&編輯 | 小Dream哥?
在深度學習之前,用于解決NLP問題的機器學習方法一般都基于淺層模型(如SVM和logistic 回歸),這些模型都在非常高維和稀疏的特征(one-hot encoding)上進行訓練和學習,出現(xiàn)了維度爆炸等問題難以解決。并且基于傳統(tǒng)機器學習的NLP系統(tǒng)嚴重依賴手動制作的特征,它們極其耗時,且通常并不完備。
而近年來,基于稠密向量表征的神經網絡在多種NLP任務上得到了不錯結果。這一趨勢取決了詞嵌入和深度學習方法的成功;并且深度學習使多級自動特征表征學習成為可能。因此,本文從詞的分布式表征開始介紹深度學習在NLP中的應用。
1 分布式詞表征(詞向量)的實現(xiàn)?
通常來講,在2003年的《A Neural Probabilistic Language Model》中Bengio等人提出了神經語言模型(NNLM),而它的副產品,詞向量,可以實現(xiàn)詞的分布式表征。該文通常被認為是深度學習在自然語言處理中應用的開始。提出伊始,由于屆時計算機計算能力的限制,該網絡并不能較好的得到訓練。因此,這一篇成果,在當時并沒有得到相當?shù)年P注。其神經網絡結構如下:
2008年Collobert和Weston展示了第一個能有效利用預訓練詞嵌入的研究工作,他們提出的神經網絡架構,構成了當前很多方法的基礎。這一項研究工作還率先將詞嵌入作為 NLP 任務的高效工具。
不過詞嵌入真正走向NLP主流還是Mikolov 等人在 2013 年做出的研究《Distributed Representations of Words and Phrases and their Compositionality》。
Mikolov 等研究者在這篇論文中提出了連續(xù)詞袋模型CBOW和 Skip-Gram 模型,通過引入負采樣等可行性的措施,這兩種方法都能學習高質量的詞向量。CBOW模型的網絡結構如下:
分布式的詞表征的一大好處是實現(xiàn)了語義的合成性,即兩個詞向量相加得到的結果是語義相加的詞,例如[man]+[royal]=[king]。
這種語義合成性的理論依據(jù)最近已經由Gittens et al. 在2017年給出,他們表示只有保證某些特定的假設才能滿足語義合成性,例如詞需要在嵌入空間中處于均勻分布。
GloVe是另外一個很有名的獲得詞向量的方法,在有些情況下,CBOW和Skip-Gram采用的交叉熵損失函數(shù)有劣勢。因此GloVe采用了平方損失。同時,它基本上是一種基于詞統(tǒng)計的模型,它令詞向量擬合預先基于整個數(shù)據(jù)集計算得到的全局統(tǒng)計信息,從而學習高效的詞表征。
2 NLP中特征提取方法的進化
隨著詞分布式表征的問題得到了有效的解決,人們開始思考如何提取詞序列中高級的語義信息,然后才能將這些提取到的語義信息,應用到下游的NLP任務中,例如情感分析、問答系統(tǒng)、機器翻譯以及自動摘要等。
最早用來對自然語言詞序列進行特征提取的,其實是卷積神經網絡(CNN)。這主要歸因于卷積神經網絡在圖像領域取得的驕人成績。
使用 CNN 進行句子建模可以追溯到Collobert和Weston在2008年的研究,他們使用多任務學習為不同的NLP任務輸出多個預測,如詞性標注、語塊分割、命名實體標簽和語義相似詞等。其中查找表可以將每一個詞轉換為一個用戶自定義維度的向量。因此通過查找表,n個詞的輸入序列 {s_1,s_2,... s_n } 能轉換為一系列詞向量 {w_s1, w_s2,... w_sn}。
在Collobert 2011年的研究中,他擴展了以前的研究,并提出了一種基于CNN的通用框架來解決大量NLP任務,這兩個工作都令NLP研究者嘗試在各種任務中普及 CNN架構。CNN具有從輸入句子抽取n-gram特征的能力,因此它能為下游任務提供具有句子層面信息的隱藏語義表征。
因為語言序列常常具有長程性,需要記憶很早時候的輸入信息,CNN并不具備這種能力。這個時候,循環(huán)神經網絡(RNN)網絡被提出。
RNN的思路是處理序列信息。“循環(huán)”表示RNN模型對序列中的每一個實例都執(zhí)行同樣的任務,并且權重共享,從而使輸出依賴于之前的計算和結果。
通常,RNN通過將token挨個輸入到循環(huán)單元中,來生成表示序列的固定大小向量。一定程度上,RNN對之前的計算有“記憶”,并在當前的處理中使用對之前的記憶。該模板天然適合很多NLP 任務,如語言建模、機器翻譯、語音識別、圖像字幕生成。因此近年來,RNN在NLP任務中逐漸流行。
但是RNN容易出現(xiàn)梯度消失和爆炸的問題,因而其改進版本LSTM和GRU被提出來了。
LSTM比簡單RNN多了“遺忘門”,其獨特機制幫助該網絡克服了梯度消失和梯度爆炸問題。與原版RNN不同,LSTM允許誤差通過無限數(shù)量的時間步進行反向傳播。它包含三個門:輸入門、遺忘門和輸出門,并通過結合這三個門來計算隱藏狀態(tài)。另一個門控RNN變體是GRU,復雜度更小,其在大部分任務中的實驗性能與LSTM類似。GRU包括兩個門:重置門和更新門,并像沒有記憶單元的 LSTM那樣處理信息流。因此,GRU不加控制地暴露出所有的隱藏內容。由于GRU的復雜度較低,它比LSTM更加高效。
在llya Sutskever等人2014年的研究《Sequence to Sequence Learning with Neural Networks》中,作者提出了一種通用深度LSTM編碼器-解碼器框架,可以實現(xiàn)序列之間的映射。使用一個LSTM將源序列編碼為定長向量,源序列可以是機器翻譯任務中的源語言、問答任務中的問題或對話系統(tǒng)中的待回復信息。然后將該向量作為另一個 LSTM解碼器的初始狀態(tài)。在推斷過程中,解碼器逐個生成token,同時使用最后生成的token更新隱藏狀態(tài)。
傳統(tǒng)編碼器-解碼器框架的一個潛在問題是:有時編碼器會強制編碼可能與目前任務不完全相關的信息。這個問題在輸入過長或信息量過大時也會出現(xiàn),選擇性編碼是不可能的。因此,能夠根據(jù)編碼器編碼內容動態(tài)解碼內容的注意力機制(Attention)得到提出。
《Neural Machine Translation by Jointly Learning to Align and Translate》首次將注意力機制應用到機器翻譯任務,尤其改進了在長序列上的性能。該論文中,關注輸入隱藏狀態(tài)序列的注意力信號由解碼器最后的隱藏狀態(tài)的多層感知機決定。通過在每個解碼步中可視化輸入序列的注意力信號,可以獲得源語言和目標語言之間的清晰對齊。
但是RNN及其優(yōu)化變種,因為都要按時序輸入,都存在編碼效率低下的問題。Transformer這種基于self-attention機制的強大特征提取器應運而生。《Attention Is All You Need》提出了Transformer,它完全去除了編碼步中的循環(huán)和卷積,僅依賴注意力機制來捕捉輸入和輸出之間的全局關系。因此,整個架構更加并行化,在翻譯、解析等任務上訓練得到積極結果所需的時間也更少。
3 NLP中的預訓練模型
訓練得到的詞向量表征的詞語之間的信息其實有限。詞向量一個難以解決的問題就是多義詞的問題,例如“bank”在英文中有“河岸”和“銀行”兩種完全不同意思,但是在詞向量中確實相同的向量來表征,這顯然不合理。
2017年,為了解決這個問題,ELMO模型在“Deep contextualized word representation”被提出。
ELMO的本質思想是:用事先訓練好的語言模型學好一個單詞的Word Embedding,此時多義詞無法區(qū)分,不過這沒關系。在實際使用Word Embedding的時候,單詞特定的上下文就可以知道,這個時候模型可以根據(jù)上下文單詞的語義去調整單詞的Word Embedding表示,這樣經過調整后的Word Embedding更能表達在這個上下文中的具體含義,自然也就能克服多義詞的問題。
從ELMO開始,這種先預訓練,在實際應用時再fine-Tune的模式就開始流行起來了。我們再看ELMO,通過雙向語言模型,能夠學到較豐富的語義信息。但其用的是LSTM作為特征抽取器,在特征抽取能力上較弱。
2018年,Generative Pre-Training(GPT)采用單向語言模型,用Transformer作為特征抽取器,取得了非常不錯的效果,但由于主創(chuàng)人員營銷能力欠佳,并沒有像下面這一個主角一樣,在NLP領域掀起滔天巨浪。
2018年10月,谷歌推出BERT(Bidirectional Encoder Representation from Transformers)模型,刷新了幾乎所有NLP任務的榜單,一時風頭無兩。仔細看BERT的實現(xiàn),其與GPT的主要差別在于,BERT用的“雙向語言模型”,它通過MASK掉預料中的部分詞再重建的過程來學習預料中詞語序列中的語義表示信息,同樣采用Transformer作為特征抽取器。BERT的出現(xiàn),因其效果太好,幾乎讓其他所有的NLP工作都黯然失色。
2019年2月openAI用更大的模型,規(guī)模更大質量更好的數(shù)據(jù)推出了GPT2.0,其語言生成能力令人驚嘆。
目前來看,出彩的工作都是基于BERT和GPT的改進工作。在2019年6月,XLNet: Generalized Autoregressive Pretraining for Language Understanding誕生,其基于BERT和GPT等兩類預訓練模型來進行改進,分別吸取了兩類模型的長處,獲得的很好的效果。
需要注意的是,所有的預訓練模型都是無監(jiān)督的,這意味著,模型的數(shù)據(jù)來源是廉價而且數(shù)量巨大的。因為XLNET在訓練時一直是under-fitting的,因此即使是通過增加數(shù)據(jù)量,都還能提升NLP預訓練模型的效果。這無疑是振奮人心的。
總結
以上大體上介紹了深度學習在自然語言處理領域的一些標志性進展。可預見的是,現(xiàn)階段是NLP最好的時代,后續(xù)一段時間內,會有更多更好的模型出現(xiàn),不斷刷新各個任務的"state of the art"。
NLP群推薦
有三AI建立了一個NLP群,便于有志者相互交流。現(xiàn)人數(shù)較多,不便貼二維碼。感興趣的同學可以微信搜索jen104,備注"加入有三AI NLP群"。
有三AI夏季劃
有三AI夏季劃進行中,歡迎了解并加入,系統(tǒng)性成長為中級CV算法工程師。
轉載文章請后臺聯(lián)系
侵權必究
往期精選
【NLP】自然語言處理專欄上線,帶你一步一步走進“人工智能技術皇冠上的明珠”。
【NLP】用于語音識別、分詞的隱馬爾科夫模型HMM
【NLP】用于序列標注問題的條件隨機場(Conditional Random Field, CRF)
【NLP】 NLP專欄欄主自述,說不出口的話就交給AI說吧
總結
以上是生活随笔為你收集整理的【技术综述】深度学习在自然语言处理中的应用发展史的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【NLP】经典分类模型朴素贝叶斯解读
- 下一篇: 【知识星球】做作业还能赢奖金,传统图像/