編者按: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領域的一大重點研究方向。
遞歸神經網絡
與RNN類似,遞歸神經網絡是對連續數據建模的一種機制。而語言恰好可以被看成是“遞歸結構”,其中單詞和子短語可以組成句子層次結構中更高級的短語。在這種結構中,非終端節點由其所有子節點的表征來表示,下面是一幅示意圖:
基礎RNN計算高級別短語的方法是自下而上組合成分,在它變體的MV-RNN中,單詞由矩陣和向量表示,這意味著每個成分(單詞/短語)被表示為參數矩陣。這種做法的弊端是可能會出現特別大的參數,而為了解決這個問題,研究人員又提出了另一種RNN變體:遞歸神經張量網絡(RNTN)——它通過在輸入向量之間添加更多交互,對參數大小進行了限制。
目前,RNN比較常見于以下領域:
語法分析
利用短語級表征來進行情緒分析
語義關系分類(例如,主題消息)
句子相關性
強化學習
強化學習包含傳統機器學習方法、訓練智能體和設置獎勵。近年來它在自然語言生成(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模型依然充滿脆弱和虛假,未來,我們還需要把研究重心放到引入常識性知識和人類行為建模上。
-
神經網絡
+關注
關注
42文章
4765瀏覽量
100566 -
機器翻譯
+關注
關注
0文章
139瀏覽量
14873 -
深度學習
+關注
關注
73文章
5493瀏覽量
120999
原文標題:NLP深度學習:近期趨勢的總體概述
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論