NLP深度學習:近期趨勢的總體概述

作者:Elvis Saravia

編譯:Bot

編者按:Elvis Saravia是“國立清華大學”(臺灣)的博士生,主要研究NLP和情感計算。今年8月,Tom Youn等人更新了去年發表在IEEE雜誌上的重磅文章《Recent Trends in Deep Learning Based Natural Language Processing》,總結了到今年爲止,基於深度學習的自然語言處理(NLP)系統和應用程序的一些最新趨勢。爲了方便更多人閱讀,Elvis Saravia總結了這篇文章的主要內容,回顧和比較了各類NLP任務中的最新技術。

在這篇綜述中,讀者可以詳細瞭解這一年來學界的一些大動作,它包含以下主題:

  • 分佈式表徵的興起(例如word2vec)
  • 卷積、循環和RNN
  • 在強化學習中的應用
  • 句子的無監督表徵學習的最新進展
  • 深度學習模型與記憶增強的結合

什麼是NLP?

自然語言處理是通過構建計算算法自動分析、表徵人類自然語言的一個學科領域。如今,基於NLP的系統已經實現廣泛應用,比如Google強大的搜索引擎、亞馬遜的語音助手Alexa。NLP還可以幫助機器執行和複雜自然語言有關的任務,比如機器翻譯和對話生成。

長期以來,研究人員進行NLP研究主要依賴各種機器學習模型,以及手工製作的特徵。但這麼做帶來的隱患是由於語言信息被稀疏表徵表示,會出現維度詛咒之類的問題。而隨着近年來詞嵌入(低維、分佈式表徵)的普及和成功,和傳統機器學習模型(如SVM、logistic迴歸)相比,基於神經網絡的模型在各種語言相關任務上取得了優異的成果。

分佈式表徵

如前所述,手工製作的特徵主要用於模擬自然語言任務,它在神經網絡被廣泛應用於NLP前,一直使研究人員飽受維度詛咒困擾。

詞嵌入

詞嵌入是一種基於分佈假設(出現在類似語境中具有相似含義的詞)的分佈向量,它的作用是把一個維數爲所有詞的數量的高維空間嵌入到一個維數低得多的連續向量空間中。通常情況下,詞嵌入會在任務上進行預訓練,用淺層神經網絡基於上下文預測單詞。下圖是Bengio及其同事當年提出的神經語言模型

詞向量傾向於嵌入語法和語義信息,而這種做法在各種NLP任務中(如情感分析)都取得了最先進的成果。

事實上,分佈式表徵在過去已經被大量用於研究,但正是連續詞袋模型(CBOW)和Skip-Gram模型正式進入這個領域後,它才真正流行起來。這也確實是當前一種非常受歡迎的方法,因爲它不僅能有效構建高質量的詞嵌入,還能被用於語義組合(如’man’+’royal’=’king’)。

Word2vec

2013年,Mikolav等人提出CBOW和skip-gram模型,這是Word2Vec模型中的兩個主要類別。其中,CBOW模型是一種構建詞嵌入的神經方法,它的目標是基於給定上下文和給定窗口大小,預測目標單詞(input word)的條件概率。同樣的,skip-gram模型也是一種構建詞嵌入的神經方法,但不同的是,它的目標是在給定中心目標單詞的情況下,預測上下文。

對於這兩種模型,詞嵌入的維度是由(以無監督的方式)計算預測的準確率確定的。

使用詞嵌入的限制之一是當我們想要獲得諸如“hot potato”或“Boston Globe”之類短語的向量表示時,我們不能簡單地組合單個詞的向量表示,因爲這些短語不代表單個詞的語義組合。因此當短語或句子很長的時候,整個問題會變得很複雜。

Word2vec模型的另一個限制是使用較小的窗口爲對比單詞產生類似的嵌入,比如 “good”和“bad”,在一些比較重視這類差異的任務中(如情感分析),這種做法並不可取。此外,詞嵌入還高度依賴它們的應用場景。爲每個新任務重新訓練特定的嵌入確實有意義,但這通常意味着高昂的計算成本,而且我們能通過負採樣達到一樣的效果。

Word2vec模型還存在其他問題,比如沒有考慮多義性因素、訓練數據中存在偏見等……

字符嵌入

對於諸如詞性標記(POS)和命名實體識別(NER)之類的任務,查看詞彙的詞法信息是有用的,尤其是像葡萄牙語、西班牙語和中文這些構詞方法十分豐富的語言。我們是在字符級別分析文本,因此對於某些未知詞彙,利用這種嵌入方法有助於我們在不引入大型詞典的情況下,幫助模型解決問題。

最後需要注意的是,雖然字符級和字級的嵌入已經成功應用於各種NLP任務,但它們在長期內仍將受到質疑。例如,Lucy和Gauthier最近的一項研究發現,一些標準詞嵌入無法編碼許多顯着的常規感知特徵,而且這些缺陷和詞與詞之間的相似性預測誤差密切相關。換句話說,如果我們只用分佈式語義,它其實是無法理解單詞背後的概念的。上個月,Jacob Andreas等人也在自然語言處理系統的背景下就意義表徵進行了激烈辯論。

