毛紫荊,張 軍,馮云婷
(天津職業技術師范大學電子工程學院,天津 300222)
在互聯網技術迅速發展的今天,人們獲取信息的途徑也更加多樣,如在選航班前,通常會在評論區提前了解大量帶有感情色彩的主觀性文本,以此作為自己選擇心儀航空公司的參考,以便能夠享受到更舒適的服務,得到更優質的出行體驗。航空行業屬于服務類型的行業,有時會出現客戶服務差池、航班延誤、行李丟失等一系列問題,在旅程結束時,多數旅客會在評論區寫下對某一航空公司服務的評論。若航空公司掌握旅客的情感變化,便能為旅客提供更好的個性化服務,從而提升用戶體驗滿意度。
近年來,深度學習技術在全社會各個領域得到廣泛應用[1],特別是在文本情感分析和文本特征方面也獲得了新的突破。因此,深度學習也成為了自然語言處理中新的研究熱點。在文本分類任務中,卷積神經網絡可以提取局部特征,Kim[2]證實了詞向量可以作為一個通用的特征維度向量,提出多通道卷積模型,該模型能夠有效防止過擬合,在問題分類、情感分析等領域取得較好的效果。情緒標注短語的信息可以提高樸素貝葉斯(naive Bayes,NB)和支持向量機(support vector machine,SVM)[3]等其他分類算法的準確率。文獻[4-6]認為,使用短句作為訓練對象,可以讓分類器的學習更加復雜,提出從特征到句子間的卷積神經網絡(character to sentence CNN,CharSCNN)可以使文本在細分類中擁有較高的準確率。針對文本內容的序列順序問題,循環神經網絡能夠更好地得到上下文信息。劉建興等[7]提出了一種新模型,對情緒進行分析預測,這種基于深度雙向長短時記憶循環神經網絡(deep bidirectional long-short-term memory RNN,DB-LSTMRNN)的模型,相比基于淺層統計特征的方法準確率提高了7.6%。陳千等[8]和Bahdanau 等[9]在情感分類中引入注意力機制,使用不同標記信息,提取全局特征和局部特征將其進行融合,隨著數據集的增大,循環卷積注意力模型(LSTM-CNN-ATT,LCA)變得穩定,表現逐漸變好。本文研究長短時記憶網絡(long short term memory,LSTM)與雙向循環神經網絡巧妙反向結合的原理,并與多種神經網絡模型進行討論和對比,提出M-BRNN(modified-BRNN)模型,以預測文本評論中的感情傾向。
循環神經網絡(recurrent neural network,RNN)[10]是一種用于處理和預測數據的神經元網絡模型,它既有反饋通路,又有前饋通路,功能強大。RNN 與傳統全連接神經網絡不同之處在于,它能記憶之前的信息,并將其用于正在輸出的計算當中,而且具有權值共享特點,即隱藏層的輸入同時包括輸入層目前的輸出以及上一時刻隱藏層的狀態輸出。其中,反饋通路對網絡處理時序問題非常重要。
RNN 網絡結構如圖1 所示。該結構由1 個輸入層、1 個隱藏層和1 個輸出層組成,其最大特點是隱藏層的值h 不僅取決于t 時刻的輸入x,還取決于t-1 時刻隱藏層的值h,這種層與層之間的依賴關系,較適用時間序列數據。將圖1 所示的結構展開后,多個RNN網絡結構如圖2 所示。重復的網絡結構參數可以共享,這樣可以使神經網絡所需的輸入參數減少,降低網絡的使用內存,提高學習效率。

圖1 單個RNN 網絡結構

