王生生,張航,潘彥岑
(1.吉林大學 計算機科學與技術學院,吉林 長春 130012; 2.吉林大學 軟件學院,吉林 長春 130012)
自動編碼器(auto-encoder,AE)是機器學習中一種重要的模型[1]。AE通過盡可能復現輸入數據的方法,來提取輸入數據的特征,通常AE只有單層的編碼器和解碼器。隨著深度學習的發展,Hinton等[2]提出深度自動編碼器(deep auto-encoder,DAE),相比于AE,DAE能產生更好的壓縮效率及特征表示。DAE的產生和應用免去了人工提取數據特征的巨大工作量,提高了特征提取的效率,得到數據的逆向映射特征,展現了從少數標簽數據與大量無標簽數據中學習輸入數據本質特征的強大能力。但DAE也存在很多局限性:1)DAE都是由不同類型的建模單元堆疊而成,這些建模單元均有理論缺陷,例如DAE內部是黑盒性質,各隱藏層之間缺乏相應神經科學的理論指導。DAE缺乏能力來解釋自己的推理過程和推理依據。所以DAE構建的深度結構不完善。2)DAE的無監督逐層貪心訓練只是在一定程度上解決了局部最小問題,沒有全局優化,隨著隱藏層數的增加,梯度稀釋越發嚴重,其訓練極其繁瑣,需要很多技巧。3)DAE模型結構往往是固定的,其未考慮數據本身的關聯性,無法擬合不同類型的數據。
針對DAE的局限性,本文提出一種基于改進SPNs的深度自動編碼器。Poon等[3]提出了一種sum-product networks模型,其結構的遞歸概率語義具有強大的理論支持,由其構成的深度結構很完善。spns能夠容易地學習網絡結構與參數,訓練時間遠快于傳統DAE。SPNs模型的結構學習能很好的擬合數據的表示,不同于傳統DAE需利用一個先驗結構。基于SPNs模型的這些優點,本文設計改進的SPNs模型作為深度編碼器,提出替換SPNs的sum結點為max結點的最大積網絡(max-product networks,MPNs)模型作為深度解碼器。基于改進SPNs模型作為新型DAE能克服現有DAE的局限性,并將其應用于短文本情感分析領域,通過實驗驗證所設計的基于改進SPNs深度自動編碼器在短文本分析領域具有更優性能。
SPNs是一種新型深度概率圖模型,是一個帶根節點的有向無環混合圖,product節點和帶非負權值的sum節點不斷遞歸組成其結構,SPNs的葉子節點為單一變量或變量未歸一化的概率分布。如圖1所示。一個SPNs網絡編碼一個函數f(X=x),輸入變量賦值X=x,由根節點產生一個輸出。該函數在每個節點的遞歸定義為:

圖1 SPNs葉子節點與簡單的SPNs結構Fig.1 SPNs leaf node and the simple SPNs
變量的賦值Xn=xn受限于葉子節點所包含的變量類型。如果葉子節點的變量未被實例化,那么Pr(Xn=xn)=Pr(φ)=1。如果葉子結點為連續性變量,那么Pr(Xn=xn)應理解為pdf(Xn=xn)。
SPNs模型的結構如果滿足一定的條件,其可以編碼一組變量的聯合概率分布。下面給出其結構需滿足條件的定義。
定義1范圍(scope),一個節點n的范圍表示為其后裔節點或變量的組合。
定義2結構完整性,一個SPNs模型結構具有完整性當且僅當其sum節點的所有兒子節點具有相同的范圍?c∈children(sum),scope(c)=scope(c′)。
定義3結構可分解性,一個SPNs模型的結構具有可分解性當且僅當其product節點的所有兒子節點具有互斥范圍:
?c,c′∈children(sum) andc≠c′
?c,c′∈children(sum) andc≠c′
scope(c)∧scope(c′)=?。

