一文了解天然語言處理神經史(上)

摘要: 愈來愈火的NLP到底經歷了什麼?html

本文擴展了Herman Kamper和我在2018年深度學習Indaba組織的天然語言處理前沿課程。整個課程的幻燈片均可以在這裏找到,這篇文章將主要討論NLP中基於神經網絡方法的近期進展。git

免責聲明:本文嘗試將大約15年NLP的發展歷程濃縮爲今天最相關的八個里程碑,所以遺漏了許多相關和重要的發展。特別是,它嚴重偏向於當前的神經方法,這可能給人留下此期間沒有其餘有影響力方法的錯誤影響。github

2001-神經語言模型網絡

語言建模是在給定前面的單詞的狀況下預測文本中的下一個單詞的任務。 它多是最簡單的語言處理任務,具備實際應用,如智能鍵盤和電子郵件響應建議(Kannan et al.,2016)。語言建模有着豐富的歷史。基於n-gram的經典方法採用平滑處理看不見的n-gram(Kneser&Ney,1995)。Bengio等人於2001年提出了第一種神經語言模型,一種前饋神經網絡,以下圖1所示。ide

該模型把n個能夠在表C中查找的先前單詞向量表示做爲輸入。如今,這種向量被稱爲詞嵌入。這些詞嵌入被鏈接並送入隱藏層,而後將其輸出提供給softmax層。想要了解更多該模型的信息,請查看此文章工具

最近,前饋神經網絡已被用於語言建模的遞歸神經網絡(RNN; Mikolov等人,2010)和長短時間記憶網絡(LSTM; Graves,2013)所取代。近年來已經提出了許多經典LSTM的新語言擴展模型(請參閱此頁面以得到概述)。儘管有這些發展,但經典的LSTM仍然是一個強大的基線(Melis等,2018)。即便Bengio等人的經典前饋神經網絡在某些環境中也與更復雜的模型競爭,但這些一般只學會考慮最近的詞(Daniluk等,2017)。如何理解這些語言模型捕獲的信息是一個活躍的研究領域(Kuncoro等,2018; Blevins等,2018)。post

語言建模一般是應用RNN時的首選訓練場,併成功捕捉到了想象力,許多人經過Andrej的博客文章開始瞭解。語言建模是無監督學習的一種形式,Yann LeCun也將預測性學習做爲獲取常識的先決條件(參見NIPS 2016的Cake幻燈片)。 關於語言建模最顯著的方面多是,儘管它很簡單,但它是本文討論的許多後期進展的核心:性能

詞嵌入:word2vec的目標是簡化語言建模;學習

序列到序列模型:這種模型經過一次預測一個詞來生成輸出序列;優化

預訓練語言模型:這些方法使用語言模型中的表示來進行遷移學習;

這反過來意味着NLP中許多最重要的最新進展減小爲一種語言建模形式。 爲了作「真正的」天然語言理解,僅僅從原始形式的文本中學習多是不夠的,咱們將須要新的方法和模型。

2008-多任務學習

多任務學習是在多個任務上訓練的模型之間共享參數的通常方法。在神經網絡中,這能夠經過綁定不一樣層的權重來輕鬆實現。多任務學習的想法在1993年由Rich Caruana首次提出,並應用於道路跟蹤和肺炎預測(Caruana,1998)。直觀地說,多任務學習鼓勵模型學習對許多任務有用的表示。特別對於學習通常的低級表示,集中模型的注意力或在有限量的訓練數據的設置中特別有用。有關多任務學習的更全面概述,請查看此文章

Collobert和Weston於2008年首次將多任務學習應用於NLP的神經網絡。 在他們的模型中,查找表(或詞嵌入矩陣)在兩個在不一樣任務上訓練的模型之間共享,以下面的圖2所示。

共享詞嵌入使模型可以在詞嵌入矩陣中協做和共享通常的低級信息,這一般構成模型中最大數量的參數。Collobert和Weston在2008年的論文中證實了它在多任務學習中的應用,它引領了諸如預訓練詞嵌入和使用卷積神經網絡(CNN)之類的思想,這些思想僅在過去幾年中被普遍採用。它贏得了ICML 2018的時間考驗獎(參見此時的時間考驗獎論文)。

多任務學習如今用於各類NLP任務,而且利用現有或「人工」任務已成爲NLP指令集中的有用工具。有關不一樣附加任務的概述,請查看此文章。雖然一般預先定義參數的共享,可是在優化過程期間也能夠學習不一樣的共享模式(Ruder等,2017)。隨着模型愈來愈多地在多項任務中被評估來評估其泛化能力,多任務學習愈來愈重要,最近提出了多任務學習的專用基準(Wang et al,2018; McCann et al,2018)。

2013-詞嵌入

文本的稀疏向量表示,即所謂的詞袋模型,在NLP中具備悠久的歷史。正如咱們在上面所看到的,早在2001年就已經使用了詞或詞嵌入的密集向量表示。 Mikolov等人在2013年提出的主要創新,是經過移動隱藏層和近似目標來使這些詞嵌入的訓練更有效率。雖然這些變化本質上很簡單,但它們與高效的word2vec一塊兒實現了大規模的詞嵌入訓練。

