編者按:Elvis Saravia是“國立清華大學(xué)”(***)的博士生,主要研究NLP和情感計算。今年8月,Tom Youn等人更新了去年發(fā)表在IEEE雜志上的重磅文章《Recent Trends in Deep Learning Based Natural Language Processing》,總結(jié)了到今年為止,基于深度學(xué)習(xí)的自然語言處理(NLP)系統(tǒng)和應(yīng)用程序的一些最新趨勢。為了方便更多人閱讀,Elvis Saravia總結(jié)了這篇文章的主要內(nèi)容,回顧和比較了各類NLP任務(wù)中的最新技術(shù)。
在這篇綜述中,讀者可以詳細了解這一年來學(xué)界的一些大動作,它包含以下主題:
分布式表征的興起(例如word2vec)
卷積、循環(huán)和RNN
在強化學(xué)習(xí)中的應(yīng)用
句子的無監(jiān)督表征學(xué)習(xí)的最新進展
深度學(xué)習(xí)模型與記憶增強的結(jié)合
什么是NLP?
自然語言處理是通過構(gòu)建計算算法自動分析、表征人類自然語言的一個學(xué)科領(lǐng)域。如今,基于NLP的系統(tǒng)已經(jīng)實現(xiàn)廣泛應(yīng)用,比如Google強大的搜索引擎、亞馬遜的語音助手Alexa。NLP還可以幫助機器執(zhí)行和復(fù)雜自然語言有關(guān)的任務(wù),比如機器翻譯和對話生成。
長期以來,研究人員進行NLP研究主要依賴各種機器學(xué)習(xí)模型,以及手工制作的特征。但這么做帶來的隱患是由于語言信息被稀疏表征表示,會出現(xiàn)維度詛咒之類的問題。而隨著近年來詞嵌入(低維、分布式表征)的普及和成功,和傳統(tǒng)機器學(xué)習(xí)模型(如SVM、logistic回歸)相比,基于神經(jīng)網(wǎng)絡(luò)的模型在各種語言相關(guān)任務(wù)上取得了優(yōu)異的成果。
分布式表征
如前所述,手工制作的特征主要用于模擬自然語言任務(wù),它在神經(jīng)網(wǎng)絡(luò)被廣泛應(yīng)用于NLP前,一直使研究人員飽受維度詛咒困擾。
詞嵌入
詞嵌入是一種基于分布假設(shè)(出現(xiàn)在類似語境中具有相似含義的詞)的分布向量,它的作用是把一個維數(shù)為所有詞的數(shù)量的高維空間嵌入到一個維數(shù)低得多的連續(xù)向量空間中。通常情況下,詞嵌入會在任務(wù)上進行預(yù)訓(xùn)練,用淺層神經(jīng)網(wǎng)絡(luò)基于上下文預(yù)測單詞。下圖是Bengio及其同事當年提出的神經(jīng)語言模型:
詞向量傾向于嵌入語法和語義信息,而這種做法在各種NLP任務(wù)中(如情感分析)都取得了最先進的成果。
事實上,分布式表征在過去已經(jīng)被大量用于研究,但正是連續(xù)詞袋模型(CBOW)和Skip-Gram模型正式進入這個領(lǐng)域后,它才真正流行起來。這也確實是當前一種非常受歡迎的方法,因為它不僅能有效構(gòu)建高質(zhì)量的詞嵌入,還能被用于語義組合(如'man'+'royal'='king')。
Word2vec
2013年,Mikolav等人提出CBOW和skip-gram模型,這是Word2Vec模型中的兩個主要類別。其中,CBOW模型是一種構(gòu)建詞嵌入的神經(jīng)方法,它的目標是基于給定上下文和給定窗口大小,預(yù)測目標單詞(input word)的條件概率。同樣的,skip-gram模型也是一種構(gòu)建詞嵌入的神經(jīng)方法,但不同的是,它的目標是在給定中心目標單詞的情況下,預(yù)測上下文。
對于這兩種模型,詞嵌入的維度是由(以無監(jiān)督的方式)計算預(yù)測的準確率確定的。
使用詞嵌入的限制之一是當我們想要獲得諸如“hot potato”或“Boston Globe”之類短語的向量表示時,我們不能簡單地組合單個詞的向量表示,因為這些短語不代表單個詞的語義組合。因此當短語或句子很長的時候,整個問題會變得很復(fù)雜。
Word2vec模型的另一個限制是使用較小的窗口為對比單詞產(chǎn)生類似的嵌入,比如 “good”和“bad”,在一些比較重視這類差異的任務(wù)中(如情感分析),這種做法并不可取。此外,詞嵌入還高度依賴它們的應(yīng)用場景。為每個新任務(wù)重新訓(xùn)練特定的嵌入確實有意義,但這通常意味著高昂的計算成本,而且我們能通過負采樣達到一樣的效果。
Word2vec模型還存在其他問題,比如沒有考慮多義性因素、訓(xùn)練數(shù)據(jù)中存在偏見等……
字符嵌入
對于諸如詞性標記(POS)和命名實體識別(NER)之類的任務(wù),查看詞匯的詞法信息是有用的,尤其是像葡萄牙語、西班牙語和中文這些構(gòu)詞方法十分豐富的語言。我們是在字符級別分析文本,因此對于某些未知詞匯,利用這種嵌入方法有助于我們在不引入大型詞典的情況下,幫助模型解決問題。
最后需要注意的是,雖然字符級和字級的嵌入已經(jīng)成功應(yīng)用于各種NLP任務(wù),但它們在長期內(nèi)仍將受到質(zhì)疑。例如,Lucy和Gauthier最近的一項研究發(fā)現(xiàn),一些標準詞嵌入無法編碼許多顯著的常規(guī)感知特征,而且這些缺陷和詞與詞之間的相似性預(yù)測誤差密切相關(guān)。換句話說,如果我們只用分布式語義,它其實是無法理解單詞背后的概念的。上個月,Jacob Andreas等人也在自然語言處理系統(tǒng)的背景下就意義表征進行了激烈辯論。
卷積神經(jīng)網(wǎng)絡(luò)(CNN)
CNN基本上就是一種基于神經(jīng)的方法,它可以被看作是基于單詞或n-gram提取更高級別特征的特征函數(shù)。如今,CNN提取的抽象特征已經(jīng)被有效應(yīng)用于情感分析、機器翻譯和問答系統(tǒng)等任務(wù)。Collobert和Weston是首批將基于CNN的框架應(yīng)用于NLP任務(wù)的研究人員之一。他們的方法的目標是通過查找表將單詞轉(zhuǎn)換為向量表示,由此產(chǎn)生原始詞嵌入,可以在網(wǎng)絡(luò)訓(xùn)練期間學(xué)習(xí)權(quán)重(見下圖)。
為了用CNN進行句子建模,首先,他們把句子標記成一個個單詞,進一步將其轉(zhuǎn)換為d維的詞嵌入矩陣;然后,他們在該嵌入層上應(yīng)用卷積filter,產(chǎn)生所謂的特征映射;之后再進行最大池化操作,對每個filter應(yīng)用最大操作以獲得固定長度輸出并減小輸出的維數(shù);最后,產(chǎn)生最終的句子表示。
通過向上述基礎(chǔ)CNN添加更多的復(fù)雜性因素,使其適應(yīng)執(zhí)行基于詞的預(yù)測,我們可以用它研究諸如NER、情感分析和POS等問題。它的重點是需要一種基于窗口的方法,即對于每個詞,考察它相鄰詞匯(子句)的窗口大小。有了這個窗口,我們就能把CNN應(yīng)用于子句,預(yù)測窗口中心單詞——這也被稱為詞級分類。
但CNN的一個缺點是無法建模長距離依賴關(guān)系,這對所有NLP任務(wù)來說都很重要。為了解決這個問題,現(xiàn)在研究人員已經(jīng)把CNN和時延神經(jīng)網(wǎng)絡(luò)(TDNN)結(jié)合在一起,由后者在訓(xùn)練期間實現(xiàn)更大的上下文范圍。另外,動態(tài)卷積神經(jīng)網(wǎng)絡(luò)(DCNN)也已經(jīng)在不同任務(wù)上取得了成功,比如情緒預(yù)測和問題分類,它的特殊之處在于池化層,它用了一種動態(tài)k-max池化,能讓filter在句子建模過程中動態(tài)地跨越可變范圍,使句子中相隔甚遠的兩個詞之間都能產(chǎn)生語義聯(lián)系。
CNN還能基于長短不一的文本被用于更復(fù)雜的任務(wù),比如目標檢測、情感分析、短文本分類和諷刺檢測。然而,其中一些研究論文稱,當將基于CNN的模型用于分析twitter等微型文本時,我們必須引入外部知識。此外,CNN在query-document matching、語音識別、機器翻譯和問答上也有一定的用處,在涉及從低級詞匯中提取特征以形成高度語義概括的任務(wù)中,DCNN也經(jīng)常出現(xiàn)。
總體而言,CNN是有用的,因為它們可以在上下文窗口中挖掘語義線索,但它們在包吃連貫性和長距離語義關(guān)系時,還有一定欠缺。橡膠之下,RNN還是個更好的選擇。
遞歸神經(jīng)網(wǎng)絡(luò)(RNN)
RNN是一種專門處理序列信息的神經(jīng)網(wǎng)絡(luò),它循環(huán)往復(fù)地把前一步的計算結(jié)果作為條件,放進當前的輸入中。這些序列通常由固定大小的標記向量表示,按順序逐個輸入循環(huán)神經(jīng)元。下面是RNN的簡單圖示:
相比CNN,RNN的優(yōu)勢是能把之前處理好的信息并入當前計算,這使它適合在任意長度的序列中對上下文依賴性進行建模。目前,RNN一直是各類NLP研究的常規(guī)選擇,比如機器翻譯、圖像字幕和語言建模等。
但這并不意味著RNN相對CNN有絕對的優(yōu)勢,因為它們模擬的是數(shù)據(jù)完全不同的兩個方面,所以兩者能發(fā)揮多少作用需要看具體應(yīng)用場景,取決于任務(wù)所需的語義。
一般來說,RNN的輸入是one-hot編碼或詞嵌入,但它也能像CNN一樣接收抽象表征。簡單的RNN容易出現(xiàn)梯度消失,這意味著難以學(xué)習(xí)和難以調(diào)整較早層中的參數(shù)。為了解決這個問題,研究人員們陸續(xù)提出了LSTM、ResNets和GRU等多種變體。
RNN的變體
LSTM由三個門(輸入、遺忘和輸出)構(gòu)成,它通過三者控制信息流,獲取長距離依賴關(guān)系。GRU和LSTM很相近,不同的是它只有兩個門,更簡單,效率也更高。但一項研究也表明,目前我們很難判斷RNN的哪些門更重要,它們的選用主要還是取決于可用的算力。現(xiàn)在基于LSTM的模型已經(jīng)能解決序列到序列的映射(通過編碼器-解碼器框架),在機器翻譯、文本摘要、人工對話建模、回答模型、基于圖像的語言生成等任務(wù)中都有不錯的應(yīng)用。
總的來說,RNN在NLP領(lǐng)域的用處是廣泛的:
字級分類(例如,NER)
語言建模
句子級別分類(例如,情感極性)
語義匹配(例如,將消息與對話系統(tǒng)中的候選響應(yīng)相匹配)
自然語言生成(例如,機器翻譯、視覺QA和圖像字幕)
注意力機制
從本質(zhì)上說,注意力機制的作用對象是基于編碼器-解碼器框架的RNN,它能讓解碼器利用最后的隱藏狀態(tài),以及基于輸入隱藏狀態(tài)序列計算的信息(如上下文向量),這對于需要上下文對齊的任務(wù)有奇效。
當前注意力機制已經(jīng)成功被用于機器翻譯、文本摘要、圖像字幕、對話生成和情感分析。雖然有研究人員已經(jīng)提出了各種不同形式和類型的注意力機制,但未來它仍是NLP領(lǐng)域的一大重點研究方向。
遞歸神經(jīng)網(wǎng)絡(luò)
與RNN類似,遞歸神經(jīng)網(wǎng)絡(luò)是對連續(xù)數(shù)據(jù)建模的一種機制。而語言恰好可以被看成是“遞歸結(jié)構(gòu)”,其中單詞和子短語可以組成句子層次結(jié)構(gòu)中更高級的短語。在這種結(jié)構(gòu)中,非終端節(jié)點由其所有子節(jié)點的表征來表示,下面是一幅示意圖:
基礎(chǔ)RNN計算高級別短語的方法是自下而上組合成分,在它變體的MV-RNN中,單詞由矩陣和向量表示,這意味著每個成分(單詞/短語)被表示為參數(shù)矩陣。這種做法的弊端是可能會出現(xiàn)特別大的參數(shù),而為了解決這個問題,研究人員又提出了另一種RNN變體:遞歸神經(jīng)張量網(wǎng)絡(luò)(RNTN)——它通過在輸入向量之間添加更多交互,對參數(shù)大小進行了限制。
目前,RNN比較常見于以下領(lǐng)域:
語法分析
利用短語級表征來進行情緒分析
語義關(guān)系分類(例如,主題消息)
句子相關(guān)性
強化學(xué)習(xí)
強化學(xué)習(xí)包含傳統(tǒng)機器學(xué)習(xí)方法、訓(xùn)練智能體和設(shè)置獎勵。近年來它在自然語言生成(NLG)任務(wù)中嶄露頭角,如文本生成,但這個趨勢從本質(zhì)上看是一種“被迫轉(zhuǎn)型”。
和其他NLP任務(wù)一樣,以往研究人員在研究NLG任務(wù)時用的大多也是RNN,但基于RNN的生成器存在一個難以解決的問題,就是它的原理是用模型輸出單詞代替句子原本單詞,這就不可避免地會快速提高錯誤率。再加上我們不能用其他任務(wù)的性能衡量標準來評估語言生成模型,綜合影響之下,現(xiàn)在的NLG模型只能生成重復(fù)、矛盾、平淡的表達。
為了解決上述問題,學(xué)界向強化學(xué)習(xí)伸出了橄欖枝,它也確實在圖像字幕和機器翻譯中表現(xiàn)出色。在NLP任務(wù)中,強化學(xué)習(xí)框架由一個智能體(基于RNN的生成模型)組成,它與外部環(huán)境(在每個時間步看到的輸入詞和上下文向量)相互作用。智能體根據(jù)策略(參數(shù))選擇一個動作,該策略涉及在每個時間步預(yù)測序列的下一個單詞,每次完成預(yù)測后,智能體會更新其內(nèi)部狀態(tài)。預(yù)測完整個任務(wù)后,我們再統(tǒng)計智能體的獎勵收集情況,獎勵設(shè)置因任務(wù)而異,在NLG中,它們的獎勵可能是信息流。
盡管強化學(xué)習(xí)給了學(xué)界希望,但具體在用它時需要適當?shù)靥幚韯幼骱蜖顟B(tài)空間,避免過大空間影響智能體訓(xùn)練、探索。此外,生成對抗也開始被用于訓(xùn)練語言生成模型,這在對話系統(tǒng)中可能有一些用處,可以區(qū)分哪些話是人類說的,哪些是機器生成的。
無監(jiān)督學(xué)習(xí)
無監(jiān)督句子表征學(xué)習(xí)涉及以無監(jiān)督的方式將句子映射為固定大小的向量。它使用的分布式表征經(jīng)輔助任務(wù)訓(xùn)練,能從語言中捕獲語義和句法屬性。
skip-thoughts模型,和學(xué)習(xí)詞嵌入的算法類似,可以基于中心句預(yù)測上一個/下一個相鄰句子。該模型采用了當下流行的seq2seq框架,其中解碼器負責(zé)生成目標序列,編碼器可以被看作是通用特征提取器——甚至能在提取過程中學(xué)習(xí)詞嵌入。
深度生成模型
現(xiàn)如今NLP領(lǐng)域最流行的深度生成模型有變分自動編碼器(VAE)和生成對抗神經(jīng)網(wǎng)絡(luò)(GAN),它們能在潛在空間生成逼真的句子,并從中發(fā)現(xiàn)豐富的自然語言結(jié)構(gòu)。
眾所周知,由于潛在空間沒有約束,標準句子自編碼器生成的文本通常很“假”。VAE通過在隱藏的潛在空間上施加先驗分布,能使生成的句子接近人類自然語言表述。它由編碼器和生成器網(wǎng)絡(luò)兩部分構(gòu)成,執(zhí)行任務(wù)時,編碼器和生成器網(wǎng)絡(luò)先將輸入編碼到潛在空間中,然后從潛在空間生成樣本。它的訓(xùn)練目標是最大化生成器網(wǎng)絡(luò)中的對數(shù)似然的變分下界。
下面是一個基于RNN的VAE:
GAN本身十分靈活,所以它在很多NLP任務(wù)上都有用武之地。比如,和標準自編碼器相比,一個基于RNN的VAE生成模型可以產(chǎn)生形式更多樣化、表述更規(guī)整的句子。而其他基于GAN的模型也能把結(jié)構(gòu)化變量(如時態(tài)、情緒)結(jié)合進來,生成更符合語境的句子。
除此之外,GAN也可以被用來訓(xùn)練模型,使之能生成更貼近人類表述的文本。比如我們可以把LSTM用作生成器,把CNN作為區(qū)分真實數(shù)據(jù)和生成樣本的判別器。
但它也有問題,一個是不能反向傳播,第二個是這些深度生成模型本質(zhì)上都是黑盒,它們目前還缺乏標準化的評估工具。
記憶增強神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)中可以存儲的信息量稱為網(wǎng)絡(luò)容量(network capacity)。一般來講,利用一組神經(jīng)元來存儲信息的容量和神經(jīng)元的數(shù)量以及網(wǎng)絡(luò)的復(fù)雜度成正比。如果要存儲越多的信息,神經(jīng)元數(shù)量就要越多或者網(wǎng)絡(luò)要越復(fù)雜。為了增強網(wǎng)絡(luò)容量,一種比較簡單的方式是引入結(jié)構(gòu)化的記憶模塊,將和任務(wù)相關(guān)的短期記憶保存在記憶中,需要時再進行讀取。這種裝備外部記憶的神經(jīng)網(wǎng)絡(luò)也稱為記憶網(wǎng)絡(luò)(MN)或記憶增強神經(jīng)網(wǎng)絡(luò)(MANN)。
目前研究人員在這個方向做出的進展有動態(tài)記憶網(wǎng)絡(luò),它們在QA、語言建模、POS標記和情感分析等任務(wù)上有不錯的表現(xiàn)。
結(jié)論
到目前為止,我們已經(jīng)探討了基于神經(jīng)網(wǎng)絡(luò)的模型(如CNN和RNN)的優(yōu)點和局限,介紹了強化學(xué)習(xí)、無監(jiān)督學(xué)習(xí)和深度學(xué)習(xí)在NLP任務(wù)上的可能性,也知道了注意機制和記憶增強網(wǎng)絡(luò)在提高NLP神經(jīng)網(wǎng)絡(luò)模型性能上的能力。通過結(jié)合以上所有先進技術(shù),我們已經(jīng)能以令人信服的方式讓機器理解語言的復(fù)雜性。
但正如《NAACL研討會深思:NLP泛化模型背后的虛假和脆弱》這篇文章揭露的,現(xiàn)在的許多NLP模型依然充滿脆弱和虛假,未來,我們還需要把研究重心放到引入常識性知識和人類行為建模上。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4777瀏覽量
100973 -
機器翻譯
+關(guān)注
關(guān)注
0文章
139瀏覽量
14919 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5511瀏覽量
121350
原文標題:NLP深度學(xué)習(xí):近期趨勢的總體概述
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論