SPNs能夠克服概率圖模型的局限性:推理與學習階段時間復雜度為指數級。SPNs可以有效計算歸一化配分函數(partition function),所以其在模型推理與學習階段的時間復雜度為多項式級[4]。在推理階段,不同于概率圖模型的近似推理,SPNs執行快速精確推理,在推理速度上后者比前者有著數量級上的優勢。SPNs的這些特性已經使其成功應用于圖像分類[5]、語言模型[6]、動作識別[7]等多個領域。
SPNs自提出以來,在大部分研究中被用作一種概率密度估計器。傳統SPNs模型作為一種樹形結構,每一個節點輸入只來自其后裔節點,相同層節點的范圍信息相互獨立,缺乏層次性。SPNs模型的權值矩陣稀疏。如使用傳統SPNs模型作為深度編碼器架構,其提取數據特征效率低,SPNs模型的權值矩陣計算速率慢。本文提出一種改進的SPNs模型結構,稱為層次SPNs模型(layered sum-product ntworks,LSPNs)。首先重構傳統SPNs結構。如圖2所示,排列SPNs節點為層次順序結構,同層包含相同節點,不同層包含不同節點。例如sum節點組成相同層,product節點相同層,不同層交替組成LSPNs深度結構。然后葉子節點層輸入增加到每一個LSPNs的隱藏層。LSPNs的每一層結構都保持傳統SPNs的有向無環屬性、結構完整性和結構可分解性。定義S(x)∈Rs表示為通用層輸出函數,例如:S(x)=〈S1(x),S2(x),…,Ss(x)〉,如果通用層為sum節點層,假設其輸入層包含r個節點,本文設計其輸出函數為:

圖2 改進SPNs模型作為LSPNSFig.2 Improved SPNs model as LSPNs
(1)
式中:x∈[0,1]T為前節點輸入的概率值;Wij表示稀疏連接形式的參數矩陣。product節點層輸出函數為:
(2)
式中:x∈RY為輸入概率值的對數域;P∈{0,1}S×r為稀疏鏈接矩陣定義。本文設計的指數函數和對數函數都是非線性的,輸入和輸出信號從對數域切換到指數域,從一個層次類型轉換為另一個層次類型。增加隱藏層的輸入可以降低傳統SPNs模型的權值矩陣的稀疏性。LSPNs模型相對于傳統SPNs模型具有以下優勢:1)具有層次結構的LSPNs作為一種概率局部特征提取器,相比于傳統SPNs能高效提取數據的分層抽象特征,提取的特征信息更為豐富。2)LSPNs的權值矩陣相對于SPNs權值矩陣稀疏性低,可以利用GPU計算庫進行高效的矩陣運算。
如使用傳統SPNS模型作為深度解碼器架構,其在解碼過程中,進行最大可能解釋(most probable explanations,MPE)推理,其推理復雜度為np-hard。定義2組隨機變量U,V?X,U∪V=X,U∩V=?,mpe推理是求:
(3)
MPE推理的解碼過程可以有效對編碼特征進行解碼。因此,在解碼過程中,本文替換SPNs的所有sum節點為max節點,提出最大積網絡(max-product networks,MPNs)模型,其中max節點功能具有sum節點的結構完整性,但其在進行MPE推理的過程中,MPNs不同于SPNs的全局計算,其首先計算maxc∈ch(n)ωncMc(x)即max節點與權值邊值乘積的最大值,推理方向沿著自根節點向下選取max節點與權值邊值乘積最大的路徑傳播。如圖3所示,圖3(a)為替換所有sum節點為max節點的MPNs網絡,圖3(b)為MPNs的MPE推理模式,給定葉子結點輸入值與max節點下的權值,首先自葉子節點向上計算每個節點的值,然后自根節點向下選取max節點與其權值邊值乘積最大的邊向下傳播,得到MPE推理的結果。MPNs可以有效作為深度解碼器架構,MPNs編碼器的建模單元為max節點組成的max節點層與product節點組成的product節點層,max節點層與product節點層交替組成MPNs深度解碼器結構,其MPE推理方法可作為深度解碼器的解碼方法。

圖3 MPNs模型與MPE推理方法Fig.3 MPNs and MPE inference method

(4)
每一個嵌入特征都可以表示為一個節點范圍的邊際分布。因此,這樣構造的嵌入是由適當的概率密度的集合引起的幾何空間中的一個點。LSPNs的節點也可以看作是通過節點范圍給出的子空間運行的基于部分的過濾器。sum節點可以解釋為通過共享相同范圍的過濾器的加權平均值構建的過濾器,并且product節點可以被看作是非重疊作用域上的過濾器的組合。從LSPNs學習算法的內部機制角度來看,每個過濾器捕獲數據的子群和子空間的不同方面。傳統SPNs作為深度編碼器因其結構缺乏層次性,各節點在特征提取的過程中缺乏關聯性。本文設計的LSPNs結構具有層次性,同層節點提取特征信息共享,能較傳統SPNs具有更高的特征提取效率與能得到更優的分層抽象特征。

(5)
基于本文設計的MPNs深度解碼器的解碼方法是對編碼特征找到其最有可能解碼,是一種部分解碼模式,該方法可以快速得到對原編碼特征解碼,不同于傳統DAE解碼過程對編碼特征進行全部解碼。MPNs深度解碼器解碼速度遠快于傳統深度解碼器。如圖4所示為基于LSPNs深度自動編碼器架構,其為LSPNs編碼器與MPNs解碼器2部分組成。

