NLP&深度學習:近期趨勢概述

NLP&深度學習:近期趨勢概述git

 

摘要:當NLP趕上深度學習,到底發生了什麼樣的變化呢?github

 

在最近發表的論文中,Young及其同事彙總了基於深度學習的天然語言處理(NLP)系統和應用程序的一些最新趨勢。本文的重點介紹是對各類NLP任務(如視覺問答(QA)機器翻譯)最新技術(SOTA)結果的回顧和比較。在這篇全面的綜述中,你能夠詳細瞭解NLP深度學習的過去,如今和將來。此外,你還將學習一些 在NLP中應用深度學習的最佳實踐。其中主題包括:web

一、分佈式表示的興起(例如,word2vec);算法

二、卷積,循環和遞歸神經網絡;spring

三、在強化學習中的NLP的應用;網絡

四、無監督模型在表示學習中的最新進展;框架

五、將深度學習模型與加強記憶策略相結合;機器學習

 

 

什麼是NLP?分佈式

 

天然語言處理(NLP)涉及構建計算機算法以自動分析和表示人類語言。基於NLP的系統如今已經實現了普遍的應用,例如Google強大的搜索引擎,以及最近阿里巴巴的語音助手天貓精靈。NLP還可用於教授機器執行復雜的天然語言相關任務的能力,例如機器翻譯對話生成函數

 

長期以來,用於研究NLP問題的大多數方法都採用淺機器學習模型和耗時的手工製做特徵。因爲大多數的語言信息用稀疏表示(高維特徵)表示,這致使諸如維數災難之類的問題。然而,隨着最近詞嵌入(低維,分佈式表徵)的普及和成功,與傳統的機器學習模型(如SVM邏輯迴歸)相比,基於神經的模型在各類語言相關任務上取得了優異的成果。

 

分佈式表徵

 

如前所述,手工製做的特徵主要用於模擬天然語言任務,直到神經網絡的方法出現並解決了傳統機器學習模型所面臨的一些問題,如維數的災難。

 

詞嵌入: 分佈向量,也稱爲詞嵌入,基於所謂的分佈假設-出如今相似語境中的單詞具備類似的含義。Word嵌入是在任務上預先訓練的,其目標是基於其上下文預測單詞,一般使用淺層神經網絡。下圖說明了Bengio及其同事提出的神經語言模型 。

                       

 

詞向量傾向於嵌入語法和語義信息,並在各類NLP任務中負責SOTA,例如情感分析和句子組成。

 

分佈式表徵在過去被大量用於研究各類NLP任務,可是當連續的詞袋(CBOW)和skip-gram模型被引入該領域時,它纔開始流行起來。它們很受歡迎,由於它們能夠有效地構建高質量的詞嵌入,而且它們能夠用於語義組合(例如,'man'+'royal'='king')。

 

Word2vec2013年左右,Mikolav等人提出了CBOW和skip-gram模型。CBOW是構造詞嵌入的神經網絡方法,其目的是在給定上下文單詞的狀況下計算目標單詞的條件機率。另外一方面,Skip-gram是構建詞嵌入的神經網絡方法,其目標是在給定中心目標單詞的狀況下預測周圍的上下文單詞(即條件機率)。對於兩種模型,經過計算(以無監督的方式)預測的準確性來肯定單詞嵌入維度。

 

使用詞嵌入方法的挑戰之一是當咱們想要得到諸如「hot potato」或「Boston Globe」之類的短語的矢量表示時。咱們不能簡單地組合單個單詞矢量表示,由於這些短語不表明單個單詞的含義的組合。當考慮更長的短語和句子時,它會變得更加複雜。

 

word2vec模型的另外一個限制是使用較小的窗口大小(window sizes)產生相似的嵌入,用於對比諸如「好」和「壞」之類的單詞,這對於這種區分很重要的任務(例如情感分析)是不可取的。詞嵌入的另外一個限制是它們依賴於使用它們的應用程序,即爲每一個新任務從新訓練任務特定的嵌入是一個探索的選項,但這一般是計算上昂貴的,而且可使用負抽樣更有效地解決。Word2vec模型還存在其餘問題,例如沒有考慮多義因素和其餘可能從訓練數據中浮現的偏見。

 

