用于文本情感分析的深度學(xué)習(xí)方法綜述(中)

文:清華大學(xué)深圳研究院 楊余久2018年第五期

    文本情感分析旨在對蘊涵在文本中的觀點和情感進行挖掘和分析,進而可以在個性化服務(wù)、推薦系統(tǒng)、輿情監(jiān)測和產(chǎn)品調(diào)研等應(yīng)用方面提升性能。對于文本情感分析,從機器學(xué)習(xí)的角度,一般可以把它轉(zhuǎn)化成分類問題,其中處理的關(guān)鍵在于文本表示、特征提取以及分類器模型建立,而傳統(tǒng)方法中最為核心的是情感特征詞典構(gòu)建。近年來,深度學(xué)習(xí)方法在圖像、語音等諸多領(lǐng)域取得了令人矚目的進展,相比于傳統(tǒng)的機器學(xué)習(xí)方法,該方法的最大優(yōu)勢就是可以從大量的數(shù)據(jù)樣本中自動地學(xué)習(xí)出豐富、有效的特征,從而獲得更好的效果。已有研究表明,在文本表示層面,詞語向量表示方法可以獲取文本的語義、語法以及自身結(jié)構(gòu)信息,為情感分析研究提供堅實基礎(chǔ),并成為當(dāng)前該領(lǐng)域的研究熱點。本文首先介紹了文本情感分析的概念和問題分類,對深度學(xué)習(xí)在文本情感分析中的相關(guān)工作進行梳理,詳細討論了文本情感分析中的文本表示方法以及深度學(xué)習(xí)模型,介紹了當(dāng)前深度學(xué)習(xí)在文本情感分析應(yīng)用中存在的問題,并對未來該領(lǐng)域研究方向和趨勢進行了展望。

3.3字符級別

    基于字符流(charactersteam)的文本表示方法將文檔中的字符作為模型的初始輸入,可以獲取每個詞語的結(jié)構(gòu)性信息,并且這種表示方式對語言不敏感,多數(shù)文字都是字符形式的,一些非字符形式的文字(如中文),也都有著相對應(yīng)的字符表示形式(如中文的拼音),當(dāng)我們訓(xùn)練好模型后,可以很方便的處理各種語言的文本。但是另外一方面,字符級別的表示難以獲取文檔的結(jié)構(gòu)性和語義性信息,采用這種方法對文本進行表示需要更多的處理,求解問題的計算復(fù)雜度也會比較高。

    為了獲取更高層次的文檔結(jié)構(gòu)和語義信息,常常與深度網(wǎng)絡(luò)模型相結(jié)合,利用深度網(wǎng)絡(luò)強大的特征表示和逐層學(xué)習(xí)特征的能力。ZhangX等人[103]中受到盲文的編碼方法啟發(fā),基于字符對文檔進行編碼,然后利用深度卷積神經(jīng)網(wǎng)絡(luò)對文檔進行話題分類以及情感分析,構(gòu)造出可以適用于多語言并且準確性也很高的文本處理模型。Dos-SantosCN等人[18]借鑒連續(xù)詞語向量的學(xué)習(xí)思路,首先將字符表里的每個字符表示成連續(xù)向量,輸入到卷積神經(jīng)網(wǎng)絡(luò),獲取詞語向量的字符結(jié)構(gòu)性信息。將這種詞語結(jié)構(gòu)性信息表示加入原來的詞語向量,使詞語向量可以表征更加豐富的信息。

4  深度學(xué)習(xí)的文本情感分析方法

4.1前饋神經(jīng)網(wǎng)絡(luò)(FNNs)結(jié)構(gòu)及其在文本情感分析應(yīng)用

    FNNs一般指這樣的網(wǎng)絡(luò):各神經(jīng)元從輸入層開始,接收前一級輸入,并輸入到下一級,直至輸出層,整個網(wǎng)絡(luò)中無反饋,可以用一個無環(huán)圖來表示。多層感知機(Multi-LayerPerceptron,MLP)是一種典型的FNN,但MLP是一種淺層網(wǎng)絡(luò),在本文中我們主要討論基于受限玻爾茲曼機(RestrictedBoltzmannMachine,RBM)[21][37][78]的深層前饋神經(jīng)網(wǎng)絡(luò):深層波爾茲曼機(DeepBoltzmannMachine,DBM)以及深度信任網(wǎng)絡(luò)(DeepBeliefNetwork,DBN)。

4.1.1受限玻爾茲曼機(RBM)

    RBM是一種雙層的無向圖模型,第一層是包含若干單元的可見層,也是網(wǎng)絡(luò)的輸入層,第二是包含若干單元的隱含層,也是網(wǎng)絡(luò)的輸出層,典型的RBM結(jié)構(gòu)如圖5所示,其中是可見層單元狀態(tài),h=(h1,h2,...hn)是隱含層單元狀態(tài),m,n分別為可見層和隱含層的單元數(shù),是網(wǎng)絡(luò)的參數(shù),是隱含層與可視層之間的連接矩陣,c=(c1,c2...cn),是隱含層單元的偏置,b=(b1,b2,...bm)是可視層單元的偏置。與一般的網(wǎng)絡(luò)不同的是,相同層的單元之間沒有直接連接關(guān)系。

圖5RBM的網(wǎng)絡(luò)結(jié)構(gòu)

    事實上,RBM是一種基于能量理論的網(wǎng)絡(luò)模型(由一般的能量模型到RBM的演化,可以參考[6]中第5節(jié)“Energy-BasedModelsandBoltzmannMachines”中的詳細說明),對于能量模型來說,單元的狀態(tài)分布只需要滿足指數(shù)家族分布中的一種即可[92],對于不同的實際問題可以選擇不同的分布,但有些分布會使模型很難訓(xùn)練[32]。使所有的單元狀態(tài)分布滿足伯努利分布,也即每個單元只有兩個狀態(tài)值,并選擇狀態(tài)空間為{0,1}時,也即對,可以帶來計算上的很多便利,并且0,1取值也有很好的物理含義,因此多數(shù)RBM的單元狀態(tài)值選擇{0,1}。