圖4 基于LSPNs深度自動編碼器架構Fig.4 Framework of LSPNs-based deep autoencoder
LSPNs深度自動編碼器可以進行精確的推理,比如最大后驗概率map推理以及最有可能解釋MPE推理等。
LSPNs深度自動編碼器的學習方法包括結構學習與參數學習2部分。SPNs的結構學習算法通常是通過基于聚類技術分割/分組數據和變量,貪心地構造一個SPNs結構[8]。SPNs的參數學習技術包括通過隨機梯度下降[9]、期望最大化算法[10]、貝葉斯矩匹配[11]等來極大化數據的似然函數值(生成訓練)或者給一個輸入數據得到一些輸出數據的條件似然值(判別訓練)。
目前,SPNs模型的結構學習與參數學習算法大部分是基于批處理學習的,批處理技術假設完整的數據集是可用的并且可以多次掃描。目前,大文本集和流文本數據越來越多。傳統SPNs模型的學習方法無法高效地處理這類文本集。為解決傳統SPNs模型學習算法在處理大文本集和流文本數據時參數學習速率慢,結構學習時模型似然函數值低的局限性,本文設計LSPNs的在線學習算法。
LSPNs深度自動編碼器的在線參數學習算法:通過一些小批量數據點輸入,LSPNs模型的在線參數學習算法通過從根節點到葉子節點更新LSPNs的參數。LSPNs模型通過跟蹤運行充分統計量來更新sum節點下的參數。假設LSPNs模型在每一個節點都有一個計數(初始值為1),當每一個數據點被接收,這些數據點的似然函數就可以通過計算每一個節點得到,然后LSPNs模型的參數通過一種遞歸自上而下的方式從根節點更新。當一個sum節點被穿過,其計數加1并且其具有最高似然值的孩子節點加1。一個sum節點s和它其中一個后裔節點c的連接權值ws,c可以被估計為:
(6)
式中:ns為sum節點的計數;nc為孩子節點的計數。因為product節點無權值邊,增加其似然值方法就是增加其兒子節點似然值。遞歸增加product節點每一個孩子計數,遞歸更新每個孩子節點子樹權值。
SPNs的在線結構學習算法由Lee[12]首次提出,該方法通過在線聚類技術以一種遞增形式重構網絡結構,自上而下為sum節點增加孩子節點。其方法局限于一旦product節點被創建就不能被修改。本文設計LSPNs自動編碼器的在線結構學習方法:通過小批量數據輸入,LSPNs的結構在線更新。如圖5所示,圖5(a)為起始product節點,連接3個相互獨立的兒子節點,作用域為x1,x2,…,x5。首先通過檢測輸入變量的相關性修改product節點,自底向上的遞增構造LSPNs深度自動編碼器結構。其算法的核心是分裂法,在LSPNs線結構學習的過程中,每次新加入的數據,如輸入變量之間皮爾遜相關系數的絕對值超過某一閾值,會導致product結點做出變更。該算法將具有x1、x32個子節點的作用域合并,并將它們轉換為一個多元葉節點,以其統計的均值和協方差作為葉節點參數。圖5(b)所示會創造出多變量葉節點或者如圖5(c)所示的混合模型。其組成部分是一個新的product節點,它再次被初始化為在其作用域上的一個完全因式分解的分布,然后再將小批數據點傳遞給新混合模型以更新其參數。更新結構的方式可通過設置子節點個數的閾值來選擇。