字符嵌入:對於諸如詞性(POS)標記命名實體識別(NER)之類的任務,查看單詞中的形態信息(例如字符或其組合是有用的。這對於形式豐富的語言也頗有用,例如葡萄牙語,西班牙語和中文。因爲咱們在字符級別分析文本,所以這些類型的嵌入有助於處理未知單詞問題,由於咱們再也不表示須要爲了高效計算目的而須要減小的大詞彙表。

 

最後,重要的是要理解即便字符級和字級嵌入都已成功應用於各類NLP任務,但長期影響仍受到質疑。例如,Lucy和Gauthier最近發現,詞向量受限於它們如何很好地捕捉單詞背後的概念意義的不一樣方面。換句話說,他們聲稱只有分佈式語義不能用於理解單詞背後的概念。最近,在天然語言處理系統的背景下,對意義表徵進行了重要的辯論

 

卷積神經網絡(CNN)

 

CNN基本上是基於神經網絡的方法,其應用於構成單詞或n-gram以提取更高級特徵的特徵函數。由此產生的抽象特徵已被有效地用於情感分析,機器翻譯和問答(QA)系統,以及其餘任務。Collobert和Weston是首批將基於CNN的框架應用於NLP任務的研究人員之一。他們的方法的目標是經過查找表將詞轉換爲矢量表示,這使得一種原始的詞嵌入方法,能夠在神經網絡訓練期間學習權重(見下圖)。

 

 

 

爲了利用基本的CNN進行句子建模,首先要先將句子標記爲單詞,進一步將其轉換爲d 維的詞嵌入矩陣(即輸入嵌入層)。而後,在該輸入嵌入層上應用卷積濾波器,其包括應用全部可能窗口大小(window size)的濾波器以產生所謂的特徵映射。而後進行最大池操做,對每一個過濾器應用最大操做以得到固定長度輸出並減少輸出的維數,而且該過程產生最終句子表徵。

 

 

 

經過增長上述基本的CNN的複雜性並使其適應於執行基於詞的預測,能夠研究諸如NER,物體檢測和POS(詞性標記)的其餘NLP任務。這須要基於窗口(window)的方法,其中對於每一個單詞,考慮相鄰單詞(句子)的固定大小窗口。而後將獨立的CNN應用於句子中,而且訓練目標是預測窗口中心的單詞,也稱爲單詞級分類。

 

CNNs的一個缺點是沒法建模-長距離依賴關係,這對於各類NLP任務很重要。爲了解決這個問題,CNN已經與時間延遲神經網絡(TDNN)耦合,後者在訓練期間能夠當即實現更大的上下文範圍。在不一樣的NLP任務中表現成功的其餘有用類型的CNN,例如情緒預測和問題類型分類,被稱爲動態卷積神經網絡(DCNN)。DCNN使用動態k-max池策略,其中過濾器能夠在執行句子建模時動態地跨越可變範圍。

 

CNN還用於更復雜的任務,對於不一樣長度的文本,例如物體檢測,情感分析短文本分類諷刺檢測。然而,其中一些研究報告說,在將基於CNN的方法應用於Twitter文本等微觀文本時,外部知識是必要的。證實CNN有用的其餘任務是查詢-文檔匹配,語音識別,機器翻譯和問答等。另外一方面,DCNN被用於分層學習捕獲並將低級詞彙特徵組合成用於文本的自動歸納的高級語義概念。

 

整體而言,CNN是有效的,由於它們能夠在上下文窗口中挖掘語義線索,可是它們難以保持連續順序和模擬遠距離的上下文信息。RNN更適合這種類型的學習,接下來將對它們進行討論。

 

遞歸神經網絡(RNN)

 

RNN是專門用於處理順序信息的神經網絡的方法。RNN將計算應用於以先前計算結果爲條件的輸入序列。這些序列一般由固定大小的標記向量表示,他們被順序送至循環單元。下圖說明了一個簡單的RNN框架。

 

 

 

RNN的主要優點在於可以記憶先前的計算結果並在當前計算中使用該信息。這使得RNN模型適合於在任意長度的輸入中都具備上下文依賴性,這樣能夠爲輸入建立適當的組合。RNN已被用於研究各類NLP任務,例如機器翻譯、圖像字幕和語言建模等。

與CNN模型相比,RNN模型在特定的天然語言任務中能夠一樣有效甚至更好。由於它們模擬了數據不一樣的方面,這纔會使它們有效,具體的效果取決於任務所需的語義。

 

RNN指望的輸入一般是單熱(one-hot)編碼或詞嵌入,但在某些狀況下,它們與由CNN模型構造的抽象表徵耦合。簡單的RNN容易遭受消失的梯度問題,這使得網絡難以學習和調整較早層中的參數。其餘變體正在出現已解決這個問題,例如長短時間記憶(LSTM)網絡殘留網絡(ResNets)門控循環網絡(GRU)後來被引入以克服這一限制。

 

RNN變體

 

LSTM由三個門(輸入,遺忘和輸出門)組成,並經過三者的組合計算隱藏狀態。GRU相似於LSTM,但只包含兩個門,效率更高,由於它們不那麼複雜。一項研究代表,很難說RNN哪些門控更有效,一般只是根據可用的計算能力來挑選它們。研究及實驗代表各類基於LSTM的模型用於序列到序列映射(經過編碼器-解碼器框架),其適用於機器翻譯,文本摘要,人工對話建模,問題回答,基於圖像的語言生成以及其餘任務。

 

總的來講,RNN能夠用於許多NLP系統,例如:

•  字級分類(NER);

•  語言建模;

•  句子級別分類(例如,情感極性);

•  語義匹配(例如,將消息與對話系統中的候選響應相匹配);

•  天然語言生成(例如,機器翻譯,視覺QA和圖像字幕);

 

注意力機制

 

本質上,注意力機制是一種技術,其受益於容許上述基於RNN框架的解碼器使用最後隱藏狀態以及基於輸入隱藏狀態序列計算的信息(即上下文矢量)的須要。這對於須要在輸入和輸出文本之間進行某些對齊的任務特別有用。

 

注意力機制已成功用於機器翻譯,文本摘要,圖像字幕,對話生成和基於內容(aspect-based)的情感分析。而且已經有人提出了各類不一樣形式和類型的注意力機制,它們仍然是NLP研究人員研究各類應用的重要領域。

 

遞歸神經網絡(Recursive Neural Network)

 

與RNN相似,遞歸神經網絡是對連續數據建模很是適用。這是由於語言能夠被視爲遞歸結構,其中單詞和短語構成層次結構中其餘更高級別的短語。在這種結構中,非終端節點由其全部子節點的表示來表示。下圖說明了下面的一個簡單的遞歸神經網絡。

 

 

 

在基本遞歸神經網絡形式中,組合函數(即網絡)以自下而上的方法組合成分來計算更高級別短語的表示(參見上圖)。在變體MV-RNN中,單詞由矩陣和向量表示,這意味着由網絡學習的參數表示每一個成分的矩陣。另外一種變型,即遞歸神經張量網絡(RNTN),使得輸入矢量之間的更多交互可以避免大的參數產生,如MV-RNN的狀況。遞歸神經網絡更能顯示出靈活性,而且它們能夠與LSTM單元耦合以處理諸如梯度消失之類的問題。

 

遞歸神經網絡用於各類應用,例如:

•  解析;

•  利用短語級表示來進行情緒分析;

•  語義關係分類(例如,主題消息);

•  句子相關性;

 

 

強化學習

強化學習是經過機器學習的方法,訓練代理執行離散動做,而後獎勵。正在經過強化學習來研究幾種天然語言生成(NLG)任務,例如文本摘要。

 

強化學習在NLP上的應用受到一些問題的阻力。當使用基於RNN的發生器時,標準答案會被模型生成的答案所取代,這會迅速提高錯誤率。此外,對於這樣的模型,詞級訓練的目標不一樣於測試度量的目標,例如用於機器翻譯和對話系統的n-gram重疊測量,BLEU。因爲這種差別,當前的NLG類型系統每每會產生不連貫,重複和枯燥的信息。

 

爲了解決上述問題,業內採用稱爲REINFORCE的強化算法來解決NLP任務,例如圖像字幕和機器翻譯。這個強化學習框架由一個代理(基於RNN的生成模型)組成,它與外部環境相互做用(在每一個時間步驟看到的輸入詞和上下文向量)。代理根據策略(參數)選擇一個動做,該策略會在每一個時間步驟預測序列的下一個單詞。而後代理會更新其內部狀態(RNN的隱藏單元)。這一直持續到達最終計算獎勵序列的結尾。獎勵功能因任務而異,例如,在句子生成任務中,獎勵能夠是信息流。

 

儘管強化學習方法顯示出了但願,但它們須要適當地處理動做和狀態空間,這可能限制模型的表達能力和學習能力。記住,獨立的基於RNN的模型力求表現力和表達語言的天然能力。

 

對抗訓練也被用來訓練語言生成器,其目的是欺騙訓練有素的鑑別器,以區分生成的序列和真實的序列。若是一個對話系統,經過policy gradient(策略網絡),能夠在強化學習範例下構建任務,其中鑑別器就像人類圖靈測試員同樣,鑑別器基本上是受過訓練以區分人類和機器生成的對話。

 

無監督學習

無監督的句子表徵學習涉及以無監督的方式將句子映射到固定大小的向量。分佈式表徵從語言中捕獲語義和句法屬性,並使用輔助任務進行訓練。

 

研究員與用於學習詞嵌入的算法相似,提出了跳過思惟模型,其中任務是基於中心句子預測下一個相鄰句子。使用seq2seq框架訓練該模型,其中解碼器生成目標序列,而且編碼器被視爲通用特徵提取器-甚至在該過程當中學習了字嵌入。該模型基本上學習輸入句子的分佈式表徵,相似於在先前語言建模技術中如何爲每一個單詞學習詞嵌入。

 

深度生成模型

 

諸如變分自動控制器(VAE)生成對抗網絡(GAN)之類的深度生成模型也能夠應用於NLP中,經過從潛在代碼空間生成逼真句子的過程來發現天然語言中的豐富結構。

衆所周知,因爲無約束的潛在空間,標準的自動編碼器沒法生成逼真的句子。VAE在隱藏的潛在空間上施加先驗分佈,使模型可以生成適當的樣本。VAE由編碼器和發生器網絡組成,編碼器和發生器網絡將輸入編碼到潛在空間中,而後從潛在空間生成樣本。訓練目標是在生成模型下最大化觀測數據的對數似然的變分下界。下圖說明了用於句子生成的基於RNN的VAE

 

 

 

生成模型對於許多NLP任務是有用的,而且它們本質上是靈活的。例如,與標準自動編碼器相比,基於RNN的VAE生成模型被提出用於產生更多樣化且格式良好的句子。其餘模型容許將結構化變量(例如,時態和情感)結合到潛在代碼中以生成合理的句子。

 

由兩個競爭網絡組成的GAN(生成器和鑑別器)也被用於生成逼真的文本。例如,將LSTM用做生成器,CNN用做區分真實數據和生成樣本的鑑別器。在這種狀況下,CNN表示二進制句子分類器。該模型可以在對抗訓練後生成逼真的文本。

 

除了鑑別器的梯度不能經過離散變量適當地反向傳播的問題以外,深層生成模型同時也是難以評估的。近年來已經提出了許多解決方案,但這些解決方案還沒有標準化。

 

內存加強網絡(Memory-Augmented Network)

在輸出結果生成階段由注意力機制訪問的隱藏向量表示模型的「內部存儲器」。神經網絡還能夠與某種形式的內存耦合,以解決視覺QA語言建模POS標記情感分析等任務。例如,爲了解決QA任務,將支持事實或常識知識做爲存儲器的形式提供給模型。動態存儲器網絡是對先前基於存儲器的模型的改進,其採用神經網絡模型用於輸入表徵、注意力機制和應答機制。

 

結論

到目前爲止,咱們如今已經知道了基於神經網絡的模型(如CNN和RNN)的容量和有效性。咱們也意識到將強化學習、無監督方法和深度生成模型正在被應用於複雜的NLP任務(如可視化QA和機器翻譯)。注意力機制和記憶加強網絡在擴展基於神經的NLP模型的能力方面是強大的。結合這些強大的技術,咱們相信會找到使人信服的方法來處理語言的複雜性。

 

本文做者:【方向】

做者:阿里云云棲社區連接:https://www.jianshu.com/p/f1e6c888479d來源:簡書簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。

相關文章
相關標籤/搜索