當(dāng)每個單元的取值為{0,1}時,網(wǎng)絡(luò)的能量可以如下描述:

可視層與隱含層的聯(lián)合概率分布為:

Z是歸一項。可視層的分布p(v),也即p(v,h)的邊緣分布:

    對RBM網(wǎng)絡(luò)模型的訓(xùn)練是希望最大化p(v)的對數(shù)似然,使用隨機梯度進行訓(xùn)練,并且使用對比差異(ContrastiveDivergence)方法[13]進行梯度的近似計算。更細節(jié)的訓(xùn)練方法可以參看[20],文章給出了很清晰的介紹,并且包含訓(xùn)練RBM模型的偽代碼。

4.1.2深層波爾茲曼機(DBM)以及深度信任網(wǎng)絡(luò)(DBN)

    DBM與DBN都是基于RBM的深層前饋網(wǎng)絡(luò),典型結(jié)構(gòu)如圖6-左、6-中所示。二者有著很多相似,但也具有很多本質(zhì)的不同,下面嘗試從以下三個方面進行說明:網(wǎng)絡(luò)結(jié)構(gòu)、適用問題以及訓(xùn)練方法。

    從網(wǎng)絡(luò)結(jié)構(gòu)上來說,DBM和DBN都可以看作是層疊RBM網(wǎng)絡(luò),都是一種概率圖模型,但是DBM是完全無向圖,可以對應(yīng)于圖模型中的馬爾科夫隨機場;而DBN的網(wǎng)絡(luò)結(jié)構(gòu)中只有最上面的兩層是無方向的,構(gòu)成了真正的RBM,剩余的層之間是有向的,因此DBN是一種有向圖,可以對應(yīng)于圖模型中含有很多隱含層以及稠密連接的Sigmoid信任網(wǎng)絡(luò)。

    DBM與DBN不同的網(wǎng)絡(luò)結(jié)構(gòu),使得二者適用的問題有所不同。由于DBM具備的結(jié)構(gòu)特性,在輸入和輸出之間可以相互推理,使DBM網(wǎng)絡(luò)更適合構(gòu)造自動編碼機進行特征編碼與提取[35][76]。而DBN中低層單元的狀態(tài)只受上一層的影響,也就是推理結(jié)構(gòu)由輸出到輸入,也即由類別(輸出)可以推理出數(shù)據(jù)的分布(也就是初始輸入),因此DBN一般更適用于做分類[79]。

圖6基于RBM的FNNs典型結(jié)構(gòu)。左:DBN的網(wǎng)絡(luò)結(jié)構(gòu),有向和無向混合圖模型;

中:DBM的網(wǎng)絡(luò)結(jié)構(gòu),無向概率圖模型;右:訓(xùn)練DBM隱含層時的展開拓撲結(jié)構(gòu)。

    從訓(xùn)練方法上來看,二者都使用類似的訓(xùn)練框架:首先使用大量的無標(biāo)簽數(shù)據(jù)對網(wǎng)絡(luò)進行逐層貪婪的預(yù)訓(xùn)練,然后使用一些有標(biāo)簽的數(shù)據(jù)進行網(wǎng)絡(luò)參數(shù)的調(diào)整[8][10]。但是由于網(wǎng)絡(luò)結(jié)構(gòu)的不同,二者在預(yù)訓(xùn)練以及參數(shù)調(diào)整時會有所不同:對于DBN來說,由于網(wǎng)絡(luò)的有向性,在訓(xùn)練時只需要把相鄰兩層看作一個RBM進行逐層訓(xùn)練即可[8];但是對于DBM來說,除了第一層和最后一層,中間的每一層都受到兩方面的影響,在訓(xùn)練時一般把相鄰兩層展開成一個三層神經(jīng)網(wǎng)絡(luò)[85][36](如圖6-右所示)。

4.1.3激活函數(shù)

    我們知道在RBM模型中,神經(jīng)單元的狀態(tài)取值{0,1},隱含層單元的狀態(tài)是根據(jù)輸入層的狀態(tài)取值以及權(quán)值矩陣計算出來的,但是計算的結(jié)果并不是0和1,這時往往對計算結(jié)果進行映射,然后再輸出給隱含層單元,由于選擇的這個映射函數(shù)決定了隱含單元的狀態(tài)是否被激活(取1表示激活),這個映射函數(shù)一般也被稱為激活函數(shù)(ActivationFunction)。

    激活函數(shù)一般具備以下兩個特征:可以將輸入映射到神經(jīng)單元的取值空間;具有連續(xù)可導(dǎo)性,因為在網(wǎng)絡(luò)的訓(xùn)練中需要進行梯度的計算。常用的兩個激活函數(shù)為Sigmoid函數(shù)(也稱為羅杰斯特函數(shù))以及雙曲正切函數(shù)tanh,如圖7-左,其中

    Sigmoid函數(shù)更符合神經(jīng)元的自然解釋(它將值映射到0和1,正好對應(yīng)神經(jīng)元的狀態(tài),被激活取值為1,否則為0),并且適用較淺層的前饋網(wǎng)絡(luò),如只有一個隱含層的多層感知機(MLP),而雙曲正切函數(shù)在深度前饋網(wǎng)絡(luò)的訓(xùn)練中可以獲得更好的效果[28]。GlorotX等人[30]通過實驗展示了不同激活函數(shù)的選擇給前饋網(wǎng)絡(luò)的訓(xùn)練帶來的影響。

 

圖7幾種激活函數(shù)曲線圖。左:比較常用的Sigmoid函數(shù)以及雙曲正切函數(shù);

右:比較適用于稀疏數(shù)據(jù)的Rectifier函數(shù)以及其平滑形式;