圖5 LSPNs模型在線結構學習示意Fig.5 LSPNs model online structure learning diagram
這種在線結構學習算法只對數據一次掃描并構造其LSPNs結構,LSPNs自動編碼器的在線結構學習以一個所有變量完全因式分解的聯合概率分布起點,若輸入變量皮爾遜相關系數的絕對值高于某個閾值,則將他們合并為相關變量,若作用域內變量的個數小于某個值時就將他們合并為多元葉節點,否則將其重組為和積混合結構。通過在線學習的方式,隨著數據的不斷傳入,網絡結構逐漸加深,從而以一種在線學習的方式完善LSPNs自動編碼器的深度結構。
本文利用基于LSPNs深度自動編碼器進行短文本情感分析。首先,從社交網絡中爬取大量無標簽的短文本數據;其次采用語義規則[13]方法對數據進行預處理;接著采用doc2vec[14]模型對預處理后獲得的短文本數據進行訓練得到句向量,句向量作為基于LSPNs深度自動編碼器的輸入。通過2.3節的在線結構學習方法生成一個LSPNs深度編碼器結構。利用LSPNs深度編碼器對輸入的句向量進行編碼,提取分層抽象特征;然后構建MPNs深度解碼器,對由LSPNs深度編碼器得到的分層抽象特征進行解碼,將解碼后的特征與輸入LSPNs深度編碼器的句向量特征對比,計算重構誤差。調整LSPNs深度自動編碼器參數使得重構誤差最小;最后,得到最優的LSPNs深度編碼器,并由它獲得最優分層抽象特征。
為了實現情感分類,將最優分層抽象特征輸入到一個分類SPNs模型,通過有少量標簽樣本對分類SPNs模型進行有監督微調訓練。分類SPNs模型也采用2.3節的在線結構學習方法,其參數學習使用SPNs的判別式hard梯度下降方法。定義分類SPNs模型S[y,h|x],輸入變量y為查詢變量,h為隱變量,x為證據變量。學習目標是極大化條件概率分布P(y|x),使用反向傳播的方式極端似然梯度:

(7)

(8)

(9)
MAP推理過程的條件log似然梯度為Δci/wi,hard梯度更新為Δwi=ηΔci/wi。hard推理模式其使用map推理過程為一種選擇性的梯度更新方法,如圖6所示,可以有效防止梯度稀釋現象。

圖6 SPNs的硬推理模式克服梯度稀釋問題Fig.6 SPNs hard inference overcomes gradient diffusion
分類SPNs模型訓練完畢后,利用SPNs的MAP推理方式,對測試集的數據進行預測。假設有一組測試數據為[x1,x2,…,x100,Lable],分類SPNs模型的101個變量記為X1,X2,…,X100,Y,那么用分類SPNs模型預測標簽的過程,實質上就是求:
(10)
只要將Y=0與Y=1的正負情感標簽分別傳入分類SPNs模型的葉節點中,經過推理比較2個值的大小,取最大者,記為該測試數據的分類標簽。這樣,就可以得到每一條測試數據的預測值Y,經過統計預測值和真實標簽的差異,可以得到分類的準確率。
實驗數據包括2部分:1)微博情感分析數據,由無標簽數據與標簽數據組成(如圖7所示)。其中無標簽數據是通過twitter API與python beautifulsoup庫在網絡上爬取的1 600 000條微博數據,這些無標簽數據用于訓練句向量。標簽數據集取自斯坦福twitter情感語料庫STS[15]。隨機選取其中負面微博2 501條,正面微博2 499條作為有監督微調數據集。最后隨機取500條微博作為測試集。2)電影評論IMDb數據集[16]與從亞馬遜網站[16]收集的5組領域產品的用戶評論。實驗數據統計如表1所示。

表1 實驗數據統計Table 1 The experimental data statistics

圖7 基于LSPNs深度自動編碼器情感分析流程Fig.7 Flow chart of LSPNs-based deep autoencoder sentiment analysis
在進行模型訓練之前,需要在大規模語料上訓練句向量。本文利用基于python gensim庫的doc2vec模型無監督訓練句向量,迭代次數為10次。
本文對比實驗分為2部分:
1)基于斯坦福twitter情感語料庫(STS)的實驗。實驗的對比模型為:
①基于N-gram模型的詞袋向量作為輸入,使用N-gram模型的一元詞串+二元詞串特征,分別使用支持向量機[15],樸素貝葉斯[15],標簽傳播(label propagation, lprop)[16]模型作為分類器進行情感分析。
②基于Wor2vec訓練的詞向量輸入,使用句子特性卷積神經網絡CharSCNN[17]進行情感分析。
③基于傳統spns結構的自動編碼器情感分析,模型輸入為與對比模型1與2相同的2種特征向量,模型表示為spnsdae1與spnsdae2。
④基于LSPNs深度自動編碼器的情感分析,采用與對比模型1與2相同的特征向量作為模型輸入,模型表示為lspnsdae1與lspnsdae2。實驗的評估指標是準確率precision值、召回率recall、F1值。其中Pos_P表示積極詞的準確率precision值,Neg_P表示消極詞的準確率precision值,以此類推。
表2中的NB、SVM模型數據集下的分類結果數據來源于文獻[15],LPROP模型數據集下的分類結果數據來源于文獻[16],CharSCNN模型在第一部分數據集下的分類結果數據來源于文獻[17]。spnsdae1與spnsdae2數據集下的分類結果為本文使用傳統spns結構設計的深度自動編碼器進行試驗實現。