圖2 多個RNN 網絡結構
RNN 可用以下公式計算
式中:softmax、tanh 為激活函數;xt為 t 時刻訓練樣本的輸入;ht為t 時刻模型的隱藏狀態;ot為t 時刻模型的輸出;Lt為t 時刻模型的損失函數,可以量化時間序列的損失值;U、V、W 3 個矩陣代表模型的權值參數,它在整個RNN 網絡中共享,同一類型的全連接權值相同。
由于RNN 存在迭代性,并隨著模型深度的增加,導致相應梯度的消失,也有較少情況會發生梯度爆炸。此時,可以設置梯度閾值,若當前的梯度值大于設定閾值,就可以直接截取,使初始化權重值合理,改變激活函數,或使用其他網絡結構,如LSTM。1997年,Hochreiter 等[11]提出 LTSM 單元,Tang 等[12]對句子之間的情感關系進行了建模,有效地應對了梯度的消失問題。
在原始狀態下,RNN 隱藏層只有一個狀態,對短期的輸入非常敏感,但對于長期的輸入敏感度不高。LSTM 網絡是一種特殊的RNN 網絡,對比二者網絡的隱藏單元,LSTM 單元的內部結構更為復雜,這種結構新增了一個狀態來保存長期的輸入,使得該網絡可以學習長期依賴的信息。LSTM 單元內部結構如圖3所示。

圖3 LSTM 單元內部結構
LSTM 模型的隱藏單元的門控有3 種類型,分別為:輸入門it、遺忘門ft和輸出門ot。由圖3 可知,本單元還有1 個隱藏狀態ct,在輸出之前也會與遺忘門和輸入門相作用。門控能夠完成LSTM 網絡對信息的存儲和更新,相當于一層全連接層。其中,Sigmoid 函數是機器學習中常用的非線性激活函數,值域為0~1,故門的輸出是0~1 的實數向量。當該函數取值為0 時,其與任何向量相乘都等于0 向量,此時任何信息都不能通過;若取值為1 時,任何信息都可以通過。因此,LSTM 模型能夠更好地應用于文本情感分析。
很多自然語言處理任務時都需要獲取單詞的上下文信息來處理任務,Schuster 等[13]提出雙向循環神經網絡(bi-directional RNN,BRNN),BRNN 包含 2 個不同的隱藏層[14],能夠在2 個時間方向處理同一個序列,達到對輸入文本更加豐富的處理,相當于2 個RNN。2個隱藏層之間沒有連接,只是將相同的信息以不同的方式呈現給循環網絡,在同一個輸入層輸入,然后在同一個輸出層輸出,可以提高精度并緩解遺忘。雙向循環神經網絡結構如圖4 所示。

圖4 雙向循環神經網絡結構
循環神經網絡的訓練算法采用基于隨機梯度下降的反向傳播(back-propagation,BP)算法或基于時間的反向傳播(back-propagation through time,BPTT)算法[15-16],優化完成后即可得到神經網絡語言模型。BPTT算法可以很好地利用隱含層狀態中的信息,對網絡中的參數進行更新,這是BP 算法的一種改進,也是目前循環神經網絡最常用的訓練算法。BPTT 算法是將網絡的時序操作展開為一個具有隱含層的深層前饋神經網絡,在各時間步之間權值共享。常用BPTT 算法的模型是RNN 模型,其中的梯度下降算法沿著需要優化的參數的負梯度方向不斷尋找更優的點直至收斂,經過一次次的迭代,才能得到較為合適的模型參數。它與傳統前向神經網絡中的標準反向傳播算法不同,BPTT 算法做到了參數共享,并計算了關于W 每個時間點上的梯度之和,t 時刻隱藏狀態的梯度定義為

把網絡按時間序列展開,反向傳播算法結構如圖5 所示。從圖5 可以看出,該算法結構是一個在各時間序列之間權值共享的大網絡。

圖5 反向傳播算法結構
在反向傳播時,在某一時間序列t 的梯度損失由當前位置的輸出對應的梯度損失和時間序列t-1 的梯度損失兩部分共同決定。