Bengio等人[28]提出了適用于稀疏數(shù)據(jù)的校正神經(jīng)元以及深度稀疏校正神經(jīng)網(wǎng)絡(luò),其激活函數(shù)是

而為了方便計算梯度,采用平滑形式[16]

    二者的函數(shù)曲線如圖7-右所示。這種激活函數(shù)更適合于數(shù)據(jù)本身具備很大稀疏的問題,如采用BOW或者VSM進行特征表示的文本分類問題,包含情感分析。

4.1.4FNNs在情感分析上的應(yīng)用

    DBM以及DBN在被提出時多是應(yīng)用于圖像相關(guān)領(lǐng)域(如MNIST數(shù)字手寫體識別[85]),目前也有很多研究人員借鑒在圖像處理中DBM與DBN的應(yīng)用方法,將二者應(yīng)用于文本情感分析中。

    比較通用的做法是將文本通過BOW模型表示成0,1特征向量,作為原始輸入,然后構(gòu)建DBN模型,然后根據(jù)逐層貪婪的訓(xùn)練方法對DBN進行訓(xùn)練,得到可以直接進行分類的DBN網(wǎng)絡(luò)[76][96]。使用這種方式的主要工作在于三點:一是文檔集詞典的構(gòu)建,選擇那些詞語作為詞典影響著文本的BOW特征表示,也對后續(xù)的訓(xùn)練和分類效果有著很大的影響;二是網(wǎng)絡(luò)結(jié)構(gòu)的構(gòu)建,對于分類問題,網(wǎng)絡(luò)的輸入層單元數(shù)以及輸出層單元數(shù)是確定的,但是使用多少個隱含層以及每層使用多少單元需要仔細考慮,如何確定網(wǎng)絡(luò)結(jié)構(gòu)目前還沒有很好的指導(dǎo)方法,需要實驗中積累經(jīng)驗,一般網(wǎng)絡(luò)的規(guī)模與數(shù)據(jù)量的大小具有正相關(guān)關(guān)系;最后就是有訓(xùn)練數(shù)據(jù)的標(biāo)注,盡管對于DBN的訓(xùn)練可以先使用大量的無標(biāo)簽數(shù)據(jù)進行預(yù)訓(xùn)練,但是在參數(shù)調(diào)整過程中也需要相對傳統(tǒng)機器學(xué)習(xí)方法較多的有標(biāo)簽數(shù)據(jù)。

    在這個通用方法框架基礎(chǔ)上,有很多研究人員進行改進。SunX等人[86]將微博中由相互評論構(gòu)成的社交關(guān)系引入特征中,與基于情感詞典獲取的特征一起構(gòu)建了用于微博情感分析的特征向量,然后使用通用的DBN網(wǎng)絡(luò)模型進行中文微博的情感分析。ZhouS等人[101]將DBN網(wǎng)絡(luò)與主動學(xué)習(xí)(ActiveLearning)[11]方法相結(jié)合,利用主動學(xué)習(xí)方法得到需要標(biāo)注的數(shù)據(jù)進行標(biāo)注,再對DBN網(wǎng)絡(luò)進行參數(shù)調(diào)整,獲得了更好的情感正負分類效果。在[102]中,ZhouS等人引入了Fuzzy因素,先使用通過DBN訓(xùn)練方法獲得模型參數(shù),然后根據(jù)訓(xùn)練好的模型計算Fuzzy因子,將Fuzzy因子加入DBN網(wǎng)絡(luò),然后重新訓(xùn)練得到最后的分類模型。

    除了使用DBN直接進行分類模型的訓(xùn)練,還有可以使用DBM對文本進行編碼與特征提取,然后用提取出的特征訓(xùn)練SVM等分類器,僅僅將深度網(wǎng)絡(luò)作為自動提取特征的工具。在[29]中GlorotX等人基于這種思想針對大量多領(lǐng)域商品評論數(shù)據(jù)的情感分析提出了領(lǐng)域自適應(yīng)的深度學(xué)習(xí)方法。利用使用rectifier神經(jīng)單元[28]的DBM自動編碼機對商品評論文本進行特征編碼,在訓(xùn)練網(wǎng)絡(luò)的時候,將不同商品領(lǐng)域內(nèi)的評論文本混合在一起作為訓(xùn)練數(shù)據(jù)。用這種網(wǎng)絡(luò)提取的商品評論文本特征可以具備領(lǐng)域適應(yīng)性,我們只需要使用某一個領(lǐng)域內(nèi)的商品評論文本的特征以及情感標(biāo)簽訓(xùn)練出情感分類器(如SVM),這個情感分類器就可以對其他領(lǐng)域的商品評論文本進行情感分析。

4.2遞歸神經(jīng)網(wǎng)絡(luò)(RNN)結(jié)構(gòu)及其在文本情感分析應(yīng)用

4.2.1標(biāo)準RecursiveNN

    標(biāo)準RecursiveNN模型由GollerC[25]以及SocherR[81]等提出,其網(wǎng)絡(luò)結(jié)構(gòu)是一棵二叉樹,葉子節(jié)點是所處理問題的基本單元,如句子中的詞語以及圖像中的分割區(qū)域,非葉子節(jié)點是網(wǎng)絡(luò)的隱含節(jié)點,在處理的時候一般采用從低到上的方式進行。RecursiveNN模型主要有三種使用方式,一種是不固定網(wǎng)絡(luò)結(jié)構(gòu),希望自動地學(xué)習(xí)出這種層次性的結(jié)構(gòu),從而用于句子的詞法樹自動構(gòu)建以及圖像不同分割區(qū)域關(guān)系的構(gòu)建[81];第二種是根據(jù)詞法分析得到句子固定的網(wǎng)絡(luò)結(jié)構(gòu),將葉子節(jié)點處的詞語表示為向量并作為網(wǎng)絡(luò)的參數(shù),然后通過訓(xùn)練網(wǎng)絡(luò)模型得到詞語以及句子的向量表示[77][64];還可以通過固定網(wǎng)絡(luò)結(jié)構(gòu),來學(xué)習(xí)短語以及句子的情感極性,用于文本的情感分析,下面主要分析RecursiveNN模型在文本情感分析上的應(yīng)用。

    為了更清楚的表述,我們以三個詞語長度的短語為例說明如何使用遞歸神經(jīng)進行文本情感分析,如圖8-左上所示。對一個句子或者短語,首先進行詞法分析,獲得如圖所示的詞法樹,然后將處于葉子節(jié)點的詞語表示成d維的詞語向量,對于非葉子節(jié)點,也將其看作與詞語一樣的單元,其向量表示根據(jù)它的兩個子節(jié)點使用函數(shù)g進行計算。每個節(jié)點都會輸出它的情感標(biāo)簽,對于節(jié)點a,其節(jié)點標(biāo)簽可以由

    計算得出,可情感分類的權(quán)值矩陣,C是情感類別數(shù)目,d是詞語向量維度。對于目前提出的很多種RecursiveNN模型,它們在詞語表示和節(jié)點標(biāo)簽輸出上使用的策略相同,不同的是如何計算隱含父節(jié)點的向量表示。

