摘要:越來越火的NLP到底經(jīng)歷了什么?
本文擴(kuò)展了Herman Kamper和我在2018年深度學(xué)習(xí)Indaba組織的自然語言處理前沿課程。整個(gè)課程的幻燈片都可以在這里找到,這篇文章將主要討論NLP中基于神經(jīng)網(wǎng)絡(luò)方法的近期進(jìn)展。
免責(zé)聲明:本文嘗試將大約15年NLP的發(fā)展歷程濃縮為今天最相關(guān)的八個(gè)里程碑,因此遺漏了許多相關(guān)和重要的發(fā)展。特別是,它嚴(yán)重偏向于當(dāng)前的神經(jīng)方法,這可能給人留下此期間沒有其他有影響力方法的錯(cuò)誤影響。
2001年-神經(jīng)語言模型
語言建模是在給定前面的單詞的情況下預(yù)測文本中的下一個(gè)單詞的任務(wù)。 它可能是最簡單的語言處理任務(wù),具有實(shí)際應(yīng)用,如智能鍵盤和電子郵件響應(yīng)建議(Kannan et al.,2016)。語言建模有著豐富的歷史?;?a target="_blank" rel="nofollow">n-gram的經(jīng)典方法采用平滑處理看不見的n-gram(Kneser&Ney,1995)。Bengio等人于2001年提出了第一種神經(jīng)語言模型,一種前饋神經(jīng)網(wǎng)絡(luò),如下圖1所示。

該模型把n個(gè)可以在表C中查找的先前單詞向量表示作為輸入?,F(xiàn)在,這種向量被稱為詞嵌入。這些詞嵌入被連接并送入隱藏層,然后將其輸出提供給softmax層。想要了解更多該模型的信息,請查看此文章。
最近,前饋神經(jīng)網(wǎng)絡(luò)已被用于語言建模的遞歸神經(jīng)網(wǎng)絡(luò)(RNN; Mikolov等人,2010)和長短期記憶網(wǎng)絡(luò)(LSTM; Graves,2013)所取代。近年來已經(jīng)提出了許多經(jīng)典LSTM的新語言擴(kuò)展模型(請參閱此頁面以獲得概述)。盡管有這些發(fā)展,但經(jīng)典的LSTM仍然是一個(gè)強(qiáng)大的基線(Melis等,2018)。即使Bengio等人的經(jīng)典前饋神經(jīng)網(wǎng)絡(luò)在某些環(huán)境中也與更復(fù)雜的模型競爭,但這些通常只學(xué)會考慮最近的詞(Daniluk等,2017)。如何理解這些語言模型捕獲的信息是一個(gè)活躍的研究領(lǐng)域(Kuncoro等,2018; Blevins等,2018)。
語言建模通常是應(yīng)用RNN時(shí)的首選訓(xùn)練場,并成功捕捉到了想象力,許多人通過Andrej的博客文章開始了解。語言建模是無監(jiān)督學(xué)習(xí)的一種形式,Yann LeCun也將預(yù)測性學(xué)習(xí)作為獲取常識的先決條件(參見NIPS 2016的Cake幻燈片)。 關(guān)于語言建模最顯著的方面可能是,盡管它很簡單,但它是本文討論的許多后期進(jìn)展的核心:
詞嵌入:word2vec的目標(biāo)是簡化語言建模;
序列到序列模型:這種模型通過一次預(yù)測一個(gè)詞來生成輸出序列;
預(yù)訓(xùn)練語言模型:這些方法使用語言模型中的表示來進(jìn)行遷移學(xué)習(xí);
這反過來意味著NLP中許多最重要的最新進(jìn)展減少為一種語言建模形式。 為了做“真正的”自然語言理解,僅僅從原始形式的文本中學(xué)習(xí)可能是不夠的,我們將需要新的方法和模型。
2008-多任務(wù)學(xué)習(xí)
多任務(wù)學(xué)習(xí)是在多個(gè)任務(wù)上訓(xùn)練的模型之間共享參數(shù)的一般方法。在神經(jīng)網(wǎng)絡(luò)中,這可以通過綁定不同層的權(quán)重來輕松實(shí)現(xiàn)。多任務(wù)學(xué)習(xí)的想法在1993年由Rich Caruana首次提出,并應(yīng)用于道路跟蹤和肺炎預(yù)測(Caruana,1998)。直觀地說,多任務(wù)學(xué)習(xí)鼓勵(lì)模型學(xué)習(xí)對許多任務(wù)有用的表示。特別對于學(xué)習(xí)一般的低級表示,集中模型的注意力或在有限量的訓(xùn)練數(shù)據(jù)的設(shè)置中特別有用。有關(guān)多任務(wù)學(xué)習(xí)的更全面概述,請查看此文章。
Collobert和Weston于2008年首次將多任務(wù)學(xué)習(xí)應(yīng)用于NLP的神經(jīng)網(wǎng)絡(luò)。 在他們的模型中,查找表(或詞嵌入矩陣)在兩個(gè)在不同任務(wù)上訓(xùn)練的模型之間共享,如下面的圖2所示。