然而,循環神經元網絡模型沒有較長時間的記憶,其原因在于:依據鏈式法則,在連續的時間序列數據反向傳播時,存在多個因子連乘的情況,容易發生梯度消失或爆炸的問題。
模型訓練會發生過擬合現象,產生這種現象的原因有網絡的參數過多、訓練數據較少和訓練次數過多。Srivastava 等[17]和 Tobergte 等[18]在 2012 年提出了Dropout 技術,該技術是一種常用的正則化技巧,在深度學習網絡中可以抑制神經網絡模型發生過擬合。最早在卷積神經網絡中運用Dropout 方法,卷積神經網絡可以達到更強的魯棒性。不僅在卷積神經網絡中,Dropout 方法在RNN 中使用也能夠得到一定的優化結果,隨機設置一定比例不工作的隱藏節點,這些節點對應的權值在訓練中就不會更新。在創建模型過程中需注意的是,Dropout 層需要設置在網絡的非循環結構體之間,在同層之間不適用Dropout 層,否則可用信息會在循環步驟中逐漸丟失。
在沒有增加模型復雜度的情況下,LSTM 模型建立了64 個神經元,增加RNN 隱含層數量,在反向傳播算法節點上采用LSTM 模型,這樣文本數據在輸入層就要經過正向序列和反向序列。由于模型的性能隨著網絡層數的加深而提高,因此需要增加密集連接反向LSTM 網絡模型的堆疊層數,確定步長為3,采用RepeatVector 改變每一步的維數。這樣的正向反向序列深度結構,輸出層用Sigmoid 分類器進行情感分類,有效解決梯度消失問題,可以將各層之間的特征信息緊密聯系。因準確率并非一直隨著隱含層中的神經元數量的增加而增加,當堆疊層數大于一定閾值時也會影響準確率。改進的雙向RNN 網絡,加深了初始網絡深度,通過Flatten 層將輸入的多維數據“扁平化”,轉化為一維數據。編譯層自適應優化算法從Adam 更換成RMSProp,可改變梯度累積,在求解極值問題時,可以達到較快的收斂速度,也是循環神經網絡常用的優化器。學習速率采用回調函數監視損失值,如果在5個訓練周期過后看不到模型性能提升,則減少學習率。學習率最小值設為0.000 01。
仿真設備為 Intel(R)-Core(TM)i3-6100CPU@3.70 GHz,操作系統為Ubuntu 16.04,操作環境為TensorFlow+python3.5+jupyter,深度學習框架為Keras。
本文主要以python 為開發環境,Keras 框架(一種核心高階 API)包含 python3 的庫、NumPy、Pandas 和Matplotlib,作為圖像處理的基本庫,選用TensorFlow作為Keras 框架的前端。TensorFlow 是谷歌開發的深度學習框架,可進行數值計算、優化和評估。Keras 的可操作性很強,可優化或擴展模塊,具有簡潔的API、高效的獨立性,使代碼編寫變得十分便捷,還可支持不同神經網絡的結合算法。
本仿真采用了航空公司評論數據庫,該數據集來源于2015 年2 月美國主要航空公司的Twitter 數據,共有14 640 條評論,可分為正面、負面和中性3 類。正面評價9 178 條,中性評價3 099 條和負面評價2 363 條,涵蓋6 家主要航空公司,分別是Southwest公 司 、Delta 公 司 、United 公 司 、American 公 司 、US Airways 公司和 Virgin America 公司。其中,United 公司的差評率最高,達到了68.89%。在負面評價中,主要問題為客戶服務、航班延誤、移動設備不能使用等方面。從TUAS 數據集中取2 363 條正面評價和負面評價數據,構建本文所需要的數據集,其中80%作為訓練集,20%作為測試集。
建立模型框架一般包括預處理數據、建立模型、訓練模型、預測模型這3 個階段。首先,在模型訓練之前對數據進行預處理,提取’airline_sentiment’和’text’2 列,采用數字標簽,將正面評價表示為1,負面評價表示為0。對文本的預處理主要步驟如下:
(1)去除評論文本中的特殊字符或標點符號,所有單詞變小寫,提出唯一的英文單詞,再將每個單詞轉換成字典形式,一一對應為整數序列。由于每一條的評論的字數不一致,需將所有文本填充至統一長度,將整數序列的長度設置為40。
(2)加入Embedding 層將整數序列轉換成向量序列,并加入Dropout 層防止過度擬合。
(3)搭建深度學習模型,模型的相關參數:RNN模型中神經元Unit 為16,LSTM 模型建立了32 個神經元單次訓練用的樣本數,設為128,設置50 個訓練周期,經過模型的訓練,可以觀察預測結果。
3.4.1 映射成密集向量的長度對模型的影響
訓練模型時,在Embedding 層需要指定一個映射成密集向量的長度值,在研究映射成密集向量長度對模型準確率的影響時,對評論的單詞個數進行統計,繪制出評論文本的長度分布圖,句子長度分布圖如圖6 所示。評論的單詞個數有近 1/2 在 20~30 內,30~40 內單詞個數的評論較少,數據分布與高斯分布類似。映射成密集向量的長度值對準確率的影響如圖7 所示。
模型共訓練50 個訓練周期,對后20 個訓練周期的正確率取平均值進行比較。對于此數據集,詞向量的維度值取10 時,模型效果最好。若長度值較小,截取文本時會造成語義特征信息丟失;若最大長度值較大,模型準確率則在較低范圍內波動。