4.2.2隱含節(jié)點的計算

    在標(biāo)準RecursiveNN中,將兩個子節(jié)點的向量表示拼接在一起,然后與父節(jié)點全連接,在輸出的時候一般采用雙曲正切函數(shù),對于圖8-左上所示的三元詞組,p1,p2可以按照如下的組合方程計算:

    其中,是權(quán)值矩陣,也是標(biāo)準RecursiveNN中關(guān)鍵的參數(shù),它是全局共享的,也就是計算每一個隱含節(jié)點時,W是相同的。f(.)就是選擇的非線性輸出函數(shù),并且對于輸入的向量是逐元素作用的。

    Socher等人[80]認為多數(shù)參數(shù)與詞語有關(guān),并且根據(jù)非線性函數(shù)計算出來的長短語的向量表示與有所參與的詞語相關(guān),在標(biāo)準的RecursiveNN中,長短語中的很多詞語僅僅是通過隱含的關(guān)系進行相互作用,比如a、b、c共同組成了整個短語,但是a與b、c之間的相互作用很弱?;谶@個想法,Soche等人[80]將每個詞語與短語都表示成一個向量和矩陣對的形式,如圖8-左下所示,提出了Matrix-VectorRecursiveNeuralNetwork(MV-RNN)。根據(jù)這種表示,隱含節(jié)點(p1,P1)可按如下的組合方程計算:

    其中每個詞語矩陣的大小是d*d,以及W與標(biāo)準RecursiveNN中一樣,用來計算隱含節(jié)點的矩陣表示,并且也是全局共享的。(p2,P2)可以類似的計算。

    MV-RNN可以加強組成一個短語的所有詞語之間的相互作用,但是每個詞語以及隱含節(jié)點都使用一個矩陣來表示,使網(wǎng)絡(luò)參數(shù)的太多并且隨著短語長度的不同而變化。在[83]中,作者使用一個基于全局張量的組合方程對所有隱含節(jié)點進行計算,并將這種網(wǎng)絡(luò)稱為遞歸張量神經(jīng)網(wǎng)絡(luò)(RecursiveNeuralTensorNetwork,RNTN),每個詞語與隱含節(jié)點仍然使用d維的詞語向量表示,以p1為例,可以如下計算:

式(22)、(23)中,f(.)以及W與標(biāo)準RecursiveNN中一樣,是全局張量,每一個分量矩陣

,如圖8-右表示了詞向量維度是2時的情形。

4.2.3RecursiveNNs進行文本情感分析

    使用RecursiveNNs進行文本情感分析時主要需要考慮以下三個方面:詞語向量的初始化;網(wǎng)絡(luò)結(jié)構(gòu),也就是詞法結(jié)構(gòu)的確定;訓(xùn)練方法以及訓(xùn)練數(shù)據(jù)的標(biāo)注。

    詞語向量可以使用零均值,小方差的高斯噪聲進行隨機的初始化,但一般采用其他連續(xù)詞語向量學(xué)習(xí)方法(如第2節(jié)中的word2vec)等預(yù)先訓(xùn)練出來的結(jié)果進行初始化可以獲取更好的效果[49][90][84]。

    對于網(wǎng)絡(luò)結(jié)構(gòu),一般是先通過詞法分析構(gòu)建出詞法分析樹,在固定的樹形結(jié)構(gòu)上構(gòu)建網(wǎng)絡(luò)[83][77][49]。SocherR等人[84]通過引入重構(gòu)誤差,逐步貪婪的自動構(gòu)建網(wǎng)絡(luò)層次。重構(gòu)就是根據(jù)父親節(jié)點的詞向量和重構(gòu)連接矩陣來重構(gòu)出兩個子節(jié)點的詞向量,根據(jù)重構(gòu)子節(jié)點詞向量的與原子節(jié)點詞向量誤差來計算重構(gòu)誤差。逐步貪婪就是每一次選擇兩個相鄰的節(jié)點作為兩個子節(jié)點,計算父節(jié)點的詞向量,然后重構(gòu)兩個子節(jié)點向量,計算重構(gòu)誤差,每次選擇當(dāng)前重構(gòu)誤差最小的組合進行合并,直到合并到根節(jié)點。

    對RecursiveNNs的訓(xùn)練一般是采用有監(jiān)督的方法,將最小化網(wǎng)絡(luò)中每個節(jié)點的情感分布與真實標(biāo)注的誤差之和作為優(yōu)化目標(biāo)[83],采用隨機梯度下降以及反向傳播算法進行訓(xùn)練。因此需要對訓(xùn)練語句中的每個詞語和短語的情感極性進行標(biāo)注,這是比較大的人工標(biāo)注工作量,可以現(xiàn)有的情感詞典幫助訓(xùn)練[83][77]。而SocherR等人[84]則使用了半監(jiān)督的方法,在模型的優(yōu)化目標(biāo)中,除了考慮最小化情感標(biāo)簽的誤差之和,還考慮了最小化所有節(jié)點的重構(gòu)誤差之和,重構(gòu)誤差的計算不需要標(biāo)注數(shù)據(jù)。