表2 幾種模型在STS數據集下的情感分類評估值Table 2 Several models in the STS data set under the sentiment classification evaluation value
2)基于IMDb數據集的實驗。實驗的對比模型為:基于標準化特征[19]的詞袋向量作為模型輸入,分別使用以下模型進行情感分析。
①降噪自編碼器(denoising autoencoder,DAE)[18],其使用ReLu max(0,x)函數作為激活函數,使用sigmoid函數作為解碼函數。
②微調降噪自動編碼器(denoising autoencoder with finetuning,DAE+)[18],該方法使用部分標簽數據訓練dae并把解碼層替換為softmax層。
③半監督布雷格曼散度自動編碼器(semisupervised bregman divergence autoencoder,SB-DAE)[19]。
④微調半監督布雷格曼散度自動編碼器(semisupervised bregman divergence autoencoder with finetuning,SB-DAE+)[19],使用帶標簽數據集微調sb-dae。以上方法都需要預定義模型輸入特征維度,對于sb-dae設置輸入特征維度為200維。對于dae,采取輸入特征維度為2000維。以上模型均使用SVM2作為分類器,使用mini-batch步長為0.9[16]的隨機梯度下降方法進行訓練。
⑤基于半監督的變分自動編碼器(semi-supervised variational autoencoder,SVAE)[20], 其自動編碼器架構為LSTM,情感預測模型使用雙向LSTM模型。其模型輸入為標準化特征[19]的詞袋向量。設置其自動編碼架構維度為100維,設置Dropout率為0.5。
⑥基于半監督的連續變分自動編碼器(semi-supervised sequential variational autoencoder,SSVAE)[21]模型使用基于端到端的adam[21],設定學習率為4e-3進行訓練。
⑦基于傳統SPNs深度自動編碼器的情感分析,采用2種特征向量輸入LSPNs深度自動編碼器中,分別是基于標準化特征[16]的特征向量作為模型輸入,設置特征維度為500維,模型表示為實驗模型表示為spnsdae(A);基于Doc2vec模型訓練的句向量作為模型輸入,設置特征維度為200維,模型表示為spnsdae(B)。
⑧基于LSPNs深度自動編碼器的情感分析,采用兩種特征向量輸入LSPNs深度自動編碼器中,分別是:基于標準化特征[16]的特征向量作為模型輸入,設置特征維度為500維,模型表示為lspnsdae(A);基于Doc2vec模型訓練的句向量作為模型輸入,設置特征維度為200維,模型表示為lspnsdae(B)。以上2種方法均使用標簽數據集微調。實驗采用的評測指標是模型情感分類錯誤率。
表3中的DAE、DAE+實驗數據集下的分類結果來源于文獻[18]。SB-DAE、SB-DAE+實驗數據集下的分類結果來源于文獻[19]。SVAE與SSVAE實驗結果為進行實驗實現。spnsdae的分類結果為本文使用傳統SPNs結構設計的深度自動編碼器進行試驗實現。

表3 幾種模型在IMDb數據集下的情感分類評估值Table 3 Several models in the IMDb data set under the sentiment classification evaluation value
由實驗1)結果對比可知:基于LSPNs深度自動編碼器應用于短文本情感分析的效果普遍要比傳統方法:nb,svm,LPROP模型要好。這體現在三者之間的Pos_F1和Neg_F1的對比;而從precision、recal的角度來比較,無論是對積極情感還是消極情感,基于LSPNs深度自動編碼器比CharSCNN精度更高。由實驗2)結果對比可知:spnsdae的情感分類錯誤率低于SB-DAE,和DAE+近似,但是lspnsdae(B)模型在實驗2)的6組實驗數據集下達到最佳效果。
在實驗2)中的幾種自動編碼器模型運行平均時間對比如表4所示,本文設置每個自動編碼器模型運行10次,取10次時間均值記錄。實驗結果表明lspnsdae(A)與lspnsdae(B)在IMDB數據集下的運行速度遠快于傳統的自動編碼器模型。

表4 幾種自動編碼器模型在IMDb數據集下的平均運行時間Table 4 The average running time of several autoencoder models in the IMDb dataset S
1)本文提出的LSPNs的深度自動編碼器具有強大的結構學習能力,快速的推理能力,具備更好的模型可擴展性。
2)將本文提出的基于LSPNs深度自動編碼器應用于短文本情感分析領域。實驗結果表明:基于LSPNs的深度自動編碼器比現有深度編碼器在短文本情感分析領域能取得更好的情感分類準確率且模型具有更快的運行速度。