圖6 句子長度分布圖

圖7 密集向量長度對準確率的影響
3.4.2 設置不同Dropout值對模型的影響
在此數據集上,研究設置了不同Dropout 值對模型訓練效果的影響,設置一定比例的不工作隱藏節點,這些節點在模型訓練中,其對應的權值就不會更新,仿真結果如圖8 所示。從圖8 可以看出,在一定條件下,當Dropout 值為0.5 時,模型準確率可達0.94,損失率在0.18 左右,訓練效果最好。所以,一般情況下,Dropout 值都默認選擇0.5。

圖8 不同Dropout 值對模型效果的影響
仿真1 TensorFlow 直接調用LSTM 模型,測試集的準確率可達0.923,而損失率在第4 個訓練周期之后呈直線上升趨勢。雖然損失率在20 個訓練周期之后大幅下降,但在訓練結束時損失率升至0.7 之多,可見LSTM 模型并不能達到很好的測試效果。
仿真2 在模型中加入Dropout 層(D-LSTM 模型),訓練結果的準確率和損失率起伏波動較大,模型剛開始損失率變化較緩慢,但也一直呈上升趨勢,在最后依舊保持較高的損失率,結果不理想。
仿真3 雙向RNN 網絡(BRNN 模型)在經過 10個訓練周期之后準確率和損失率都趨于穩定,模型性能在兩方面都有較好的穩定性。
仿真 4 改進的 BRNN 網絡(M-BRNN 模型),準確率接近0.96,損失率在0.2 左右,在模型訓練后期,具有較好的穩定性,過度擬合程度已經減輕。
4 個仿真的對比結果如圖9 和圖10 所示。相較于LSTM 模型,增加了Dropout 層的模型以及BRNN 模型,本文提出的LSTM 與雙向循環神經網絡反向融合的模型,增加Flatten 層,改變了優化器類型以融合信息特征,設置一定的學習速率,取得了較好的分類效果。從圖9 可以看出,本文模型準確率較BRNN 模型提高了1.8%左右。

圖9 不同模型情感分類準確率

圖10 不同模型情感分類損失率
本文通過融合LSTM 網絡和RNN 神經網絡,提出一種基于Keras 框架的M-BRNN 模型。通過對模型進行訓練,最終預測出評論內容的正面傾向或負面傾向。仿真結果表明,與LSTM、D-LSTM、BRNN 常用方法比較,本文提出的M-BRNN 模型,雖然運算較復雜,運行時間相對較長,但該模型可以很好地理解上下文的語義特征,表現最優,同時穩定性最佳,較好地證實了該方法在自然語言處理方面的可行性和有效性。本研究下一步將優化模型,結合更多的用戶信息,細化類別,利用GPU 來加快訓練速度,從而挖掘到更多有價值的信息,并研究更加復雜的文本分類情況。