4.3卷積神經(jīng)網(wǎng)絡(luò)(CNNs)結(jié)構(gòu)及其在文本情感分析應(yīng)用

    CNNs最初主要由LeCunY等人提出并應(yīng)用于圖像領(lǐng)域內(nèi)的手寫體識別[50][53][51],基于深度CNNs構(gòu)建的LeNet-5,取得了很好的效果。近年來,深度CNNs在圖像物體分類[42]、圖像語義分割[27]以及語音識別[23]中取得了令人矚目的成果。相比于其他深度網(wǎng)絡(luò)模型,CNNs主要具備以下特征:通過卷積核(convolutionkernel,很多文獻中也稱為filter)對輸入進行卷積計算,獲取局部的結(jié)構(gòu)特征[51],并且可以逐層的提取更加接近語義層面的特征表示;通過權(quán)值共享的方式可以使用較少的參數(shù)來表示更多的神經(jīng)元連接關(guān)系連接[3];可以使用多個通道(很多文獻中也稱為FeatureMaps)對輸入進行多維度的特征提取;在卷積層后的往往會有降采樣層(Subsampling,也常被稱為池化、Pooling),來降低網(wǎng)絡(luò)的復(fù)雜性。

    基于在圖像和語音領(lǐng)域中使用CNNs的經(jīng)驗,目前有很多研究人員提出了對文本進行建模和分析的CNNs[47][51][45][40],這些網(wǎng)絡(luò)都借鑒了很多CNNs在圖像處理中的做法,但也有很多針對文本處理的改變,當(dāng)前較為常用的三種用于文本建模和情感分析的CNNs構(gòu)建方法,如圖9所示。

    基于深度CNNs的文本情感分析方法,一般具有如圖10所示的處理流程,下面對在文本情感分析的三種常用CNNs在各個步驟中的具體操作進行說明,在最后給出應(yīng)用這些模型進行文本情感分析的方法概述。

4.3.1CNN結(jié)構(gòu)中文本表示

    在用于文本處理中的CNN方法中,首先使用連續(xù)向量的方式表示詞語,記為詞典中索引序號為j的詞語的列向量表示,一般先把詞典中所有詞語的向量表示用一個矩陣表示,|V|是詞典的大小,在使用詞語向量時用查表的方式獲取對應(yīng)詞語的列向量表示:

    Wdic作為CNN網(wǎng)絡(luò)的參數(shù),可以有以下處理方式:隨機的初始化,隨著網(wǎng)絡(luò)的訓(xùn)練不斷調(diào)整;使用word2vec等方法學(xué)習(xí)到的詞向量初始化,并一直固定不變;使用詞語向量初始化,并隨著網(wǎng)絡(luò)的訓(xùn)練進行微調(diào)。KimY[47]對這些方式都進行了嘗試,通過實驗表明最后一種方式可以獲取最好的效果,而第一種隨機初始化的方式效果最差。而對于長度為ι 的句子,可以按每個詞語在句子中的順序表示成矩陣的形式

    圖9常見的用于文本建模與情感分析的CNNs。左上:所示的網(wǎng)絡(luò)中對各個步驟采用的處理方式是比較常用的做法,記為CommonConvolutionalNeuralNetwork(C-CNN)[47];左下:將卷積操作應(yīng)用于基于能量模型的RBM中,主要用于文本特征提取和降維,記為ConvolutionalRestrictedBoltzmannMachine(CRBM)[40];右:在每個池化層,采用Max-k池化方式,并且每一個池化層的k值動態(tài)計算,記為DynamicConvolutionalNeuralNetwork(DCNN)[45]。

圖10CNNs用于文本情感分析的一般處理步驟

4.3.2CNN關(guān)鍵步驟:

A、卷積操作

    在用于圖像的CNN網(wǎng)絡(luò)中的卷積操作都是矩陣卷積,并且不考慮邊緣補零,也就是將卷積核矩陣在被卷積輸入矩陣上進行滑動,來得到卷積后的結(jié)果矩陣。在用于文本情感分析的CNN網(wǎng)絡(luò)中,卷積操作有兩種,一種是類似于圖像中的矩陣滑動窗口形式的卷積,一種是向量形式的卷積。記卷積核為,被卷積輸入是句子的矩陣表示C-CNN(如圖9-左上)與CRBM(如圖9-左下)采用矩陣滑動窗口形式的卷積操作,取M的寬度NM=d,n為窗口大小,卷積后將得到一個向量c。

卷積窗口從句子起始詞語到末尾詞語滑動,一般有兩種方式。C-CNN中卷積核與句子起始詞語對齊,每次滑動一個詞語,直到句子末尾,這種情形下c中每一個元素cj可以如下計算:

    在很多文章中,會將這種方式表示成把窗口內(nèi)的詞語向量拼接成長向量,然后再進行卷積的形式,如[18][2][14],其數(shù)學(xué)本質(zhì)與上面所述是一致的。

CRBM中采用n-gram方式,以當(dāng)前詞語為中心,取前后各(n-1)/2大小的窗口,每次滑動一個詞語,并對進行補零,這種情形下c中每一個元素cj可以如下計算:

DCNN中采用了向量形式的卷積操作,卷積核M的寬度NM也取d,將S以及M中的對應(yīng)列分別進行向量卷積形式,最后卷積的結(jié)果是一個矩陣C。記:

為列向量。

在向量形式的卷積操作中,對卷積核向量與被卷積向量進行卷積操作得到的結(jié)果c中的每一個元素cj,可以如下計算:

