洪 源 沈 勇
(江蘇科技大學(xué)計算機學(xué)院 鎮(zhèn)江 212000)
隨著智能問答系統(tǒng)的快速發(fā)展,越來越多的研究學(xué)者開始關(guān)注問題分類任務(wù)。問題分類是問答系統(tǒng)的關(guān)鍵技術(shù)之一,即為每個自然語言問句分配一個所屬類別,從而在問答系統(tǒng)中通過問句的類別標(biāo)簽對候選答案進行提取。傳統(tǒng)的問題分類大多采用基于規(guī)則的分類方法,這些方法大多是建立在待分類的句子中是否包含相同的詞或者短語的基礎(chǔ)上,因此不具有通用性。其后的基于機器學(xué)習(xí)的分類研究方法,同樣也存在明顯的缺點:1)在將長度不一致的問句轉(zhuǎn)換為定長特征時可能會導(dǎo)致語句信息的缺失;2)分類器的性能會受到數(shù)據(jù)領(lǐng)域差別的影響,從而會導(dǎo)致分類性能下降。
針對以上問題,本文提出了一種基于深度學(xué)習(xí)的分類模型,采用基于注意力機制的雙向長短時記憶神經(jīng)網(wǎng)絡(luò)以提高句子分類任務(wù)的準(zhǔn)確性,并且在模型訓(xùn)練階段創(chuàng)新性的將兩條不同的句子作為模型輸入。長短時記憶網(wǎng)絡(luò)是一種更高級的RNN[2],通過在神經(jīng)元上面添加門控的方式更好地控制信息的讀取與寫入。并且雙向的長短時記憶網(wǎng)絡(luò)能夠更好地利用句子的上下文信息,同時加入的注意力機制可以提取出更加精確的句子特征向量。
本文在新浪旗下的中文問答互動平臺“愛問知識人”的數(shù)據(jù)集上進行了實驗,并和單向長短時記憶網(wǎng)絡(luò)模型做了比較。實驗表明雙向網(wǎng)絡(luò)模型明顯優(yōu)于單向網(wǎng)絡(luò)模型,并且在數(shù)據(jù)集上也取得了比較好的分類效果。
在自然語言處理(Natural Language Processing,NLP)相關(guān)工作前要將文本向量化,即將文本中的詞轉(zhuǎn)化為數(shù)學(xué)中的向量表示。主要有兩種表示方法:集中式表示(One-Hot Representation)和分布式表示(Distributed Representation)。其中集中式表示采用稀疏存儲方式,形式上較為簡潔,但是這種表示形式有兩個缺點:1)詞向量的維度會隨著詞典的增加而膨脹,維度過高會影響訓(xùn)練的效率。2)不能很好地刻畫詞與詞之間的相似性,從數(shù)學(xué)形式上看不出詞與詞之間的語義相關(guān)性;另外一種分布式表示形式,它是通過神經(jīng)網(wǎng)絡(luò)技術(shù)利用句子的上下文,和上下文詞與目標(biāo)詞之間的關(guān)系進行語言模型建模,通過迭代訓(xùn)練得到詞向量。
采用詞向量的分布式表示能夠降低詞向量維度,可以表示出文本中的詞與詞之間的語義關(guān)系,從而有效地提升自然語言處理任務(wù)的性能[3~4]。本文后面的實驗部分也是采用了分布式詞向量表示,把預(yù)訓(xùn)練好的詞向量作為神經(jīng)網(wǎng)絡(luò)的輸入。
標(biāo)準(zhǔn)的循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Networks,RNNs)在訓(xùn)練過程當(dāng)中存在梯度爆炸和消失的問題,并且只能存儲有限的上下文信息[5~6]。長短時記憶神經(jīng)網(wǎng)絡(luò)(Long Short-Term Memory Networks,LSTMs)[7]通過擴展標(biāo)準(zhǔn) RNN 很好地克服了這個問題[8]。LSTMs 和標(biāo)準(zhǔn)的 RNNs 一樣有著重復(fù)的鏈狀結(jié)構(gòu),但是重復(fù)的模塊卻有更加復(fù)雜的結(jié)構(gòu),它存在四層神經(jīng)網(wǎng)絡(luò)層并以特別的形式相互影響,網(wǎng)絡(luò)結(jié)構(gòu)示意圖如圖1 所示。LSTMs 中每一個單元模塊可以通過門(gates)結(jié)構(gòu)[9]對狀態(tài)信息移除或者添加,信息可以通過門結(jié)構(gòu)選擇性的通過。
LSTMs 通過遺忘門(Forget Gate)、輸入門(Input Gate)、輸出門(Output Gate)三種門結(jié)構(gòu)保持和更新每個單元模塊的狀態(tài)信息[10]。設(shè) Xt、ht分別對應(yīng)LSTMs 單元模塊輸入值和輸出值。LSTMs 的單元模塊工作情況如下步驟:
1)每一個單元模塊處理的第一步是決定需要丟棄哪些信息,這項決策是由遺忘門的Sigmoid 層決定的。將當(dāng)前時刻的輸入Xt和上一時刻的輸出ht-1作為輸入。
2)需要決定單元模塊需要存儲哪些新的信息。首先,輸入門的Sigmoid 層確定哪些信息需要被更新,it為將更新的信息:
其次,一個tanh 層創(chuàng)建一個包含新候選值的向量,將其添加在單元模塊的狀態(tài)中,C?t為候選值:
因此,遺忘信息的操作就是將上一時刻的狀態(tài)Ct-1乘以 ft,再與新的候選信息 it*C?t的和實現(xiàn)狀態(tài)的更新。
3)由輸出門決定單元模塊需要輸出的值。先運行一個Sigmoid層確定單元模塊的狀態(tài)中哪些信息需要被輸出,然后將單元狀態(tài)輸入到tanh 函數(shù)中,再與Sigmoid的輸出值相乘,最后得到將要輸出的值。
注意力機制(Attention Mechanism)是由Treisman 和Gelade 提出的一種模擬人腦注意力機制的模型。它模擬人腦對資源分配,因為人腦在特定的時刻對于事物的注意力只會集中在某一特定的部分,忽略其他部分。這種對關(guān)鍵部分分配較多的注意力,而對其他部分分配較少的注意力的思想[11]對于傳統(tǒng)的模型具有很好的優(yōu)化作用。目前很多領(lǐng)域都使用了這種機制,并且都有很好的效果,如計算視覺領(lǐng)域用于對圖片的識別任務(wù),在自然語言處理領(lǐng)域用于機器翻譯等[12~14]。
為了克服單向的循環(huán)神經(jīng)網(wǎng)絡(luò)在處理時序序列時,忽略了未來時間點上的上下文信息的問題,本文設(shè)計的模型在長短時記憶神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上,采用了雙向長短時記憶神經(jīng)網(wǎng)絡(luò)(Bi-directional Long Short-Term Memory Networks,BLSTMs)[15~16],即使用兩個LSTMs網(wǎng)絡(luò),一個LSTMs從前往后計算隱層向量h→,另一個LSTMs網(wǎng)絡(luò)從后往前計算隱層向量h→,這樣輸入層的每一個節(jié)點都可以考慮基于它的過去和未來的語義信息。模型的整體框架結(jié)構(gòu)如圖2所示。
圖2 模型整體框圖
按照數(shù)據(jù)流向和模型架構(gòu)可以分為以下幾個部分:
1)數(shù)據(jù)預(yù)處理,包括去除部分停用詞,對句子分詞等。
2)Embedding 層,將分詞后的每條句子轉(zhuǎn)化為向量形式作為神經(jīng)網(wǎng)絡(luò)的輸入。
3)BLSTMs 層,經(jīng)過 BLSTM 網(wǎng)絡(luò)模型抽取句子特征并將其池化。
4)對上一層抽取的句子特征通過多層神經(jīng)網(wǎng)絡(luò)(Multi-layer Perceptron,MLP)進行特征融合。
5)通過Softmax分類層給出最后的分類結(jié)果。
Google 推出的 Word2vec[17]是一款開源的詞向量工具,它是基于神經(jīng)網(wǎng)絡(luò)模型,使用詞的上下文詞生成當(dāng)前詞或者使用當(dāng)前詞生成上下文詞的訓(xùn)練思路,極大化語言生成概率得到詞的向量表示。Word2vec 有兩種模型,分別是連續(xù)詞袋模型(Continuous bag-of-words,CBOW)和 Skip-Gram 模型[18]。Word2vec 將文本詞語轉(zhuǎn)化成的空間向量,其向量相似度能夠很好地表示詞語之間的語義相似度。
本文采用基于Hierarchical softmax 算法的Skip-Gram 模型,詞向量維度設(shè)置為256,窗口大小為5,訓(xùn)練迭代次數(shù)為10次。首先將詞語通過創(chuàng)建的詞匯表初始化為One-hot 形式的向量表示作為神經(jīng)網(wǎng)絡(luò)的輸入層,然后是特征映射層,輸出層是一棵Huffman 樹。利用Hierarchical softmax 算法并結(jié)合Huffman 編碼,文本語料庫中的每個詞可以從根節(jié)點沿著唯一路勁被訪問到,路徑即成為其編碼,使得預(yù)測詞二進制的編碼概率最大化作為訓(xùn)練
的目標(biāo)。
BLSTMs網(wǎng)絡(luò)能夠充分利用整個文本序列的上下文信息,其中包括每個詞之間的相互關(guān)系,并且這種關(guān)系對每個節(jié)點相應(yīng)的輸出產(chǎn)生影響。在時間上展開的BLSTMs網(wǎng)絡(luò)如圖3所示。
圖3 雙向循環(huán)神經(jīng)網(wǎng)絡(luò)在時間上的展開
BLSTMs的基本思想是提出每一個訓(xùn)練序列包含向前和向后兩個單向LSTMs網(wǎng)絡(luò),而且這兩個網(wǎng)絡(luò)都連接著一個輸出層。這樣輸出層的輸入序列中每一個節(jié)點都可以考慮到過去和未來的上下文語義信息。圖3是一個沿時間展開的BLSTMs網(wǎng)絡(luò)(忽略了內(nèi)部門結(jié)構(gòu)),圖中箭頭方向代表信息流方向,w1到w6分別代表不同狀態(tài)的權(quán)重矩陣,其中w1、w3代表輸入到向前隱含層和向后隱含層的權(quán)重值,w2、w5代表兩個獨立前后向隱含層內(nèi)部的權(quán)重值,w4、w6代表向前隱含層和向后隱含層到輸出層的權(quán)重值。重要的是,向前隱含層和向后隱含層之間是無信息流的,因此確保了整個結(jié)構(gòu)是無環(huán)結(jié)構(gòu),便于反向傳播時更新梯度的值[19~20]。
本文將經(jīng)過預(yù)處理并轉(zhuǎn)化為向量形式的兩個句子作為輸入,通過兩層LSTMs 網(wǎng)絡(luò)并根據(jù)Attention 機制計算輸入序列對最終狀態(tài)的注意力概率分布。將注意力概率權(quán)重與歷史輸入節(jié)點的隱藏層狀態(tài)乘積的累加得到語義編碼,然后計算句子的特征向量。再將引入注意力機制后對應(yīng)的輸出特征進行池化,池化后的特征維度都是固定的,解決了句子長度不一致的問題。
特征融合是將多種特征進行歸一化操作,融合為一種特征。模型使用MLP 融合提取的兩類句子特征,得到最終特征向量f。最后將得到的特征向量f 導(dǎo)入Softmax 分類器進行類別結(jié)果s( x )的輸出,如式(5)所示:
其中:?代表向量拼接,F(xiàn)?·MS表示分類器的dropout處理,Ms是與F?同形狀的每輪迭代隨機產(chǎn)生的二值向量;VS表示分類器的權(quán)值矩陣;bs表示分類器的偏置向量;g( )表示分類器的選擇。輸出s(x)是維度為1的向量,第i維代表可能為第i類的概率。
本文的實驗數(shù)據(jù)語料來自新浪旗下的中文問答互動平臺“愛問知識人”的語料集。選擇了其中的7類話題共近10000條問句,分別為購物、社會與文化、健康與醫(yī)學(xué)、教育、家庭生活、商業(yè)經(jīng)濟、電腦。
本文在Google 開源的機器學(xué)習(xí)庫TensorFlow上實現(xiàn)實驗設(shè)計,TensorFlow 是一個深度學(xué)習(xí)框架,它整合了當(dāng)前比較流行的深度學(xué)習(xí)模型。
本文實現(xiàn)了兩個實驗,一個是根據(jù)本文所設(shè)計的模型完成的實驗,另一個是標(biāo)準(zhǔn)LSTM 模型實驗,即非雙向LSTM 和未添加Attention 機制的模型。本文為判斷輸入的兩個句子是否為同一類,在各類別語料中任意取其中兩句組合成句子對集合,代表正向語料,即屬于同一類別。并在各類別中各取一句組成句子對作為負(fù)向語料,判別標(biāo)簽定位非同類。采用5 折交叉驗證法,將預(yù)處理好的語料隨機分為5 均份,抽取1 份作為測試集,其余4 份作為訓(xùn)練集。
本文采用了類別評測中常用到的正確率(precision)、召回率(recall)和F 值(F_score)三個標(biāo)準(zhǔn)作為模型評價指標(biāo)。指標(biāo)計算公式如下:
1)Attention Based Bi-LSTM模型實驗
Attention Based Bi-LSTM 模型即為本文所設(shè)計的添加Attention機制的雙向LSTM模型。首先將文本語料中的句子通過分詞工具切分為詞語。將語料中的單詞利用Word2vec工具映射成50維的向量表示。特征提取部分采用的是加入Attention 機制的雙向LSTM 網(wǎng)絡(luò)結(jié)構(gòu),采用多層前向神經(jīng)網(wǎng)絡(luò)進行特征融合。模型的激活函數(shù)選用Relu 函數(shù),隱藏層節(jié)點個數(shù)設(shè)為256。同樣為避免過多擬合現(xiàn)象發(fā)生,采用L2 正則化方法約束網(wǎng)絡(luò)參數(shù),丟碼率(dropout rate)設(shè)為0.5。學(xué)習(xí)率(learning rate)設(shè)為0.01。優(yōu)化算法采用Adam 算法。分類器采用邏輯回歸分類器,分類器的輸入是融合后的特征向量。檢測間隔步數(shù)設(shè)為100步,批尺寸設(shè)為20。
2)傳統(tǒng)LSTM模型實驗
與加入Attention機制的雙向LSTM模型采用相同的參數(shù)配置和訓(xùn)練方法,不同之處在于去除了Attention機制,并且采用了單向的LSTM模型。
本文對上訴描述的實驗?zāi)P图皡?shù)設(shè)定值在之前提到的語料數(shù)據(jù)集上進行實驗,每個實驗都進行多次訓(xùn)練調(diào)優(yōu),然后選取結(jié)果最好的實驗數(shù)據(jù)。如表1給出了實驗結(jié)果的統(tǒng)計。
表1 實驗結(jié)果統(tǒng)計
從表中的實驗數(shù)據(jù)可以看出Attention Based Bi-LSTM 模型相比于傳統(tǒng)LSTM 模型有效地提升了句子對的類別判斷效果。Attention Based Bi-LSTM 模型獲取了更多的上下文信息,并且具有每個詞對句子特征影響的概率分布。并且在數(shù)據(jù)集規(guī)模并不大的情況下,Attention Based Bi-LSTM模型依然有一個類別不錯的判別效果。比較傳統(tǒng)機器學(xué)習(xí)的分類效果,深度學(xué)習(xí)模型表現(xiàn)出了明顯的優(yōu)勢。
本文針對傳統(tǒng)深度學(xué)習(xí)方法(RNN、CNN)中無法解決文本長距離依賴問題和未考慮句子信息丟失和冗余的問題,提出了一種基于注意力機制的雙向長短時記憶神經(jīng)網(wǎng)絡(luò)模型。在公共語料上的實驗結(jié)果表明該方法的準(zhǔn)確率較傳統(tǒng)方法有了明顯提升。本文的創(chuàng)新點在于傳統(tǒng)的方法往往只拿一個句子作為模型的輸入,而本文實驗部分采用的是用兩個不同的句子作為模型輸入,通過分別提取句子的特征向量然后融合歸一化后傳送至分類器進行類別判斷。并且采用雙向LSTM 模型獲取更多的句子上下文信息,結(jié)合注意力機制考慮模型輸入與輸出的相關(guān)性,從而提取了更有效的句子特征。