深度學習在自然語言處理中的應用(論文梳理)
對論文Marc Moreno Lopez和Jugal Kalita的論文《Deep Learning applied to NLP》的一個梳理。
深層的學習方法在解決複雜的學習問題上取得了成功,因此變得越來越重要。與此同時,越來越多地獲得高性能計算資源和最先進的開放源代碼庫使每個人使用這些方法變得越來越可行。
自然語言處理的重點是人類語言和計算機之間的相互作用。它位於計算機科學、人工智慧和計算語言學的交叉點。NLP是計算機以智能和有用的方式分析、理解和派生人類語言意義的一種方式。通過使用NLP,開發人員可以組織和構造知識來完成自動摘要、翻譯、命名實體識別、關係抽取、情感分析、語音識別和主題分割等任務。NLP應用的發展是具有挑戰性的,因為計算機傳統上要求人類通過編程語言與它們進行通信。編程語言精確、無歧義、結構嚴謹。然而,人類的語言並不總是精確的,它往往是模糊的,語言結構可以依賴許多複雜的變數,包括俚語、區域方言和社會背景。
CNN介紹
神經網路(ANN)是一種生物啟發的編程範式,它使計算機能夠從觀測數據中學習。它由大量相互連接的處理單元組成,神經元共同工作以解決問題。人工神經網路通過學習過程被配置為特定的應用程序,如模式識別或數據分類。
ANN的源初形態:輸入層、隱藏層、輸出層(如圖1)。
圖1.ANN的基本結構
卷積神經網路與普通神經網路非常相似。他們也都設定了可學習的權值和閾值神經元。主要的區別是層數。卷積神經網路(CNN)是幾層的非線性激活函數卷積的結果應用。在傳統的神經網路中,每個輸入神經元都連接到下一層的輸出神經元,這稱為全連接層。在CNN里,相反,是用在輸入層卷積計算輸出。這將導致局部連接,其中輸入的每個區域與輸出中的神經元相連,每個層應用不同的過濾器,通常是數百或數千,並結合其輸出結果。
圖2.經典的CNN架構
卷積神經網路的重要應用是引入了池化層,它的主要用武之地在卷積層後面。「池化」(Pooling)對輸入做了降維操作,比較常見的是用max或average函數做一個濾波(filter)操作,通過窗口函數進行操作。為什麼要進行池化呢?有兩點原因。
池化的一個特性是它提供了一個固定大小的輸出矩陣,這通常是做決策分類所必需的。這允許使用可變大小的句子和可變大小的過濾器,但輸出的維度是相同的。
池化可以做降維,但保留顯著信息。我們可以將每個過濾器視為檢測特定特性。如果這個特徵出現在句子的某個地方,那麼將該過濾器應用到那個區域的結果會產生很大的值,但在其他區域中的值很小。恢復,關於位置的全局信息丟失(在某個句子中發生的事情),之所以能保留,是因為關鍵信息是被捕獲的。
在訓練階段,CNN根據所要執行的任務自動學習其濾波器的值。例如,在圖像分類中,CNN可以學習在第一層中檢測原始像素的邊緣,然後利用邊緣檢測第二層中的簡單形狀,然後使用這些形狀來阻止高級特徵,如高層的面部形狀,最後一層是使用這些高級特性的分類器。 NLP中,句子和文檔被表徵為輸入矩陣。矩陣每一列對應一個令牌,典型的是單詞,也有可能是字元。這樣,一列表示一個單詞咯。典型的表達方法是化作一個低維度的矩陣表達式,它們也可以是將單詞索引到辭彙表中的一個熱向量。對於一個10單詞的句子,我們可以使用100維嵌入我們會有一個10x100矩陣作為輸入。
在計算機視覺中,濾波器會滑過圖像的局部補丁,但NLP濾波器是在矩陣的整個行上進行滑動的(按照單詞來)。因此,濾波器的寬度通常與輸入矩陣的寬度相同,高度或區域大小可能會有所不同,但每次滑動超過2-5個單詞的窗口是典型的大小。
動機
在本文中,Bitvai等人比較了CNN在人工神經網路應用上的效率。他們建模的問題主要是基於電影評論和電影屬性預測未來的票房收入,提出了一種用於文本回歸建模的人工神經網路模型。在語言處理中,ANN是最先用概率語言建模的,其次是句子模型和句法分析。這些方法通過自動學習單詞和其他語言單元的稠密低維分散式表示,已經表現出強大的性能,它們已被用在編碼語言語法和語義的重要方面。Bitval等人還開發了卷積神經網路,靈感來自於他們在圖像處理和最近的應用程序語言處理的突破結果。過去的成果主要依賴大數據數據集十分豐富。數以百計的大量參數,人們會期望這樣的模型只能在非常大的數據集上得到有效的學習。然而,在本文中顯示一個複雜的深度卷積網路可以只訓練一千個樣本的例子的例子,在這裡,細緻的模型設計和正則化是更重要的。他們考慮的問題,基於評論的電影評論家和電影屬性預測未來的票房收入的電影。他們的方法是基於Joshi等人的方法和的數據集,提出了一個線性回歸模型,用於從評論中提取的1、2、3-gram模型頻度數據訓練電影和審稿人的元數據。這個問題是特別有意思的,因為相對較少的情況下可用於訓練,每個實例(電影)包括一系列豐富的數據包括從各種評論網站的一些評論文字,以及結構化數據(類型、等級、演員等)的靈感來自Joshi等人的工作。他們的模型也可以工作在可以用1-gram、2-gram和3-gram模型,之後的研究使用人工神經網路代替線性模型。如果將單詞嵌入到低維空間中的表示的話,一個最大池表示卷積網路實例文件,和幾個完全連接的隱層允許複雜的非線性相互作用的學習。非線性模型可以提供一個相對誤差減少40%(MAE)的結果。
儘管ANN的參數可解釋性一貫是口碑不好的,但通過n-gram文本預測模型進行量化分析,是一個可以接受的方案。這樣,可以識別出最重要的文本輸入,而且能夠調研得到詞語和片語在不同組合之下的非線性關聯。
圖3.CNN如何運作
深度神經網路類型
A. RNN
循環卷積神經網路(RNN)背後的想法是使用順序的信息。在傳統神經網路的所有輸入(輸出)是相互獨立的,但對於許多導致性能差的任務, 如果一個句子中的下一個詞要被預測,就需要知道前面有哪個詞出現了,遞歸執行取決於之前的運算序列。另一種方式是循環卷積神經網路,長短期記憶序列(LSTM)可以解決這個問題.
圖4.卷積神經網路
1) 雙向(Bidirectional)循環卷積神經網路(RNN):雙向卷積神經網路在預測的時候,不止依賴之前的輸入,還要依賴之後的輸入。比如說,我要預測一個丟失的單詞,上下文(左右句子)的語境都需要直銷,相當於左右各自堆棧了一個卷積神經網,輸出是在兩個循環卷積神經網的隱含層基礎上進行計算的。
2) 深度(Deep)卷積神經網路(RNN):其他地方沒區別,在原來的雙向循環卷積神經網路的基礎上,堆疊了好多層,這樣增加了其學習能力。
圖5.雙向RNN結構
圖6.深度RNN結構
3) LSTM相比RNN並無太多新鮮之處,它們看上由一些元細胞組成,你可以把它們看作存儲當前狀態和當前輸入的黑盒子。在內部,保存什麼記憶(以及擦除什麼)由這些細胞(Cell)決定。然後,它們將以前的狀態、當前內存和輸入相結合。事實證明,這些類型的單元在捕獲長期依賴關係方面非常有效。
圖7.LSTM結構
循環與循環卷積神經網路是一種通過採用相同集合權重遞歸運行以對輸入進行結構化或標量化預測,或遍歷一個給定的拓撲結構以形成一個深度學習的神經網路。如果自然語言的學習主要是基於短語和句子的連續表示基於詞的嵌入,在這方面,RNN對序列和樹結構的學習是成功的。
如果一個詞句可以用獨立的樹結構進行分散式表達,這方面,RNN是很擅長的。它可以被看作對文本序列的語義建模,用來處理那種將文字序列轉化為固定長度向量的場景。循環卷積神經網路的參數可以通過聯合概率分布函數進行學習,如同其他NLP任務那樣,比如文本分析。
每個RNN單元可以學習詞頭和其子節點的複雜交互關係,進行建模。在一些特定的任務里,通過卷積和池化操作,循環卷積神經網可以抓取到最重要的語義和結構信息。
循環神經網路可以看成一些前向非循環圖的組合,循環神經網路就是搭建一些有反饋的神經網路,其樹結構可能是傾斜的。它們已被應用句法分析、句子層面情感分析和意譯檢測。給定一個句子的結構表示,例如一個解析樹,它們通過自下而上的方式遞歸地生成父表達式,通過組合標記生成短語表示,最終生成整個句子。句子級表示(或者短語短語)可以用來對給定的輸入語句進行最終分類。
因為反覆的反饋操作,循環卷積神經網可以實現時間和空間上的深度學習操作。為了將這些概念結合起來,最近學界提出了深循環網路。近來,循環神經網路之所以如此傑出,它通過循環連接實現了時間上的深度概念,又通過多個全連接層的堆疊(stack)實現了空間上的深度概念,它們是由疊加在一起的多個遞歸層構成的,這使得額外的深度(deep)概念被納入到時間處理中。
圖8.循環網路
神經網路的依賴性
為了捕捉遠距離的依賴關係,依賴卷積神經網路(DCNN)被提出來了。DCNN由一個卷積層之上長短期記憶(LSTM)網路構成,它與經典的神經網路略有不同,這取決於它的輸入。對於簡單的句子,LSTM可以在依賴內部捕獲其依賴關係。LSTM的隱含層由低層次的表達式給定,帶濾波器的卷積層和最大池化層負責提取具體的文本特徵和進行分類的操作。在文本建模上,DCNN一開始先用獨立的LSTM網路進行操作,第二層的LSTM則負責通過卷積做些編碼操作。
k-max pooling
K-Max Pooling的意思是:原先的Max
Pooling Over Time從Convolution層一系列特徵值中只取最強的那個值,那麼我們思路可以擴展一下,K-Max Pooling可以取所有特徵值中得分在Top –K的值,並保留這些特徵值原始的先後順序。K-Max Pooling可以表達同一類特徵出現多次的情形,即可以表達某類特徵的強度;另外,因為這些Top K特徵值的相對順序得以保留,所以應該說其保留了部分位置信息,但是這種位置信息只是特徵間的相對順序,而非絕對位置信息。這樣既提取除了句子中的較重要信息(不止一個),同時保留了它們的次序信息(相對位置)。同時,由於應用在最後的卷積層上只需要提取出k個值,允許不同長度的輸入。圖9.依賴網路
圖10.動態多層池化網路
其他一些神經網路
1) Muliti-Column CNN:這個模型共享相同的字嵌入作為卷積神經網路的多個列。通常使用的列數是三個,但它或多或少地取決於它必須使用的上下文。這些列用於分析問題的不同方面,即應答路徑、應答上下文和應答類型。通常作為問答系統的模型,這個框架結合嵌入學習,框架的概述如圖11所示,例如,對於問題的時候在英國發布的Avatar系統,其實體相關的節點進行查詢是自由的。這些相關的節點被視為候選答案(CQ)。然後,每個考生做出一個回答a,模型預測一個分數S(Q,A)來判斷它是否正確答案。
圖11. Muliti-Column CNN
2) Ranking CNN:
圖12. Ranking CNN
3) Context-dependent CNN:
圖13.Context dependent
CNN它由兩部分組成:卷積的句子模式,總結了源語言句子的意義和目標短語;匹配模型,比較了這兩種表示的多層感知器(bengio,2009)。設e為目標短語,f為源句,將源於E. First的源短語通過卷積句子模型投影到特徵向量x和y中,然後通過匹配模型計算匹配得分s(x,y)。最後,將分數引入到傳統的SMT系統中,作為附加功能,卷積句模型如圖13所示,該模型需要輸入文字的嵌入(預先訓練的地方)F和E然後反覆總結通過卷積和匯聚層輸入的意義,直到最後一層達到一個固定長度的向量表示。在第1層,卷積層以滑動窗口F和E分別與模型的所有相鄰的詞可能的組合物。卷積包含一個過濾器,為每個可能的組合生成一個新的特性。
自然語言處理
A.基本應用
1)A Re-ranking
Model for Dependency Parser with Recursive Convolutional Neural Network(遞歸卷積神經網路依存分析器的重新排序模型),提出了一個句法和組合語義的模型,他用了RCNN結合k-array的樹,「這個論文最大的貢獻是,他們把以前 Socher 提出的用原始 RNN 做 組合 這種聯繫 的 方法,給改良了。可以不再只能 modelbinary composition 了,可以 triple even more 了。具體可以見 Section 4 開始的那段寫的,就是一個 constituent parsing vs. dependency parsing 的問題。這個是他這個論文最大的貢獻。variant of RNN to handle more-than-two units of composition。」(https://www.jianshu.com/p/73dffce2c23a)2)Semantic
Clustering and Convolutional Neural Network for Short Text Categorization(短文本範疇的語義聚類與卷積神經網路):通過語義聚類和卷積神經網路進行建模,他們首先利用快速聚類演算法在嵌入空間中發現語義組:(1)基於搜索密度峰的快速聚類方法發現語義組;(2)為了調整多尺度的SUS,語義群被用於超選擇階段。由於每個詞的鄰居在嵌入空間中是語義相關的,因此可以使用聚類方法發現語義組。然後,在語義組的監督下檢測多尺度語義單元,為短文本引入有用的外部知識。這些有意義的語義單元被合併並送入卷積層,然後是最大池化操作。3)Capturing
Semantic Similarity for Entity Linking with Convolutional Neural Networks(用卷積神經網捕捉實體連接的語義相似度):這篇論文提出了一種利用卷積神經網路捕獲一個提及上下文和一個目標實體之間的語義對應關係的模型。這些卷積網路操作的多粒度開發各種主題的信息,和它們豐富的參數化給它們提高了學習能力,表徵不同主題的實例。他們提到的模型方然源文件的背景和潛在的實體目標記憶神經網路間的語義相似度。神經網路可以用來為句子分類任務和捕獲實體連接,可以證明將隔離實體連接相關話題的語義模型的相似性是有效的。這表明,在輸入文檔的多粒度卷積可以用於提供不同的語義上下文的概念。最後,它們展示了如何將這些網路與已有的實體連接系統集成起來。4)Dependency
Sensitive Convolutional Neural Networksfor Modeling Sentences and Documents(基於依賴關係的卷積神經網路在句子建模中的作用):一個依賴敏感卷積神經網路(DSCNN)可以用作文本歸納系統,它可以通過LSTM表徵句子。一般的CNN在進行句法分析的時候依賴局部slide滑行窗口,而DSCNN是end-to-end的全局分類系統,可以解決這樣的問題。B. 信息摘取
1) Event Extraction via Dynamic
Multi-Pooling Convolutional Neural Networks(通過動態多池化CNN進行事件抽取):「傳統的ACE事件抽取的方法首先依賴人工設計的特徵和複雜的NLP工具。這些傳統的方法缺少一般性,需要大量的人力成本,而且會產生誤差傳播以及數據稀疏問題。本文提出了一個新的時間抽取方法,目的是自動地抽取文本級別的以及句子級別的特徵,不需要使用複雜的NLP工具。我們提出了一個單詞表示模型來描述有意義的語義規律而且採用了一個基於卷積神經網路的框架來描述句子級別的線索。然而,CNN僅僅能描述句子中最重要的信息,而且當考慮多事件句子的時候可能丟失掉有價值的事實。我們提出了一個動態多池化CNN(dynamic multi-pooling convolutional neural network,DMCNN),為了保持更多的重要的信息,該方法根據事件觸發器和爭議使用動態的多池化層。實驗結果證明我們的方法比其他最好的方法(state-of-the-art methods)都要明顯地好。」(http://blog.sciencenet.cn/home.php?mod=space&uid=656867&do=blog&id=994488)2) Event Detection and Domain
Adaptation with Convolutional Neural Networks(基於卷積神經網路的事件檢測與域自適應):CNN用來事件檢測,進行特徵提取,其次可以做些域自適應,可以減輕些錯誤傳播,也可以找到一種更普適的字嵌入的方法。3) Combining Recurrent and Convolutional Neural
Networks for Relation Classification(組合遞歸卷積神經網路的關係分類):「此前方法存在的缺陷:傳統文本文類方法:性能很大程度上依賴於特徵的表示和選擇,然而,常用的特徵的表達方法經常忽略上下文信息、單詞在文章中的位置,在獲取辭彙語義方面達不到令人滿意的程度。high-ordern-grams和更為複雜的特徵表示方法雖然可以獲取上下文信息並且保留詞序,但是存在數據稀疏問題。
RecursiveNeuralNetwork遞歸神經網路:在構建句子表達方面很有效,但是它是基於樹結構來表達句意的,性能在很大程度上依賴文本樹結構,構建這樣的一個樹時間複雜度會很高至少是O(n^2),而且兩個句子之間的關係無法通過樹的結構表示,所以RecursiveNN不適合對長句子或文檔建模。
RecurrentNeuralNetwork循環神經網路:可以能夠很好的捕獲上下文信息,但他是有偏差的模型,後輸入的詞要比先輸入的詞佔有更重要的地位,所以在獲取整篇文檔語義時這種方法就不那麼有效了。
ConvolutionalNeuralNetwork卷積神經網路:是個無偏的模型,對比RNN可以很好的獲取文檔的語義信息,但是為了簡化卷積核都採用固定的窗口,難點在於確定窗口大小,太小的窗口可能丟失重要信息,太大的窗口又會擴大參數空間
創新點:
提出一個新的模型RecurrentConvolutional NeuralNetwork並將其用到文本分類當中。首先在學習詞的表達的時候,採用雙向循環結構獲取文本信息,比傳統的基於窗口的神經網路更能減少雜訊,而且在學習文本表達時可以大範圍的保留詞序。其次使用最大池化層獲取文本主要成分,自動判斷哪個特徵在文本分類過程中起更重要的作用。
優點:同時利用了RNN和CNN的優點,時間複雜度僅為O(n),與文本長度呈線性相關。」(http://www.lxway.com/4018556954.htm)
4) Comparing Convolutional Neural Networks to Traditional
Models for Slot Filling(詞槽填充的卷積神經網路與傳統模型比較):1)CNN的組合能更好地處理一系列不同的問題,這些問題比單獨的每種方法都要多。2)在關係參數之前將上下文分割開來,然後將其傳遞給卷積神經網路,以便更好地處理句子在關係分類中的特殊性,這優於目前最先進的分段CNN。3)他們對詞槽填充和是一個重要的因素,可以嘗試解決異文合併的衝突。4)它們為詞槽填充關係分類提供了一個基準,將有助於未來模型的直接比較,並顯示該數據集的結果與end-end系統結果相關。C. 文本摘要
1)Modelling,
Visualising and Summarising Documents with a Single Convolutional NeuralNetwork這篇論文採用了二級結構,一級句子建模和二級文檔建模都採用CNN來做,我個人覺得如果兩級都採用CNN感覺意義不大,因為感覺第二級CNN並沒有引入什麼新的信息,本質上CNN都是學的N-GRAM片段作為特徵,CNN從其機制上學不了特徵間的順序關係,所以套上多層感覺意義不太大。這個論文實驗部分只對比了這個模型和隨機模型的效果是有提升的,但是並沒有做二級結構和一級結構的對比,所以感覺說服力不足,因為也許這個提升完全是因為引入了CNN而不是由於二級結構導致的,所以感覺總體而言從方法到實驗都有點問題。(http://blog.csdn.net/malefactor/article/details/51009042)D.機器翻譯
1) Context-Dependent Translation
Selection Using Convolutional Neural Network:用統計學結合CNN做翻譯2) Encoding Source Language with
Convolutional Neural Network for Machine Translation:CNN加Gating做翻譯E.問答系統
1) Question Answering over Freebase with Multi-Column Convolutional
Neural Networks: 用multi-column卷積神經網路進行訓練,這樣可以獲取上下文之間的關聯。圖14.Multi-column卷積神經網訓練問答系統
應用卷積神經網路生成問題向量,使用卷積神經網路的多層代表問題的不同信息,並與答案集合求解,最終的得出問題答案的匹配值。
2) Modeling Relational Information in Question-Answer Pairs
with Convolutional Neural Networks:通過對問答對的句子embedding矩陣分別進行卷積,池化,得到feature然後進行二分類。F.語音識別
1)Convolutional
Neural Networks for Speech Recognition(卷積神經網路應用語音識別):這是一個卷積神經網路訓練隱馬爾科夫模型的思路。圖15.宗成慶《統計自然語言處理》第二版說明隱馬爾可夫模型
2) Analysis of
CNN-based Speech Recognition System using Raw Speech as Input: 用了兩層卷積層進行訓練。3) End-to-End Deep Neural Network for Automatic Speech
Recognition:這個也是用CNN訓練隱馬爾可夫模型,四層卷積,前兩層做最大池化,接著是兩層緊連接層,最後是一個softmax層,ReLU是激活函數。4) Applying Convolutional Neural Networks Concepts to Hybrid
NN-HMM Model for Speech Recognition:用卷積神經網路搞層次化的隱馬爾可夫模型,用最大池化層搭配濾波器來穩定語音輸入的頻域。圖16. 宗成慶《統計自然語言處理》第二版說明層次化隱馬爾可夫模型
更多關於語音識別上深度學習的應用資料可以參考
http://www.doc88.com/p-6186923069144.html
1推薦閱讀:
※Learning Explanatory Rules from Noisy Data 閱讀筆記4
※第三章 自然語言理解的技術分類及比較
※Bag of Word
※機器學習中的數學基礎(簡介)
※NLP——自然語言處理(三)text2vec包
TAG:深度學習DeepLearning | 自然語言處理 |