根據(jù)式(26)可以導(dǎo)出兩種操作方式:narrow方式要求ι≥ n ,并使得;wide方式對二者的大小沒有要求,將使,對c中j≤ n-1以及j>ι的元素計算,將會導(dǎo)致對s的索引超出邊界,這時采用補零處理。在DCNN中使用了wide方式,因此

B、多通道卷積

    在CNN網(wǎng)絡(luò)中,為了可以獲取輸入的更多維度特征,往往會使用多個卷積核進行特征提取,借助于圖像里面的彩色通道概念,也常稱為多通道卷積。在處理文本情感分析的CNN網(wǎng)絡(luò),根據(jù)卷積方法以及網(wǎng)絡(luò)結(jié)構(gòu)的不同,對多通道卷積會有不同的處理方式。一般來說,使用矩陣滑動窗口卷積方式,每個卷積通道可以得到一個結(jié)果向量,相互之間沒有影響。而對于使用列向量分量形式的卷積方式,每個卷積通道得到一個結(jié)果矩陣,可以作為后續(xù)卷積層的輸入(一般還會經(jīng)過Pooling和分線性映射,這里先忽略)。在后續(xù)卷積層進行卷積時,每個通道的輸入是上一層所有的卷積結(jié)果矩陣,如圖9-右所示,我們記Cji為第j卷積層的第i通道的卷積結(jié)果,Mji為j卷積層第i個第卷積核,j卷積層共有mj個通道,那么第j+1卷積層的輸出結(jié)果是:

*表示卷積操作。

C、池化(Pooling)

    在CNN網(wǎng)絡(luò)中,卷積層之后一般都會有一個池化層進行降采樣,池化層的主要目的是降低經(jīng)過卷積操作后獲取的局部特征的維度,并且對這些特征進行整合,獲取更高層次的特征。常用的池化方法有以下幾種:MaxPooling,k-MaxPooling,Dynamick-MaxPooling以及Folding。

    MaxPooling適用于采用滑動窗口卷積方式的網(wǎng)絡(luò):每個通道在卷積操作后得到一個列向量,取每個列向量的最大值,組成新的特征向量,輸出給全連接層。使用MaxPooling的CNN網(wǎng)絡(luò),一般只含有一個卷積層,因為在Pooling后輸入已經(jīng)轉(zhuǎn)換成一維向量,不再適合進行卷積操作。類似于MaxPooling的方式,也可以取卷積后得到列向量的最小值或者平均值。

    k-MaxPooling適用于采用列向量分量卷積方式的網(wǎng)絡(luò):每個通過在卷積操作后得到一個矩陣,取矩陣中每一列的最大k值組成新的矩陣。k-MaxPooling相當(dāng)于把原來的句子長度變?yōu)榱斯潭ǖ膋,為處理不同長度的文本提供了便利。在Pooling后得到的依然是矩陣,可以繼續(xù)添加卷積層進行更高層次特征的提取。一般我們希望獲取的特征維度是逐步降低的,因此每一個卷積層之后的Pooling層所取的k值是需要逐步減小的,這種可以動態(tài)變化k值的Pooling方法稱為Dynamick-MaxPooling。第j Pooling層的k值可以如下計算:

    其中,Ktop是設(shè)定最后一個Pooling層的值,J為Pooling層的個數(shù),ι是文本句子長度,[]是向上取整函數(shù)。

    Folding則類似于圖像卷積層后的降采樣,通過把相鄰兩個列向量以取平均、最大或最小的方式進行合并,把維度為ι xd的矩陣將采樣為lxd/2。

D、非線性映射

    對于多層CNN網(wǎng)絡(luò),有時在卷積以及Pooling后,并不會直接輸入給下一個卷積層,而是經(jīng)過一個非線性函數(shù)映射后,再輸入給下一層,常用的函數(shù)有Tanh,Sigmoid,Rectier等。Rectier函數(shù)在文本處理中是一個比較好的選擇,在[47]中作者使用實驗進行了說明。事實上,我們從三個函數(shù)的形狀以及導(dǎo)函數(shù)中也可以看出Rectier函數(shù)的一些好處,它的導(dǎo)函數(shù)在大于0的時候為1,可以很好的把后一層的誤差傳播回前一層,會加快訓(xùn)練的收斂速度。 

F、全連接層

    類似于C-CNN和DCNN這樣直接應(yīng)用于情感分類的網(wǎng)絡(luò),都會在最后的Pooling層之后加上若干層全連接層。只接一個全連接層的網(wǎng)絡(luò)一般使用Softmax分類方法進行文本情感類別的判斷;而連接多個全連接層的網(wǎng)絡(luò),則把后面的全連接部分當(dāng)作一個多層感知機,并使用dropout[34]方式優(yōu)化網(wǎng)絡(luò)的訓(xùn)練方式。

4.3.3CNN在文本情感分析應(yīng)用

    使用CNNs網(wǎng)絡(luò)進行文本情感分析有兩個主流的用法:一種是在CNNs網(wǎng)絡(luò)的最后加上若干全連接層,直接進行文本情感分類[47][45][18][73][14][47];另外一種是使用CNNs進行文本的特征提取,然后使用SVM等分類器進行情感分類[40][2][69]。

    KimY[47]利用類似C-CNN的網(wǎng)絡(luò)處理包含情感分類在內(nèi)的許多語句分類問題,不同的是,在初始輸入時,就采用了兩個通道:一個是使用word2vec訓(xùn)練好的詞向量進行詞語和文本表示,并且這些詞語向量是固定的,稱為靜態(tài)特征通道;另外一個與第一個類似,但是會在整個CNN網(wǎng)絡(luò)的訓(xùn)練過程中進行微調(diào),稱為動態(tài)特征通道。Dos-SantosCN等人[18]采用深度卷積神經(jīng)網(wǎng)絡(luò)來做電影評論和Twitter文本的情感正負分類,與一般的詞語表示不同,作者在學(xué)習(xí)詞語的向量表示時加入了字符級別的詞語向量。字符級別的詞語向量的學(xué)習(xí)類似于由詞語向量獲取句子向量的方式:將字符詞典中的每個字符表示成向量形式,然后使用類似C-CNN的網(wǎng)絡(luò)獲取詞語字符級別的向量表示。得到詞語的字符級別的向量表示之后,加入詞語級別的向量表示,再使用類似C-CNN的網(wǎng)絡(luò)學(xué)習(xí)語句的向量表示,然后輸入全連接層進行情感正負分類。

    HuynhT等人[40]提出了CRBM網(wǎng)絡(luò),用于逐層的學(xué)習(xí)文本特征,然后進行商品評論的主觀性和情感正負的分類。如前面對CRBM網(wǎng)絡(luò)的介紹,每次使用k個相同大小但權(quán)值不同的卷積核對輸入的句子矩陣進行卷積,將詞語向量的維度由d變?yōu)閗。每次卷積操作后不進行Pooling以及其他的處理,直接輸入給下一個卷積層。在最后一次卷積后,將句子中所有的詞語向量相加取平均,作為句子的特征向量,訓(xùn)練SVM并進行分類。