共享詞嵌入使模型能夠在詞嵌入矩陣中協(xié)作和共享一般的低級信息,這通常構(gòu)成模型中最大數(shù)量的參數(shù)。Collobert和Weston在2008年的論文中證明了它在多任務(wù)學(xué)習(xí)中的應(yīng)用,它引領(lǐng)了諸如預(yù)訓(xùn)練詞嵌入和使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)之類的思想,這些思想僅在過去幾年中被廣泛采用。它贏得了ICML 2018的時(shí)間考驗(yàn)獎(參見此時(shí)的時(shí)間考驗(yàn)獎?wù)撐?/a>)。
多任務(wù)學(xué)習(xí)現(xiàn)在用于各種NLP任務(wù),并且利用現(xiàn)有或“人工”任務(wù)已成為NLP指令集中的有用工具。有關(guān)不同附加任務(wù)的概述,請查看此文章。雖然通常預(yù)先定義參數(shù)的共享,但是在優(yōu)化過程期間也可以學(xué)習(xí)不同的共享模式(Ruder等,2017)。隨著模型越來越多地在多項(xiàng)任務(wù)中被評估來評估其泛化能力,多任務(wù)學(xué)習(xí)越來越重要,最近提出了多任務(wù)學(xué)習(xí)的專用基準(zhǔn)(Wang et al,2018; McCann et al,2018)。
2013-詞嵌入
文本的稀疏向量表示,即所謂的詞袋模型,在NLP中具有悠久的歷史。正如我們在上面所看到的,早在2001年就已經(jīng)使用了詞或詞嵌入的密集向量表示。 Mikolov等人在2013年提出的主要創(chuàng)新,是通過移動隱藏層和近似目標(biāo)來使這些詞嵌入的訓(xùn)練更有效率。雖然這些變化本質(zhì)上很簡單,但它們與高效的word2vec一起實(shí)現(xiàn)了大規(guī)模的詞嵌入訓(xùn)練。
Word2vec有兩種模式,可以在下面的圖3中看到:連續(xù)的詞袋(CBOW)和skip-gram。它們的目標(biāo)不同:一個(gè)基于周圍的詞預(yù)測中心詞,而另一個(gè)則相反。

雖然這些嵌入在概念上與使用前饋神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的嵌入技術(shù)沒有什么不同,但是對非常大的語料庫的訓(xùn)練使它們能夠捕獲諸如性別,動詞時(shí)態(tài)和國家–首都關(guān)系之類的詞之間的某些關(guān)系,由圖4可知:

這些關(guān)系及其背后的意義引發(fā)了對嵌入詞的初步興趣,許多研究調(diào)查了這些線性關(guān)系的起源(Arora等,2016; Mimno&Thompson,2017; Antoniak&Mimno,2018; Wendlandt等,2018))。然而,使用預(yù)訓(xùn)練嵌入作為初始化的固定詞嵌入,把它作為當(dāng)前NLP的主要內(nèi)容被證明可以提高各種下游任務(wù)的性能。
雖然捕獲的關(guān)系word2vec具有直觀且?guī)缀跎衿娴男阅?,但后來的研究表明word2vec沒有任何固有的特殊性:通過矩陣分解也可以學(xué)習(xí)詞嵌入(Pennington等,2014; Levy&Goldberg,2014)和通過適當(dāng)?shù)恼{(diào)整,經(jīng)典的矩陣分解方法(如SVD和LSA)可以獲得類似的結(jié)果(Levy等,2015)。
從那時(shí)起,許多工作已經(jīng)開始探索詞嵌入的不同方面,可以通過這篇文章了解一些趨勢和未來方向。盡管有許多發(fā)展,但word2ve仍然是如今被廣泛使用的一種流行的選擇。Word2vec的范圍甚至超出了詞級別:帶有負(fù)抽樣的skip-gram,一個(gè)基于本地環(huán)境學(xué)習(xí)嵌入的方便目標(biāo),已被應(yīng)用于學(xué)習(xí)句子的表示(Mikolov&Le,2014; Kiros et al.,2015)-甚至超越NLP,應(yīng)用到網(wǎng)絡(luò)(Grover&Leskovec,2016)和生物序列(Asgari&Mofrad,2015)等。
一個(gè)特別令人興奮的方向是將不同語言的詞嵌入投影到同一空間中以實(shí)現(xiàn)(零射擊)跨語言轉(zhuǎn)移。越來越有可能以完全無監(jiān)督的方式(至少對于類似語言)學(xué)習(xí)良好的投影,這開啟了低資源語言和無監(jiān)督機(jī)器翻譯的應(yīng)用(Lample等,2018; Artetxe等,2018)。請查看(Ruder等,2018)的概述。
2013年-NLP的神經(jīng)網(wǎng)絡(luò)
2013年和2014年是神經(jīng)網(wǎng)絡(luò)模型開始應(yīng)用于NLP的標(biāo)志年份。三種主要類型的神經(jīng)網(wǎng)絡(luò)被廣泛使用:遞歸神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)。
遞歸神經(jīng)網(wǎng)絡(luò)(RNN)是處理NLP中普遍存在的動態(tài)輸入序列問題的明顯選擇。 Vanilla RNNs(Elman,1990)很快被經(jīng)典的長短期記憶網(wǎng)絡(luò)(Hochreiter&Schmidhuber,1997)所取代,后者證明其對消失和爆炸梯度問題更具彈性。在2013年之前,RNN仍然被認(rèn)為很難訓(xùn)練,Ilya Sutskever的博士論文是改變這種現(xiàn)狀的一個(gè)關(guān)鍵例子。LSTM細(xì)胞可視化可以在下面的圖5中看到。雙向LSTM(Graves等,2013)通常用于處理左右上下文。

隨著卷積神經(jīng)網(wǎng)絡(luò)(CNN)被廣泛用于計(jì)算機(jī)視覺,它們也開始應(yīng)用于文本(Kalchbrenner等,2014; Kim等,2014)。用于文本的卷積神經(jīng)網(wǎng)絡(luò)僅在兩個(gè)維度上操作,其中濾波器僅需要沿時(shí)間維度移動。下面的圖6顯示了NLP中使用的典型CNN。

卷積神經(jīng)網(wǎng)絡(luò)的一個(gè)優(yōu)點(diǎn)是它們比RNN更可并行化,因?yàn)槊總€(gè)時(shí)間步的狀態(tài)僅取決于本地環(huán)境(通過卷積運(yùn)算)而不是像RNN取決過去所有狀態(tài)。CNN可以使用擴(kuò)張卷積擴(kuò)展到更寬的感受野,以捕捉更廣泛的背景(Kalchbrenner等2016)。 CNN和LSTM也可以組合和堆疊,并且可以使用卷積來加速LSTM。
RNN和CNN都將語言視為一個(gè)序列。然而,從語言學(xué)的角度來看,語言本質(zhì)上是等級的:單詞被組成高階短語和子句它們本身可以根據(jù)一組生產(chǎn)規(guī)則遞歸地組合。將句子視為樹而不是序列的語言啟發(fā)思想產(chǎn)生了遞歸神經(jīng)網(wǎng)絡(luò),這可以在下面的圖7中看到:

與從左到右或從右到左處理句子的RNN相比,遞歸神經(jīng)網(wǎng)絡(luò)從下到上構(gòu)建序列的表示。在樹的每個(gè)節(jié)點(diǎn)處,通過組合子節(jié)點(diǎn)的表示來計(jì)算新表示。由于樹也可以被視為在RNN上施加不同的處理順序,因此LSTM自然地?cái)U(kuò)展到樹。
RNN和LSTM不僅僅可以被擴(kuò)展來使用分層結(jié)構(gòu),而且不僅可以根據(jù)本地語言學(xué)習(xí)詞嵌入,而且可以基于語法背景來學(xué)習(xí)詞嵌入(Levy&Goldberg,2014);語言模型可以基于句法堆棧生成單詞(Dyer et al。,2016); 圖形卷積神經(jīng)網(wǎng)絡(luò)可以在樹上運(yùn)行(Bastings等,2017)。
本文作者:【方向】
作者:阿里云云棲社區(qū)
鏈接:http://www.itdecent.cn/p/b140f86906bd
來源:簡書
簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處。