黃忠祥,李 明
(重慶師范大學(xué)計算機(jī)與信息科學(xué)學(xué)院,重慶 401331)
人們通常使用計算機(jī)進(jìn)行NLP領(lǐng)域內(nèi)各項任務(wù)的處理,并利用計算機(jī)可進(jìn)行高速運(yùn)算的特點(diǎn),對各類下游任務(wù)進(jìn)行處理,這些任務(wù)可以是實時的,也可以是間斷性的。文本分類是其中的基礎(chǔ)性任務(wù),提升文本分類的準(zhǔn)確率,對于幫助人們在眾多信息來源中,提取最有用、研究最有意義的信息是很有必要的[1]。
滕金保等人[2]提出了MLACNN模型,主要是同時使用LSTM-ATT和CNN進(jìn)行特征信息的提取,最后進(jìn)行特征的輸出。滕金保等人[3]還提出了MCCL模型,同時使用CNN和LSTM疊加注意力機(jī)制進(jìn)行特征信息的提取,并輸入到全連接層進(jìn)行后續(xù)的分類。田園等人[4]提出了使用BERT完成文本編碼,然后輸入到雙向的LSTM模型訓(xùn)練并結(jié)合注意力機(jī)制,應(yīng)用到softmax層完成分類,最后應(yīng)用于電網(wǎng)設(shè)備缺陷數(shù)據(jù)集。同時,針對電網(wǎng)設(shè)備故障的文本信息,田園等人[5]還提出了使用Word2vec進(jìn)行文本向量化,將字符信息轉(zhuǎn)換后,輸入到結(jié)合了注意力機(jī)制的,能夠?qū)χ匾畔⑦M(jìn)行加權(quán)突出的BiLSTM網(wǎng)絡(luò)中,進(jìn)行設(shè)備故障文本的處理。段丹丹等人[6]提出了使用BERT-base預(yù)訓(xùn)練模型取代常用的Word2vec模型,來進(jìn)行短文本信息的向量化,并將特征向量使用softmax進(jìn)行最后的分類。文獻(xiàn)[7]使用BERT作為詞嵌入層,使得向量能夠有更強(qiáng)的語義特征表現(xiàn),獲得的特征在正反2層GRU網(wǎng)絡(luò)中進(jìn)行運(yùn)算,用注意力機(jī)制進(jìn)行重點(diǎn)語句的突出,形成BBGA模型,并在THUCNews數(shù)據(jù)集進(jìn)行了驗證。文獻(xiàn)[8]提出了ALBERT-BiGRU模型,主要是在專利文本數(shù)據(jù)集中,使用ALBERT取代傳統(tǒng)的Word2vec模型,并結(jié)合BiGRU神經(jīng)網(wǎng)絡(luò)訓(xùn)練,達(dá)到分類效果的提升。文獻(xiàn)[9]則是采用了ALBERT-base獲取更好表征特征性的動態(tài)詞向量,使用結(jié)合了CNN和BiGRU優(yōu)點(diǎn)的神經(jīng)網(wǎng)絡(luò)模型CRNN進(jìn)行訓(xùn)練,最后再經(jīng)過softmax層完成分類。文獻(xiàn)[10]提出了結(jié)合注意力機(jī)制的雙通道文本分類模型,主要利用了雙向LSTM和CNN網(wǎng)絡(luò)同時進(jìn)行信息的提取,在雙通道中均引入了注意力機(jī)制進(jìn)行權(quán)重的分配,并在今日頭條和THUCNews數(shù)據(jù)集中進(jìn)行驗證以及性能評估。
針對多標(biāo)簽分類,文獻(xiàn)[11]提出了基于AdaBoost改進(jìn)的BoosTexter算法;文獻(xiàn)[12]提出了一個基于排序的支持向量機(jī)的學(xué)習(xí)模型(Ranking Support Vector Machine, Rank-SVM)來解決多標(biāo)簽問題;Zhang等人[13]提出了基于KNN算法進(jìn)行改進(jìn)的方法(Multi-Label k-Nearest-Neighborhood, ML-KNN),該方法利用最大后驗估計確定隱藏實例的標(biāo)簽集。文獻(xiàn)[14]提出了CNN-RNN模型,利用CNN得到文本序列信息,并結(jié)合使用RNN的變種——LSTM進(jìn)行特征學(xué)習(xí)。文獻(xiàn)[15]利用雙向GRU結(jié)合注意力機(jī)制進(jìn)行網(wǎng)絡(luò)設(shè)計,并完成多標(biāo)簽文本分類。
值得注意的是,深度學(xué)習(xí)擁有著強(qiáng)大的特征學(xué)習(xí)能力,而如何利用深度學(xué)習(xí)技術(shù)去提升多標(biāo)簽文本分類方法的性能表現(xiàn),這點(diǎn)是值得研究的[16-17]。本文針對多標(biāo)簽的文本分類提出運(yùn)用預(yù)訓(xùn)練模型完成文本向量化,結(jié)合深度學(xué)習(xí)算法,并輔助以注意力機(jī)制優(yōu)化輸出文本對應(yīng)標(biāo)簽。具體為,提出利用ALBERT對文本進(jìn)行字符級別的向量化,以期更好地挖掘文本深層特征,增加模型的泛化性能,并輸入到雙向LSTM神經(jīng)網(wǎng)絡(luò)中進(jìn)行信息提取后,經(jīng)過注意力機(jī)制層的特定信息加權(quán)凸顯,最后完成多標(biāo)簽的文本分類的ABAT(ALBERT-BiLSTM-Attention)模型。
隨著BERT模型[18]及其large版本的橫空出現(xiàn),更多的模型改進(jìn)方向是增加模型參數(shù)量,然后使用擁有巨大算力資源的計算機(jī)去完成計算。這樣的方法的確是有效的,但對機(jī)器的硬件要求極高,ALBERT屬于對BERT模型輕量化改進(jìn)。
ALBERT改進(jìn)的方向是,在BERT優(yōu)秀的框架基礎(chǔ)上,保持模型原有的性能,然后盡可能地減少模型的參數(shù)量,以便更好地利用計算資源。為此ALBERT做了以下的改進(jìn):
1)詞向量矩陣分解。
ALBERT對嵌入詞向量矩陣進(jìn)行分解,將其分解為2個規(guī)模小一點(diǎn)的矩陣。假設(shè)詞匯表的大小是V,詞嵌入的大小是E,隱藏層的大小是H。原本BERT模型參數(shù)矩陣的維度為O(V·H),ALBERT將嵌入詞向量矩陣分解后,參數(shù)矩陣的維度變成O(V·E+E·H),模型的參數(shù)量將會大大減少[19]。
2)隱藏層參數(shù)共享。
將詞向量矩陣分解后,模型的參數(shù)量的確大大減少了,但是由于隱藏層需要完成更復(fù)雜的任務(wù),隱藏層的參數(shù)量仍然是巨大的。ALBERT通過共享隱藏層各模塊的參數(shù),想要進(jìn)一步縮小隱藏層的參數(shù)規(guī)模。
一般說來,可以在各層間前饋神經(jīng)網(wǎng)絡(luò)以及注意力層間進(jìn)行共享層間參數(shù),可以只共享前饋神經(jīng)網(wǎng)絡(luò)的參數(shù),也可以只共享注意力層的層間參數(shù),也可以兩者同時共享參數(shù)。ALBERT選擇將兩者的參數(shù)都進(jìn)行共享,這樣的方法使得ALBERT保持著多層網(wǎng)絡(luò)連接的同時,各層的參數(shù)仍保持一致,使得ALBERT隱藏層的參數(shù)量變?yōu)樵瓉淼?/12或1/24[20]。
3)句子間順序預(yù)測。
為了提高模型在成對句子之間關(guān)系下游任務(wù)的推理能力,BERT模型是對句子對的關(guān)系進(jìn)行判定NSP(Next Sentence Predict),即判定句子1是否為句子2的下一句,若結(jié)果不是,則判定句子1和句子2分別屬于不同的文章。而ALBERT采用SOP(Sentence-order Prediction)的策略,對句子對的順序進(jìn)行判定,分別為判定句子1是句子2的下一句和句子2是句子1的下一句這2種情況。相比于BERT模型的NSP策略,ALBERT模型通過SOP的策略可以在學(xué)習(xí)句子間的語義關(guān)系任務(wù)上有著更好的表現(xiàn)
4)移除Dropout。
ALBERT的作者在實際的模型訓(xùn)練中發(fā)現(xiàn),當(dāng)ALBERT模型使用了隨機(jī)關(guān)停神經(jīng)元的訓(xùn)練策略,經(jīng)過了上百萬步的訓(xùn)練后,還是沒有出現(xiàn)過擬合的現(xiàn)象。這預(yù)示著不使用Dropout,反而會讓ALBERT發(fā)揮更好的性能,Dropout反而成了影響模型性能發(fā)揮的限制器。因此ALBERT預(yù)訓(xùn)練模型中將不設(shè)置Dropout率。
LSTM是有著遺忘門、輸入門和輸出門3個門結(jié)構(gòu)的特殊的RNN模型[21-22],相比于使用傳統(tǒng)的RNN結(jié)構(gòu)進(jìn)行訓(xùn)練,LSTM可以很好地避免網(wǎng)絡(luò)訓(xùn)練過程中的梯度消失和梯度爆炸的弊端。其中,遺忘門的主要作用是在更新LSTM細(xì)胞單元的時候,對已存儲的特征信息進(jìn)行有選擇性的遺忘,類比于大腦對重要信息和次要信息處理;輸入門的主要作用是,當(dāng)LSTM細(xì)胞單元接收到新的信息時,將會有選擇性地進(jìn)行特征信息的存儲;輸出門的主要作用是,決定LSTM細(xì)胞單元的最終輸出內(nèi)容。LSTM的細(xì)胞單元結(jié)構(gòu)如圖1所示。
遺忘門的計算公式如下:
ft=σ(Wf·[ht-1,xt]+bf)
(1)
公式(1)中,ft表示t時刻的遺忘門節(jié)點(diǎn)的操作,σ是sigmoid函數(shù),Wf為參數(shù)矩陣,ht-1表示上一個狀態(tài)向量,xt為t時刻的輸入向量,[ht-1,xt]表示把2個向量進(jìn)行連接,bf為偏置項。由圖1和公式(1)可以看出遺忘門主要決定在t時刻,上一個單元狀態(tài)ct-1有多少可以保留在當(dāng)前時刻ct中。
輸入門的計算公式如下:
it=σ(Wi·[ht-1,xt]+bi)
(2)
(3)
(4)
公式(2)中,it表示t時刻的輸入門節(jié)點(diǎn)的操作,σ是sigmoid函數(shù),Wi為參數(shù)矩陣,bi為偏置項,主要計算當(dāng)前時刻輸入xt,選擇保存多少到單元狀態(tài)ct中。
輸出門的計算公式如下:
ot=σ(Wo·[ht-1,xt]+bo)
(5)
ht=ot?tanh(ct)
(6)
其中,ot是t時刻輸出門的節(jié)點(diǎn)操作,輸出門控制著ct最終有多少能輸出到單元輸出值ht中。
單向的LSTM在處理長序列文本時只會從前向后進(jìn)行信息的提取,很可能會造成深層特征信息利用得不充分。為了更好地挖掘序列的特征信息,本文將使用雙向的LSTM進(jìn)行模型的訓(xùn)練,雙向的LSTM模型將會沿著正反2個方向?qū)π蛄形谋具M(jìn)行處理,最大限度地利用語料的信息[23]。
在模型中加入注意力機(jī)制可以使得模型處理關(guān)鍵信息時,去除無用信息的干擾,提取最能表達(dá)序列文本深層信息的特征。其本質(zhì)還是編碼器到解碼器的結(jié)構(gòu)模仿了人類大腦面對繁雜信息時,忽略對結(jié)果無貢獻(xiàn)的細(xì)節(jié),如何聚焦最主要信息的思維方式[24-27]。
圖2是本文構(gòu)建的ABAT模型整體框架。
1)ALBERT預(yù)訓(xùn)練層。使用ALBERT預(yù)訓(xùn)練模型進(jìn)行文本序列的向量化。相對于Word2vec,使用ALBERT預(yù)訓(xùn)練模型進(jìn)行的是分字操作,可以對語料文本進(jìn)行字符級別的向量化。
在本模型中,系統(tǒng)會提取數(shù)據(jù)集中每條數(shù)據(jù)對應(yīng)的標(biāo)簽以及實際文本內(nèi)容,作為最初的輸入信息X。此時的X屬于尚未進(jìn)行向量化的待處理文本,其格式如公式(7),Xi代表著待處理文本中第i個字符。
X=(X1,X2,…,Xn-1,Xn)
(7)
待處理文本X經(jīng)輸入層輸入到ALBERT預(yù)訓(xùn)練層后,算法將首先對于文本信息里每個單詞在字典中編號位置標(biāo)記出來,獲得對應(yīng)的編號,并進(jìn)行文本內(nèi)容的向量化,獲得信息序列E,如公式(8)所示。其中Ei表示第i個字符對應(yīng)的向量化。
E=(E1,E2,…,En-1,En)
(8)
獲得信息序列E后,還要將E輸入到ALBERT模型中的Transformer編碼器進(jìn)行深層特征信息的挖掘,轉(zhuǎn)換得到序列文本最終的特征向量表示T,如公式(9)所示。其中Ti表示第i個字符對應(yīng)的特征向量。
T=(T1,T2,…,Tn-1,Tn)
(9)
(10)
3)注意力層。將經(jīng)過雙向LSTM訓(xùn)練過的特征向量作為注意力層的輸入,使得網(wǎng)絡(luò)聚焦于深層的文本語料,最能包含文本信息的向量得到凸顯,最后完成多標(biāo)簽文本分類。實際的計算公式如下:
ut=tanh(Wuyt+bu)
(11)
φt=softmax(s(ut,q))
(12)
(13)
其中,Wu和bu分別是注意力機(jī)制層的權(quán)重矩陣和偏置量,雙向LSTM層的輸出yt作為注意力機(jī)制層的輸入,q為查詢權(quán)重,s(ut,q)為打分函數(shù),φt為每個字符的權(quán)重程度信息,V是最后的輸出向量。
4)驗證。輸入待預(yù)測的語句,模型給出待判斷事件的類別標(biāo)簽。
本文實驗使用DuEE1.0數(shù)據(jù)集[28],該數(shù)據(jù)集來源于百度聯(lián)合CCF、CIPSC共同開源的千言數(shù)據(jù)集(LUGE)。DuEE1.0是百度發(fā)布的中文事件抽取數(shù)據(jù)集,訓(xùn)練集和測試集共含有15396條數(shù)據(jù),外加31416條混淆數(shù)據(jù),主要包括65個事件類型的長短不一的中文句子,以及對應(yīng)句子所屬分類,每個句子至少歸屬于一個或多個標(biāo)簽。從中抽取15000條數(shù)據(jù),并且將每條句子原有順序打亂,重新進(jìn)行隨機(jī)分配混合,按照8:2的比例進(jìn)行訓(xùn)練集和測試集的編排,使用12000條數(shù)據(jù)作為訓(xùn)練集、3000條數(shù)據(jù)作為測試集完成實驗。
重新編排的數(shù)據(jù)集中,如單標(biāo)簽樣本句子“NBA球星哈登就違反交規(guī)一事致歉稱已接受處罰”,該樣本對應(yīng)標(biāo)注的標(biāo)簽為:“交規(guī)-道歉”。如多標(biāo)簽樣本句子“范思哲凌晨就問題T恤道歉:已下架產(chǎn)品并銷毀”,該樣本對應(yīng)標(biāo)注的標(biāo)簽為:“交規(guī)-道歉”和“產(chǎn)品行為-下架”2個事件標(biāo)簽。重新編排的數(shù)據(jù)集中,多標(biāo)簽句子有1000個,占比為6.67%。
以谷歌的Colab平臺作為實驗平臺,Python語言進(jìn)行編程,Tensorflow1.15.0為深度學(xué)習(xí)框架進(jìn)行實驗。
實驗中使用的ALBERT預(yù)訓(xùn)練模型均為tiny版本,隱藏層尺寸為768,層數(shù)為12,注意力頭數(shù)為12個,LSTM網(wǎng)絡(luò)隱藏層尺寸為128,Dropout設(shè)置為0.4,迭代次數(shù)為10次,優(yōu)化方法為Nadam。
多標(biāo)簽文本分類與單標(biāo)簽文本分類常用的評價指標(biāo)有所不同,因為前者的文本標(biāo)簽種類往往是不止一個的,所以多標(biāo)簽文本分類常用Micro-Precision、Micro-Recall、Micro-F1、漢明損失(Hamming Loss)[29-30]進(jìn)行模型性能的評價。其中,一般是Micro-Precision和Micro-Recall的數(shù)值越大越好,而Micro-F1是Micro-Precision和Micro-Recall的調(diào)和平均,也是越大越好,漢明損失越小越好。后續(xù)分別使用Micro-P、Micro-R代表Micro-Precision和Micro-Recall。Micro-Precision、Micro-Recall、Micro-F1以及漢明損失計算公式分別如下:
(14)
(15)
(16)
(17)
其中,TP表示正類被正確預(yù)測出來,F(xiàn)P表示負(fù)類被錯誤預(yù)測成正類,F(xiàn)N表示正類被錯誤預(yù)測成負(fù)類,|D|指的是樣本的數(shù)量,L是標(biāo)簽的總數(shù),xi表示標(biāo)簽,yi表示真實標(biāo)簽,XOR指異或運(yùn)算。
實驗1 對比實驗。設(shè)置以下幾個模型作為對比組:
1)WL模型。使用Word2vec進(jìn)行文本的向量化后,輸入到單向LSTM神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,最后進(jìn)行分類。
2)AB模型。使用ALBERT進(jìn)行文本的向量化后,輸入到雙向LSTM神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,最后進(jìn)行分類。
3)ABAT模型。使用ALBERT進(jìn)行文本的向量化后,輸入到雙向LSTM神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,再經(jīng)過注意力機(jī)制層的處理,最后進(jìn)行分類。
4)BoosTexter模型。文獻(xiàn)[11]提出的模型。
5)ML-KNN模型。文獻(xiàn)[13]提出的模型,K值設(shè)定為8。
6)CNN-RNN模型。文獻(xiàn)[14]提出的模型。
7)文獻(xiàn)[15]模型。利用GloVe獲取詞向量后,經(jīng)過點(diǎn)積自注意力層處理,并輸入BiGRU網(wǎng)絡(luò)完成分類。
實驗結(jié)果如表1所示,表中“+”表示該項取值越大越好,“-”表示該項取值越小越好。
表1 不同模型對比
由表1中數(shù)據(jù)可以看出,WL模型的分類效果一般,原因可能是,使用Word2vec模型進(jìn)行向量化時,對于數(shù)據(jù)集大小十分敏感,其Micro-P只有0.9029,Micro-R只有0.7399,Micro-F1只有0.8133,Hamming Loss的值達(dá)到了0.0363。BoosTexter模型與ML-KNN模型兩者性能表現(xiàn)接近,但是漢明損失仍處于較高值。而CNN-RNN模型由于在小訓(xùn)練集上,容易過擬合,導(dǎo)致實際表現(xiàn)一般。文獻(xiàn)[15]提出的模型使用GloVe獲取詞向量,使得模型不能更好獲取深層特征,漢明損失達(dá)到0.0101。AB模型使用了ALBERT預(yù)訓(xùn)練模型進(jìn)行向量化,相對WL模型,3項指標(biāo)都得到了提升,可以看到AB模型相對WL模型,在Micro-P上提升了4.19個百分點(diǎn),在Micro-R上提升了5.49個百分點(diǎn),在Micro-F1上提升了5個百分點(diǎn)。而ABAT模型相對于AB模型又增加了注意力機(jī)制,能夠幫助模型更好地利用深層信息。經(jīng)過對比可以發(fā)現(xiàn),注意力機(jī)制的加入,對于提升模型的綜合表現(xiàn)是很有幫助的。本文提出的ABAT模型在實驗中達(dá)到了較好的性能,相對于WL模型,在Micro-P上提高了5.96個百分點(diǎn),在Micro-R上提高了11.1個百分點(diǎn),在Micro-F1上提高了9個百分點(diǎn),并且Hamming Loss的值為同組最小值0.0023。
實驗2 不同Dropout率的影響。為了使得網(wǎng)絡(luò)參數(shù)最優(yōu),設(shè)計了一組實驗,探究在不同Dropout率下會對網(wǎng)絡(luò)的性能有什么樣的影響,結(jié)果如圖3所示。
從圖3中可以看出,隨著Dropout率的提升,Micro-P、Micro-R、Micro-F1等指標(biāo)的值也會變大,表明模型性能得到了提升。在Dropout率取值為0.4的時候,模型性能表現(xiàn)為整組實驗中的最優(yōu)。此時Micro-P、Micro-R、Micro-F1的值也達(dá)到了最大。當(dāng)Dropout率的取值繼續(xù)增大時,模型性能開始下降。由此可知整個實驗中,伴隨著Dropout率的提升,模型性能指標(biāo)表現(xiàn)出先增大后減小的趨勢。當(dāng)Dropout=0.4的時候,會使得本文模型整體性能表現(xiàn)最好。
實驗3 標(biāo)簽分類驗證。使用訓(xùn)練后的模型進(jìn)行文本分類驗證實驗,結(jié)果如表2所示。從表中可以看出,模型可以有效地識別出文本對應(yīng)的標(biāo)簽,無論樣本內(nèi)容是單標(biāo)簽還是多標(biāo)簽的均可被正確識別出來。
表2 模型驗證
在后續(xù)的工作中,將針對如何結(jié)合深度學(xué)習(xí)網(wǎng)絡(luò),進(jìn)一步提高模型的分類準(zhǔn)確率,加快分類速度等方面展開研究。傳統(tǒng)的機(jī)器學(xué)習(xí)方法在處理文本時,較大程度依賴人工進(jìn)行特征提取,且在特征訓(xùn)練階段,容易忽略文本的深層特征信息,使得模型分類效率不夠高。深度學(xué)習(xí)網(wǎng)絡(luò)能較好地完成文本特征信息的挖掘,結(jié)合深度學(xué)習(xí)網(wǎng)絡(luò),對已有的分類算法進(jìn)行改進(jìn),是分類方法改進(jìn)的方向。在相同數(shù)據(jù)集上的實驗表明,本文提出的模型相對于對比模型達(dá)到了最好的性能,并且探究了Dropout率的設(shè)置對ABAT模型的性能影響。各項實驗表明,ABAT模型能較好地完成多標(biāo)簽文本分類任務(wù)。