4.4循環(huán)神經(jīng)網(wǎng)絡(luò)(RNNs)結(jié)構(gòu)及其在文本情感分析應(yīng)用

    循環(huán)神經(jīng)網(wǎng)絡(luò)(RecurrentNNs)有著很長時間的發(fā)展歷史,可參考[97]中介紹,主要被應(yīng)用于語音處理相關(guān)問題,近年來,RecurrentNNs被廣泛應(yīng)用于文本處理相關(guān)問題,可以參見總結(jié)的文章列表。本文主要對基礎(chǔ)的RecurrentNNs以及最常用的變種網(wǎng)絡(luò)進行介紹,并將使用RecurrentNNs進行文本建模和情感分析的方法進行總結(jié)。

4.4.1基礎(chǔ)RecurrentNNs

    與其他幾種神經(jīng)網(wǎng)絡(luò)不同的是,RecurrentNNs的每個單元的狀態(tài)是帶有時序的(時序可以對應(yīng)于文本中文字出現(xiàn)的先后順序),其隱含層的輸出可以被緩存起來,作為下一個時序輸入的一部分,因此RecurrentNNs中的隱含層單元一般也被稱為記憶單元。隱含層上一時序的狀態(tài)被緩存起來,在本時序與輸入層一起作為隱含層的廣義輸入,廣義輸入與隱含層是全連接的。如圖11-左所示,我們以含有一個隱含層的基礎(chǔ)RecurrentNN為例,對網(wǎng)絡(luò)結(jié)構(gòu)和訓(xùn)練方法進行討論。

    記xt為輸入,對于文本情感分析問題,一般是當(dāng)前n-gram詞組或者句子的詞語向量拼接向量,每個時序處理一個n-gram詞組或者一個句子。記ht為隱含層,yt為輸出,網(wǎng)絡(luò)各層單元的值可以看作帶有時序的狀態(tài),t為當(dāng)前處理時序。記U、W、H分別為隱含層上一時序的緩存與隱含層之間、輸入層與隱含層之間、隱含層與輸出層之間的全連接權(quán)值矩陣。各層的狀態(tài)更新方程如下:

f(.),g(.)表示非線性激活函數(shù),一般f(.)選用Sigmoid函數(shù),g(.)選擇Sigmoid函數(shù)或者tanh函數(shù)。

    RecurrentNNs在計算當(dāng)前時序的狀態(tài)時,可以考慮前面很多時序的影響,對應(yīng)于文本就是可以處理當(dāng)前詞組(語句)之前的很多詞組(語句)的影響。網(wǎng)絡(luò)的節(jié)點狀態(tài)具有時序關(guān)系,在訓(xùn)練的時候也與其他的網(wǎng)絡(luò)有所不同,常用的方式是基于時序的反向傳播算法(Back-PropagationThroughTime,BPTT)[5][70]。如圖11-中所示,我們將相鄰三個時序的節(jié)點關(guān)系展開,進行反向傳播時的梯度傳播路徑,事實上,在正向的狀態(tài)計算時,實質(zhì)也是將需要考慮的時序進行類似的展開。

4.4.2Long-Short-Term-Memory

    基本的RecurrentNNs具有較大的缺陷:很難考慮較遠時間前、后輸入的影響作用(對應(yīng)于文本語句的建模就是無法處理較長長度的句子),當(dāng)時序序列過長,訓(xùn)練網(wǎng)絡(luò)時會出現(xiàn)梯度膨脹和消失問題[31][66],導(dǎo)致無法學(xué)習(xí)網(wǎng)絡(luò)參數(shù)。

    針對基礎(chǔ)RecurrentNNs的缺陷,人們提出了很多使用門的記憶單元來構(gòu)建網(wǎng)絡(luò)。

    中Long-Short-Term-Memory(LSTM)[26][39]可以根據(jù)輸入和記憶單元的狀態(tài)自動地決定隱含單元的動作:遺忘記憶狀態(tài)、接收輸入、輸出狀態(tài)值到后續(xù)網(wǎng)絡(luò)層,是目前RecurrentNNs中使用最廣泛的隱含記憶單元。

    常用的LSTM單元如圖11-右所示。從LSTM單元外部來說,對于使用LSTM構(gòu)建的網(wǎng)絡(luò),它與基礎(chǔ)RecurrentNNs中隱含單元是類似的:接收輸入層的輸入xt,經(jīng)過非線性映射向下一層傳遞本層的輸出值ht。在LSTM內(nèi)部,除了可以緩存上一時序的隱含層狀態(tài)之外,還添加了分別控制接受輸入、進行輸出以及選擇遺忘的“門”,分別使用git、got、gft表示在當(dāng)前時序t時三個門的開閉狀態(tài)??刂迫齻€門的輸入是相同的:當(dāng)前時序的輸入xt以及隱含層緩存狀態(tài)st-1,因此我們也知道,對于同一隱含層的不同LSTM單元,它們共享三個門的狀態(tài)。不同的是各自的權(quán)值矩陣,分別用Wi、Wo、Wf表示輸入與三個門之間的連接權(quán)值矩陣Ui、Uo、Uf,表示隱含層緩存狀態(tài)與三個門之間的連接權(quán)值矩陣。在時序t時,三個門的開關(guān)狀態(tài)可以如下計算:

其中σ (.)表示Sigmoid函數(shù)。隱含單元的內(nèi)部狀態(tài)st以及輸出ht按如下方程更新:

    對由LSTM單元構(gòu)建的RecurrentNNs,訓(xùn)練方法也是采用BPTT的思路。除了LSTM,目前也有許多基于“門”的RecurrentNNs單元[12][88],它們的主要思想基本一致,都是希望這些記憶單元可以自動地處理時序關(guān)系,可以自動地決定記憶單元的數(shù)據(jù)輸入、狀態(tài)輸出以及記憶遺忘。

4.4.3基于RecurrentNNs的文本情感分析

    將RecurrentNNs應(yīng)用于文本情感分析問題的處理,主要有兩種方式。第一種基于語言模型對文本詞語序列進行建模,然后學(xué)習(xí)詞語向量表示[59][75]。對于詞語的處理方法與word2vec方法中很類似,都是將詞語表示成詞語向量。然后在每個時序向RecurrentNNs輸入一個n-gram詞組的詞語向量(由各個詞語的詞語向量拼接而成),模型的輸出是對n-gram詞組的中心詞語的概率分布進行估計。

    第二種方式是對語句或者文檔進行建模,獲取語句或者文檔的向量形式特征,然后再進行文本情感分析。RongW等人[72]使用含有兩層基礎(chǔ)回環(huán)隱含層的網(wǎng)絡(luò)組成對偶形式的RecurrentNN來學(xué)習(xí)電影評論語句的向量表示,然后分析這些影評的情感分布。KirosR等人[46]以及TangD等人[75]則使用基于門單元構(gòu)建的深度網(wǎng)絡(luò)對語句進行建模。

4.5深度網(wǎng)絡(luò)的參數(shù)學(xué)習(xí)

    一般來說,對于深度網(wǎng)絡(luò)的參數(shù)訓(xùn)練都是采用基于SGD的BP算法,根據(jù)所處理的具體問題并結(jié)合使用的網(wǎng)絡(luò)結(jié)構(gòu)定義需要優(yōu)化的目標(biāo)函數(shù),確定需要解決的優(yōu)化問題,將對網(wǎng)絡(luò)參數(shù)的訓(xùn)練轉(zhuǎn)化為對優(yōu)化問題的求解。

    深度學(xué)習(xí)方法中求解優(yōu)化問題的方法一般都是使用SGD算法,當(dāng)然是否有其他更好的優(yōu)化方法,是一個值得探索的問題。其關(guān)鍵在于如何將在輸出層產(chǎn)生的參數(shù)梯度傳播到中間的隱含層以及輸入層,來更新網(wǎng)絡(luò)參數(shù)。當(dāng)網(wǎng)絡(luò)結(jié)構(gòu)確定時,反向傳播的過程一般就可以方便的進行:對于FNNs以及RecursiveNNs,梯度反向傳播的過程就是輸出正向計算的逆過程;而對于CNNs,由于Pooling層的存在,在Pooling前后層之間的梯度傳播需要更多的考慮,如對于Max-Pooling方式,梯度反向傳播時將梯度按照Pooling前所有單元值進行加權(quán)平均分配還是直接將梯度全部給予具有最大值的單元。

    關(guān)于深度網(wǎng)絡(luò)模型的具體訓(xùn)練方式,本文沒有一一給出詳細說明,BP算法更像是一種訓(xùn)練框架而不是具體的某種具體算法,不同的網(wǎng)絡(luò)以及不同問題定義出的目標(biāo)函數(shù)都會導(dǎo)致BP算法中梯度計算方式的不同,我們很難統(tǒng)一的給出BP算法的具體過程,每種深度網(wǎng)絡(luò)的具體訓(xùn)練方式,請參閱相關(guān)文獻。CNNs在文本建模和文本情感分析問題中被廣泛使用,在附錄A中我們給出了一個淺層CNN網(wǎng)絡(luò)的梯度推導(dǎo),并給出了一種在多核集群中,基于MPI的訓(xùn)練方法。(未完待續(xù))

中傳動網(wǎng)版權(quán)與免責(zé)聲明:

凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(www.surachana.com)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負版權(quán)法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

伺服與運動控制

關(guān)注伺服與運動控制公眾號獲取更多資訊

直驅(qū)與傳動

關(guān)注直驅(qū)與傳動公眾號獲取更多資訊

中國傳動網(wǎng)

關(guān)注中國傳動網(wǎng)公眾號獲取更多資訊

熱搜詞
  • 運動控制
  • 伺服系統(tǒng)
  • 機器視覺
  • 機械傳動
  • 編碼器
  • 直驅(qū)系統(tǒng)
  • 工業(yè)電源
  • 電力電子
  • 工業(yè)互聯(lián)
  • 高壓變頻器
  • 中低壓變頻器
  • 傳感器
  • 人機界面
  • PLC
  • 電氣聯(lián)接
  • 工業(yè)機器人
  • 低壓電器
  • 機柜
回頂部
點贊 0
取消 0
往期雜志
  • 2025年 第1期

    2025年 第1期

    伺服與運動控制

    2025年 第1期

  • 2024年第1期

    2024年第1期

    伺服與運動控制

    2024年第1期

  • 2023年第4期

    2023年第4期

    伺服與運動控制

    2023年第4期

  • 2023年第3期

    2023年第3期

    伺服與運動控制

    2023年第3期

  • 2023年第2期

    2023年第2期

    伺服與運動控制

    2023年第2期