張小川,戴旭堯,劉 璐,馮天碩
(1.重慶理工大學(xué)兩江人工智能學(xué)院,重慶 401135;2.重慶理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,重慶 400054)
(?通信作者電子郵箱das7575@163.com)
文本分類是自然語言處理領(lǐng)域中的一項(xiàng)重要的基本任務(wù),是解決如何有效獲取和管理海量電子文本信息的關(guān)鍵技術(shù)[1-2]。
在傳統(tǒng)的文本分類研究中,文本表示常利用基于分布假設(shè)的word2vec[3]或Glove[4]方法,以對大量無標(biāo)簽文本進(jìn)行訓(xùn)練,并將其表示為Word Embedding[5]。它們的結(jié)果除詞嵌入本身外,還封裝了上下文信息,具有較好的特征表達(dá)能力。但在模型訓(xùn)練時(shí),該類方法存在利用文本上下文信息的范圍有限,從而導(dǎo)致語義特征不豐富的問題。
經(jīng)Word Embedding 處理的短文本僅包含相互獨(dú)立的詞特征,還需利用神經(jīng)網(wǎng)絡(luò)模型來建立非線性詞向量之間的相互作用關(guān)系,通過學(xué)習(xí)句子的表述來捕捉句子的語義。文獻(xiàn)[6]提出將卷積神經(jīng)網(wǎng)絡(luò)(Convolution Neural Network,CNN)應(yīng)用到文本分類任務(wù),利用多個(gè)不同大小的卷積核來捕捉局部相關(guān)性以提取句子中的特征信息。文獻(xiàn)[7]提出了一種利用單詞上下文信息的循環(huán)CNN(Recurrent CNN,RCNN)把每個(gè)單詞的無語義向量與上下文單詞的向量進(jìn)行拼接作為詞嵌入向量,有效地緩解了循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)[8]存在的梯度消失的問題,也避免了CNN需要通過窗口大小來設(shè)定上下文依賴長度。在中文場景下,文獻(xiàn)[9]將文本使用句向量表示,并輸入到雙向門控循環(huán)單元(Bidirectional Gated Recurrent Unit,BGRU)與CNN 的混合模型BGRU-CNN中,在THUCNews數(shù)據(jù)集上取得了較好的效果;文獻(xiàn)[10]使用自注意力機(jī)制對詞向量進(jìn)行處理,提出一種關(guān)鍵詞提取與CNN 相結(jié)合的文本分類模型,其模型在復(fù)旦數(shù)據(jù)集上取得了較好的效果。以上研究雖取得了不錯(cuò)的效果,但都只能保留文本的局部特征,不能充分利用上下文,且傳統(tǒng)文本表示方法不能解決多義詞的問題,導(dǎo)致模型精確率較低。
近年來,深度學(xué)習(xí)方法在單標(biāo)簽文本分類任務(wù)上取得了較優(yōu)成績[11-13],其在解決文本分類任務(wù)時(shí)常劃分為文本預(yù)處理、文本表示、特征提取和分類器四個(gè)部分。本文針對其中文本表示和特征提取兩個(gè)部分進(jìn)行改進(jìn),提出了一種融合卷積神經(jīng)網(wǎng)絡(luò)和多頭自注意力機(jī)制(combing Convolutional Neural Network and Multi-Head self-Attention mechanism,CNN-MHA)的中文短文本分類模型,主要工作如下:
1)在一般文本分類任務(wù)的過程中,不再使用靜態(tài)文本表示方法word2vec,而是結(jié)合預(yù)訓(xùn)練語言模型的思想,使用基于Transformer 的雙向編碼器表示(Bidirectional Encoder Representations from Transformers,BERT)預(yù)訓(xùn)練語言[14]對文本進(jìn)行Word Embedding。在詞嵌入的過程中,充分利用BERT在海量文本數(shù)據(jù)集上的預(yù)訓(xùn)練結(jié)果,動態(tài)地表示在不同語境中含有不同語義的文本。
2)在CNN 模型的基礎(chǔ)上,對特征提取層的策略進(jìn)行改進(jìn),引入多頭自注意力機(jī)制。在特征提取的過程中,根據(jù)詞本身對分類結(jié)果的重要程度,為其分配不同的權(quán)重,增強(qiáng)文本內(nèi)部的詞依賴關(guān)系。為降低模型在語義識別上的局限性,在多個(gè)特征表示的子空間內(nèi)分別進(jìn)行特征提取,再將各結(jié)果融合,提高模型的學(xué)習(xí)能力。
傳統(tǒng)語言模型的表示方法是靜態(tài)的,無法充分利用上下文表征字詞的多義性,為此,本文使用BERT模型,將傳統(tǒng)靜態(tài)表征方法優(yōu)化為動態(tài)表征方法。如圖1所示,BERT 模型輸入層由字符級向量(Token_Embeddings)、位置向量(Position_Embeddings)和分段向量(Segment_Embeddings)相加組成。
圖1 BERT模型簡圖Fig.1 BERT model diagram
Token_Embeddings為中文文本中每個(gè)字對應(yīng)的向量;Position_Embeddings給每個(gè)字添加時(shí)序信息;Segment_Embeddings的作用是將文本按句分段,并對語句做段定位,即利用標(biāo)記符號[CLS]和[SEP]來區(qū)分不同的句子并同時(shí)保存每句話的位置信息。
把三層向量疊加之后輸入到Transformer 編碼器[15]中,對每個(gè)字進(jìn)行雙向的編碼表示。Transformer編碼器以字符級向量疊加為輸入,先后通過自注意力層、殘差連接與歸一化層、前向神經(jīng)網(wǎng)絡(luò)層,最終輸出帶有語義信息的隱藏層向量。
研究發(fā)現(xiàn),注意力可選擇性地關(guān)注文本的重要信息。本文以此為啟發(fā)并借鑒Transformer 模型,采用多頭自注意力機(jī)制(Multi-head self-Attention mechanism,MHA)提取不同語義空間中的詞依賴關(guān)系。多頭自注意力以縮放點(diǎn)積注意力(Scaled Dot-product Attention,SDA)為原理,其計(jì)算式如下:
其中:Q、K、V分別為計(jì)算自注意力的查詢、鍵、值矩陣;QKT為注意力矩陣,對V矩陣加權(quán);dk表示鍵的維數(shù),而則是把注意力矩陣變?yōu)闃?biāo)準(zhǔn)的正態(tài)分布,以使得結(jié)果更穩(wěn)定且在反向傳播時(shí)能夠獲取平衡的梯度。
在式(1)計(jì)算的SDA基礎(chǔ)上,從包含不同語義信息的子空間中,集成如圖2所示的語義特征。
圖2 多頭自注意力簡圖Fig.2 Multi-head self-attention diagram
進(jìn)而,通過如下兩步求得多頭注意力MultiHead數(shù)值:
1)先將Q、K、V矩陣分別映射到多個(gè)不同的子空間中:
其中:Qi、Ki、Vi為各子空間的查詢、鍵、值矩陣;W(Qi)、W(Ki)、W(Vi)為轉(zhuǎn)換矩陣;h為頭數(shù)。
2)并行地計(jì)算各子空間中的SDA,再將所得結(jié)果拼接,經(jīng)線性變換后得句子矩陣:
其中:headi為每個(gè)子空間的SDA;MultiHead為最終結(jié)果。
采用卷積神經(jīng)網(wǎng)絡(luò)獲取文本特征。先將文本經(jīng)Word Embedding 后得到矩陣X,輸入到CNN 中,再經(jīng)卷積操作后輸出每個(gè)句子對應(yīng)的特征矩陣C:
其中:L為文本長度;xi為序列中第i個(gè)詞的向量;ω為濾波器;t為卷積核的大??;f為卷積非線性函數(shù);b為偏差項(xiàng)。
通過上述步驟求得多頭注意力MultiHead、特征矩陣C,從而完成建模預(yù)處理目標(biāo)。
CNN-MHA 模型結(jié)構(gòu)如圖3 所示,由詞嵌入層、多頭自注意力層、卷積層和輸出層組成。
圖3 CNN-MHA模型簡圖Fig.3 CNN-MHA model diagram
本文采用BERT 預(yù)訓(xùn)練語言模型作為CNN-MHA 的詞嵌入層。為學(xué)習(xí)到每個(gè)字的多重含義表達(dá),在詞嵌入層對字向量做線性映射:設(shè)置文本序列矩陣X=[x1,x2,…,xN]T,N表示序列長度,當(dāng)其在Word Embedding 之后,得到矩陣A=[a1,a2,…,aN]T。接著,構(gòu)建Q、K、V三個(gè)矩陣,分別來建立當(dāng)前字與其他字的關(guān)系,并生成特征向量。首先,初始化權(quán)重矩陣WQ、WK、WV,經(jīng)矩陣計(jì)算得Q、K、V矩陣,而且在模型訓(xùn)練過程中,WQ、WK、WV不斷地優(yōu)化和更新并獲得SDA:
在文本輸入中,存在batch 序列長短不一現(xiàn)象,需要對短句中空白處以0 填充。作為計(jì)算SDA的關(guān)鍵環(huán)節(jié),softmax函數(shù)存在產(chǎn)生無意義值的情況,從而導(dǎo)致結(jié)果出現(xiàn)較大偏差。為解決此問題,本文提出對無效填充區(qū)域增加平滑項(xiàng)的做法,經(jīng)實(shí)際計(jì)算SDA,并對結(jié)果做殘差連接,使梯度跨層由后向前傳播,從而有效地避免傳統(tǒng)RNN方法的梯度消失的問題。
進(jìn)一步對結(jié)果進(jìn)行歸一化操作,以將隱藏層轉(zhuǎn)化為正態(tài)分布,加快了訓(xùn)練和模型的收斂。
在經(jīng)過所有計(jì)算后,結(jié)束BERT 的操作,通過多層迭代,最終得到經(jīng)詞嵌入層后對應(yīng)的融合上下文信息的隱藏層向量encodeToken=[et1,et2,…,etN]T。
所有文本數(shù)據(jù)經(jīng)Word Embedding 操作之后,所得的encodeToken對應(yīng)為每個(gè)字的向量表示,仍可以進(jìn)行進(jìn)一步的語義特征提取,因此,本文利用多頭自注意力機(jī)制單獨(dú)作為CNN-MHA中語義增強(qiáng)層,并行地進(jìn)行h次自注意力運(yùn)算:
再融合所有子空間的語義信息:
最后,將MultiHead以式(10)與最初輸入的文本序列進(jìn)行殘差連接,最終得到句子向量。
在數(shù)據(jù)通過Multi-head Attention 層后,所有文本序列內(nèi)部都獲得全局范圍內(nèi)的上下文詞依賴關(guān)系,但是模型缺少捕獲局部特征的能力。為提升模型的表征能力,將經(jīng)Multi-head Attention 層輸出的句子向量再輸入到CNN 中,以捕捉相應(yīng)的局部特征:
其中,為Multi-head Attention 層的輸出矩陣A從第j行到第j+t-1行的局部特征。
本文使用m種卷積核,得到最終的卷積結(jié)果Ck(1 ≤k≤m)輸入到池化層進(jìn)行特征采樣,目的是在保持主要特征的情況下,降低模型的參數(shù)數(shù)目,同時(shí)也降低過擬合的風(fēng)險(xiǎn)。最終,將池化后的特征矩陣C輸入到帶有dropout 操作的全連接層里,得到最終的分類特征向量:
在文本經(jīng)詞嵌入層后,得到encodeToken為每一個(gè)文本序列所對應(yīng)的包含上下文語義信息的向量,如圖1 中輸出層的表示,而encodeToken中只包含[CLS]對應(yīng)的頭向量clsToken,可作為每句話的向量表示,即為每句話的分類特征向量,如圖4所示。
圖4 分類特征向量簡圖Fig.4 Classification feature vector diagram
為最大化獲取文本特征信息,本文將經(jīng)CNN 輸出的特征向量y與Word Embedding 時(shí)生成的clsToken向量進(jìn)行特征融合:
其中,H作為融合特征向量輸入到分類器中,進(jìn)行最終的中文短文本分類任務(wù)。
本文實(shí)驗(yàn)使用的數(shù)據(jù)來自搜狗實(shí)驗(yàn)室提供的搜狐新聞標(biāo)題數(shù)據(jù)[16]。本文從中選取金融、股票、房產(chǎn)、科學(xué)、體育、教育、社會、政治、游戲、娛樂十個(gè)類別的數(shù)據(jù),進(jìn)行分類任務(wù)。為了保證測試數(shù)據(jù)評估效果與在真實(shí)場景下模型對未知數(shù)據(jù)預(yù)判的結(jié)果相近[17],數(shù)據(jù)集被劃分為訓(xùn)練集50 000 條、驗(yàn)證集5 000條、測試集10 000條。
本文的實(shí)驗(yàn)環(huán)境為:操作系統(tǒng)Windows 10;CUDA10.0;cudnn 10;處理器Intel I7 8700,GPU NVIDIA GeForce GTX 1070;內(nèi)存16 GB;顯存8 GB;編譯平臺Pycharm Professional;Python 3.6;Pytorch 1.3.1。
本文模型實(shí)驗(yàn)的所有參數(shù)為:訓(xùn)練輪數(shù)epoch=10,batch_size=64,每條文本的長度text_size=32,學(xué)習(xí)率learning_rate=5E-5,BERT模型的隱藏單元數(shù)hidden_num=768,CNN 的卷積核尺寸filter_size=(2,3,4),卷積核數(shù)量filter_num=256,dropout=0.1。為了降低模型過擬合的風(fēng)險(xiǎn),設(shè)置檢測參數(shù)detect_imp=3 000,即若模型在持續(xù)3 000個(gè)batch 的訓(xùn)練中所得結(jié)果沒有明顯的提升,就提前結(jié)束訓(xùn)練。
由于實(shí)驗(yàn)用數(shù)據(jù)集的標(biāo)簽具有不規(guī)則、不平衡等特性,為了能客觀準(zhǔn)確地衡量模型在數(shù)量少的類別上的分類性能,實(shí)驗(yàn)主要采用F1值作為性能評價(jià)指標(biāo),并以準(zhǔn)確率、精確率、召回率作參考:
其中:Precision代表準(zhǔn)確率;Recall代表召回率;F1 越大,模型的分類效果則越好。
實(shí)驗(yàn)將本文構(gòu)建的CNN-MHA 模型與如下基準(zhǔn)模型進(jìn)行了對比。
1)TextCNN:將經(jīng)Word Embedding 的詞向量通過一層卷積和一層池化來構(gòu)造更好的特征向量。
2)TextRCNN:將經(jīng)Word Embedding 的詞向量通過雙向RNN和一層最大池化來構(gòu)造更好的特征向量。
3)BERT:利用預(yù)訓(xùn)練模型,直接將文本嵌入為詞向量,再輸入到分類器中分類。
在實(shí)驗(yàn)中,訓(xùn)練和測試時(shí)的各項(xiàng)參數(shù)都保持統(tǒng)一,評價(jià)指標(biāo)采用準(zhǔn)確率、精確率、召回率、F1值。本文實(shí)驗(yàn)數(shù)據(jù)共有10個(gè)類別,為方便對比各模型性能,評價(jià)指標(biāo)的實(shí)驗(yàn)結(jié)果皆取10個(gè)類別的均值,如表1所示。
表1 不同模型實(shí)驗(yàn)結(jié)果對比 單位:%Tab.1 Comparison of experimental results of different models unit:%
由表1 可見,CNN-MHA 模型在各項(xiàng)指標(biāo)上都是最優(yōu)的,其中F1 值比TextCNN 模型提高了3.99%,比BERT 模型提高了0.76%,比TextRCNN 模型高出2.89%。如果采用BERT 模型作為嵌入層:BERT-CNN 與傳統(tǒng)靜態(tài)表征方法的TextCNN相比,其各項(xiàng)指標(biāo)平均提高了3.92%;BERT-RCNN 與TextRCNN 相比,其各項(xiàng)指標(biāo)平均提高了2.63%。因此,從以上實(shí)驗(yàn)結(jié)果來看,由于BERT 模型在海量文本數(shù)據(jù)集上進(jìn)行了預(yù)訓(xùn)練,其動態(tài)文本表征方法相較于傳統(tǒng)靜態(tài)文本表征方法,對文本分類任務(wù)有明顯影響且性能有顯著提升。
本文CNN-MHA 模型與BERT-CNN 相比,各項(xiàng)指標(biāo)平均提升了0.06%,其精確率提升了0.08%、F1 值提升了0.06%。通過在BERT-RCNN 中添加了Multi-head Attention 層得到MHA-RCNN,由表1 所示,二者相比,MHA-RCNN 準(zhǔn)確率提高了0.04%、精確率提高了0.05%、召回率提高了0.05%、F1 值提高了0.07%,這表明Multi-head Attention 在構(gòu)建含有更豐富的語義信息特征向量時(shí)具有有效性,且CNN 專注于局部特征提取這一特性,相較于RCNN 效果更好,計(jì)算效率更高,并很好地彌補(bǔ)了Multi-head Attention 缺少的局部特征提取功能的不足。
在訓(xùn)練過程中發(fā)現(xiàn),由于本文模型存在較大的參數(shù)量,其各項(xiàng)指標(biāo)所對應(yīng)的結(jié)果體現(xiàn)出模型存在著輕微的過擬合現(xiàn)象。為此,本文采取在Multi-head Attention 層后加入dropout操作的方法,由表1 的結(jié)果可以看出,與沒有dropout 操作的CNN-MHA*相比,CNN-MHA 模型的各項(xiàng)指標(biāo)平均提升了0.2%,其中精確率和F1 值增長了0.22%,表明dropout操作對本文模型具有較大的影響。
通過各實(shí)驗(yàn)對比發(fā)現(xiàn),本文的CNN-MHA 模型具有良好的泛化能力,在中文短文本分類任務(wù)上具有良好的效果。
本文針對中文短文本分類任務(wù),特別針對文本表示和特征提取部分,提出了一種融合多頭自注意力機(jī)制的中文短文本分類模型CNN-MHA。該模型的核心思想是先利用BERT預(yù)訓(xùn)練模型對文本進(jìn)行Word Embedding;再利用短文本的海量性,針對獨(dú)立且不同的上下文語境,通過多頭自注意力機(jī)制在全局范圍內(nèi)進(jìn)一步學(xué)習(xí)文本序列內(nèi)部的詞依賴關(guān)系,增強(qiáng)模型的表意能力;然后,將結(jié)果輸入到CNN 中,捕捉局部特征;最終,將得到的特征向量與Word Embedding 時(shí)生成的句特征向量進(jìn)行特征融合,并以此融合向量作為分類器的輸入進(jìn)行短文本分類任務(wù)。實(shí)驗(yàn)結(jié)果表明,本文改進(jìn)后的模型在中文短文本分類任務(wù)上具有較好的效果。
本文所提模型雖然達(dá)到了一定的效果,但也有一些明顯的缺陷:在語料數(shù)據(jù)噪聲較大時(shí),模型效果會產(chǎn)生波動;模型的參數(shù)量較大,計(jì)算成本較高。下一步工作將考慮這些不足,對模型進(jìn)行更細(xì)粒度的研究。