Word2vec有兩種模式,能夠在下面的圖3中看到:連續的詞袋(CBOW)和skip-gram。它們的目標不一樣:一個基於周圍的詞預測中心詞,而另外一個則相反。

雖然這些嵌入在概念上與使用前饋神經網絡學習的嵌入技術沒有什麼不一樣,可是對很是大的語料庫的訓練使它們可以捕獲諸如性別,動詞時態和國家–首都關係之類的詞之間的某些關係,由圖4可知:

這些關係及其背後的意義引起了對嵌入詞的初步興趣,許多研究調查了這些線性關係的起源(Arora等,2016; Mimno&Thompson,2017; Antoniak&Mimno,2018; Wendlandt等,2018))。然而,使用預訓練嵌入做爲初始化的固定詞嵌入,把它做爲當前NLP的主要內容被證實能夠提升各類下游任務的性能。

雖然捕獲的關係word2vec具備直觀且幾乎神奇的性能,但後來的研究代表word2vec沒有任何固有的特殊性:經過矩陣分解也能夠學習詞嵌入(Pennington等,2014; Levy&Goldberg,2014)和經過適當的調整,經典的矩陣分解方法(如SVD和LSA)能夠得到相似的結果(Levy等,2015)。

從那時起,許多工做已經開始探索詞嵌入的不一樣方面,能夠經過這篇文章瞭解一些趨勢和將來方向。儘管有許多發展,但word2ve仍然是現在被普遍使用的一種流行的選擇。Word2vec的範圍甚至超出了詞級別:帶有負抽樣的skip-gram,一個基於本地環境學習嵌入的方便目標,已被應用於學習句子的表示(Mikolov&Le,2014; Kiros et al.,2015)-甚至超越NLP,應用到網絡(Grover&Leskovec,2016)和生物序列(Asgari&Mofrad,2015)等。

一個特別使人興奮的方向是將不一樣語言的詞嵌入投影到同一空間中以實現(零射擊)跨語言轉移。愈來愈有可能以徹底無監督的方式(至少對於相似語言)學習良好的投影,這開啓了低資源語言和無監督機器翻譯的應用(Lample等,2018; Artetxe等,2018)。請查看(Ruder等,2018)的概述。

2013-NLP的神經網絡

2013年和2014年是神經網絡模型開始應用於NLP的標誌年份。三種主要類型的神經網絡被普遍使用:遞歸神經網絡、卷積神經網絡、循環神經網絡。

遞歸神經網絡(RNN)是處理NLP中廣泛存在的動態輸入序列問題的明顯選擇。 Vanilla RNNs(Elman,1990)很快被經典的長短時間記憶網絡(Hochreiter&Schmidhuber,1997)所取代,後者證實其對消失和爆炸梯度問題更具彈性。在2013年以前,RNN仍然被認爲很難訓練,Ilya Sutskever的博士論文是改變這種現狀的一個關鍵例子。LSTM細胞可視化能夠在下面的圖5中看到。雙向LSTM(Graves等,2013)一般用於處理左右上下文。

隨着卷積神經網絡(CNN)被普遍用於計算機視覺,它們也開始應用於文本(Kalchbrenner等,2014; Kim等,2014)。用於文本的卷積神經網絡僅在兩個維度上操做,其中濾波器僅須要沿時間維度移動。下面的圖6顯示了NLP中使用的典型CNN。

卷積神經網絡的一個優勢是它們比RNN更可並行化,由於每一個時間步的狀態僅取決於本地環境(經過卷積運算)而不是像RNN取決過去全部狀態。CNN可使用擴張卷積擴展到更寬的感覺野,以捕捉更普遍的背景(Kalchbrenner等2016)。 CNN和LSTM也能夠組合和堆疊,而且可使用卷積來加速LSTM。

RNN和CNN都將語言視爲一個序列。然而,從語言學的角度來看,語言本質上是等級的:單詞被組成高階短語和子句它們自己能夠根據一組生產規則遞歸地組合。將句子視爲樹而不是序列的語言啓發思想產生了遞歸神經網絡,這能夠在下面的圖7中看到:

與從左到右或從右到左處理句子的RNN相比,遞歸神經網絡從下到上構建序列的表示。在樹的每一個節點處,經過組合子節點的表示來計算新表示。因爲樹也能夠被視爲在RNN上施加不一樣的處理順序,所以LSTM天然地擴展到樹。

RNN和LSTM不只僅能夠被擴展來使用分層結構,並且不只能夠根據本地語言學習詞嵌入,並且能夠基於語法背景來學習詞嵌入(Levy&Goldberg,2014);語言模型能夠基於句法堆棧生成單詞(Dyer et al。,2016); 圖形卷積神經網絡能夠在樹上運行(Bastings等,2017)。

原文連接

相關文章
相關標籤/搜索