卷積神經網絡(CNN)

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

爲了用CNN進行句子建模,首先,他們把句子標記成一個個單詞,進一步將其轉換爲d維的詞嵌入矩陣;然後,他們在該嵌入層上應用卷積filter,產生所謂的特徵映射;之後再進行最大池化操作,對每個filter應用最大操作以獲得固定長度輸出並減小輸出的維數;最後,產生最終的句子表示。

通過向上述基礎CNN添加更多的複雜性因素,使其適應執行基於詞的預測,我們可以用它研究諸如NER、情感分析和POS等問題。它的重點是需要一種基於窗口的方法,即對於每個詞,考察它相鄰詞彙(子句)的窗口大小。有了這個窗口,我們就能把CNN應用於子句,預測窗口中心單詞——這也被稱爲詞級分類。

但CNN的一個缺點是無法建模長距離依賴關係,這對所有NLP任務來說都很重要。爲了解決這個問題,現在研究人員已經把CNN和時延神經網絡(TDNN)結合在一起,由後者在訓練期間實現更大的上下文範圍。另外,動態卷積神經網絡(DCNN)也已經在不同任務上取得了成功,比如情緒預測和問題分類,它的特殊之處在於池化層,它用了一種動態k-max池化,能讓filter在句子建模過程中動態地跨越可變範圍,使句子中相隔甚遠的兩個詞之間都能產生語義聯繫。

CNN還能基於長短不一的文本被用於更復雜的任務,比如目標檢測、情感分析短文本分類諷刺檢測。然而,其中一些研究論文稱,當將基於CNN的模型用於分析twitter等微型文本時,我們必須引入外部知識。此外,CNN在query-document matching、語音識別、機器翻譯和問答上也有一定的用處,在涉及從低級詞彙中提取特徵以形成高度語義概括的任務中,DCNN也經常出現。

總體而言,CNN是有用的,因爲它們可以在上下文窗口中挖掘語義線索,但它們在包吃連貫性和長距離語義關係時,還有一定欠缺。相較之下,RNN還是個更好的選擇。

循環神經網絡(RNN)

RNN是一種專門處理序列信息的神經網絡,它循環往復地把前一步的計算結果作爲條件,放進當前的輸入中。這些序列通常由固定大小的標記向量表示,按順序逐個輸入循環神經元。下面是RNN的簡單圖示:

相比CNN,RNN的優勢是能把之前處理好的信息併入當前計算,這使它適合在任意長度的序列中對上下文依賴性進行建模。目前,RNN一直是各類NLP研究的常規選擇,比如機器翻譯、圖像字幕和語言建模等。

但這並不意味着RNN相對CNN有絕對的優勢,因爲它們模擬的是數據完全不同的兩個方面,所以兩者能發揮多少作用需要看具體應用場景,取決於任務所需的語義。

一般來說,RNN的輸入是one-hot編碼或詞嵌入,但它也能像CNN一樣接收抽象表徵。簡單的RNN容易出現梯度消失,這意味着難以學習和難以調整較早層中的參數。爲了解決這個問題,研究人員們陸續提出了LSTM、ResNets和GRU等多種變體。

RNN的變體

LSTM由三個門(輸入、遺忘和輸出)構成,它通過三者控制信息流,獲取長距離依賴關係。GRU和LSTM很相近,不同的是它只有兩個門,更簡單,效率也更高。但一項研究也表明,目前我們很難判斷RNN的哪些門更重要,它們的選用主要還是取決於可用的算力。現在基於LSTM的模型已經能解決序列到序列的映射(通過編碼器-解碼器框架),在機器翻譯、文本摘要、人工對話建模、回答模型、基於圖像的語言生成等任務中都有不錯的應用。

總的來說,RNN在NLP領域的用處是廣泛的:

  • 字級分類(例如,NER)
  • 語言建模
  • 句子級別分類(例如,情感極性)
  • 語義匹配(例如,將消息與對話系統中的候選響應相匹配)
  • 自然語言生成(例如,機器翻譯、視覺QA和圖像字幕)

注意力機制

從本質上說,注意力機制的作用對象是基於編碼器-解碼器框架的RNN,它能讓解碼器利用最後的隱藏狀態,以及基於輸入隱藏狀態序列計算的信息(如上下文向量),這對於需要上下文對齊的任務有奇效。

當前注意力機制已經成功被用於機器翻譯、文本摘要、圖像字幕、對話生成和情感分析。雖然有研究人員已經提出了各種不同形式和類型的注意力機制,但未來它仍是NLP領域的一大重點研究方向。

遞歸神經網絡(Recursive Neural Network)

與RNN類似,遞歸神經網絡是對連續數據建模的一種機制。而語言恰好可以被看成是“遞歸結構”,其中單詞和子短語可以組成句子層次結構中更高級的短語。在這種結構中,非終端節點由其所有子節點的表徵來表示,下面是一幅示意圖:

基礎遞歸神經網絡計算高級別短語的方法是自下而上組合成分,在它變體的MV-RNN中,單詞由矩陣和向量表示,這意味着每個成分(單詞/短語)被表示爲參數矩陣。這種做法的弊端是可能會出現特別大的參數,而爲了解決這個問題,研究人員又提出了另一種變體:遞歸神經張量網絡(RNTN)——它通過在輸入向量之間添加更多交互,對參數大小進行了限制。

目前,遞歸神經網絡比較常見於以下領域:

  • 語法分析
  • 利用短語級表徵來進行情緒分析
  • 語義關係分類(例如,主題消息)
  • 句子相關性

強化學習

強化學習包含傳統機器學習方法、訓練智能體和設置獎勵。近年來它在自然語言生成(NLG)任務中嶄露頭角,如文本生成,但這個趨勢從本質上看是一種“被迫轉型”。

和其他NLP任務一樣,以往研究人員在研究NLG任務時用的大多也是RNN,但基於RNN的生成器存在一個難以解決的問題,就是它的原理是用模型輸出單詞代替句子原本單詞,這就不可避免地會快速提高錯誤率。再加上我們不能用其他任務的性能衡量標準來評估語言生成模型,綜合影響之下,現在的NLG模型只能生成重複、矛盾、平淡的表達。

爲了解決上述問題,學界向強化學習伸出了橄欖枝,它也確實在圖像字幕和機器翻譯中表現出色。在NLP任務中,強化學習框架由一個智能體(基於RNN的生成模型)組成,它與外部環境(在每個時間步看到的輸入詞和上下文向量)相互作用。智能體根據策略(參數)選擇一個動作,該策略涉及在每個時間步預測序列的下一個單詞,每次完成預測後,智能體會更新其內部狀態。預測完整個任務後,我們再統計智能體的獎勵收集情況,獎勵設置因任務而異,在NLG中,它們的獎勵可能是信息流。

儘管強化學習給了學界希望,但具體在用它時需要適當地處理動作和狀態空間,避免過大空間影響智能體訓練、探索。此外,生成對抗也開始被用於訓練語言生成模型,這在對話系統中可能有一些用處,可以區分哪些話是人類說的,哪些是機器生成的。

無監督學習

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

skip-thoughts模型,和學習詞嵌入的算法類似,可以基於中心句預測上一個/下一個相鄰句子。該模型採用了當下流行的seq2seq框架,其中解碼器負責生成目標序列,編碼器可以被看作是通用特徵提取器——甚至能在提取過程中學習詞嵌入。

深度生成模型

現如今NLP領域最流行的深度生成模型有變分自動編碼器(VAE)和生成對抗神經網絡(GAN),它們能在潛在空間生成逼真的句子,並從中發現豐富的自然語言結構。

衆所周知,由於潛在空間沒有約束,標準句子自編碼器生成的文本通常很“假”。VAE通過在隱藏的潛在空間上施加先驗分佈,能使生成的句子接近人類自然語言表述。它由編碼器和生成器網絡兩部分構成,執行任務時,編碼器和生成器網絡先將輸入編碼到潛在空間中,然後從潛在空間生成樣本。它的訓練目標是最大化生成器網絡中的對數似然的變分下界。

下面是一個基於RNN的VAE:

GAN本身十分靈活,所以它在很多NLP任務上都有用武之地。比如,和標準自編碼器相比,一個基於RNN的VAE生成模型可以產生形式更多樣化、表述更規整的句子。而其他基於GAN的模型也能把結構化變量(如時態、情緒)結合進來,生成更符合語境的句子。

除此之外,GAN也可以被用來訓練模型,使之能生成更貼近人類表述的文本。比如我們可以把LSTM用作生成器,把CNN作爲區分真實數據和生成樣本的判別器。

但它也有問題,一個是不能反向傳播,第二個是這些深度生成模型本質上都是黑盒,它們目前還缺乏標準化的評估工具。

記憶增強神經網絡

神經網絡中可以存儲的信息量稱爲網絡容量(network capacity)。一般來講,利用一組神經元來存儲信息的容量和神經元的數量以及網絡的複雜度成正比。如果要存儲越多的信息,神經元數量就要越多或者網絡要越複雜。爲了增強網絡容量,一種比較簡單的方式是引入結構化的記憶模塊,將和任務相關的短期記憶保存在記憶中,需要時再進行讀取。這種裝備外部記憶的神經網絡也稱爲記憶網絡(MN)或記憶增強神經網絡(MANN)。

目前研究人員在這個方向做出的進展有動態記憶網絡,它們在QA、語言建模、POS標記和情感分析等任務上有不錯的表現。

結論

到目前爲止,我們已經探討了基於神經網絡的模型(如CNN和RNN)的優點和侷限,介紹了強化學習、無監督學習和深度學習在NLP任務上的可能性,也知道了注意機制和記憶增強網絡在提高NLP神經網絡模型性能上的能力。通過結合以上所有先進技術,我們已經能以令人信服的方式讓機器理解語言的複雜性。

但正如《NAACL研討會深思:NLP泛化模型背後的虛假和脆弱》這篇文章揭露的,現在的許多NLP模型依然充滿脆弱和虛假,未來,我們還需要把研究重心放到引入常識性知識和人類行爲建模上。

編輯於 2018-09-25

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章