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

dicksonjyl560101發表於2018-09-21

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


https://blog.csdn.net/weixin_42137700/article/details/82800371

 

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

 

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

1、分散式表示的興起(例如,word2vec);

2、卷積,迴圈和遞迴神經網路;

3、在強化學習中的NLP的應用;

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

5、將深度學習模型與增強記憶策略相結合;

 

 

什麼是NLP?

 

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

 

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

 

分散式表徵

 

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

 

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

                      

 

 

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

 

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

 

Word2vec:2013年左右,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模型的能力方面是強大的。結合這些強大的技術,我們相信會找到令人信服的方法來處理語言的複雜性。

---------------------


本文來自 喜歡打醬油的老鳥 的CSDN 部落格 ,全文地址請點選: https://blog.csdn.net/weixin_42137700/article/details/82800371?utm_source=copy


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2214674/,如需轉載,請註明出處,否則將追究法律責任。

相關文章