楊興銳,趙壽為,張如學(xué),楊興俊,陶葉輝
1.上海工程技術(shù)大學(xué) 數(shù)理與統(tǒng)計(jì)學(xué)院,上海 201620
2.重慶大學(xué) 機(jī)械與運(yùn)載工程學(xué)院,重慶 400044
3.上海工程技術(shù)大學(xué) 管理學(xué)院,上海 201620
文本分類是自然語言處理中最基本的任務(wù)之一,模型通過大量的非結(jié)構(gòu)化數(shù)據(jù)學(xué)習(xí)到某種規(guī)則,將其他文本按照此規(guī)則進(jìn)行分類。文本分類在情感分析、輿情分析、垃圾郵件過濾等領(lǐng)域內(nèi)有著廣泛的應(yīng)用,怎樣從非結(jié)構(gòu)化的文本中提取出有效的信息在學(xué)術(shù)界以及工業(yè)界受到越來越多學(xué)者的關(guān)注。
文本分類任務(wù)還可以應(yīng)用到其他任務(wù)領(lǐng)域,例如輿情分析:有關(guān)政府單位可以依據(jù)網(wǎng)絡(luò)上人們對所在地區(qū)疫情情況的評論信息,動態(tài)地把握本地區(qū)居民的情緒,進(jìn)而采取不同的措施進(jìn)行疫情防護(hù),高效率地戰(zhàn)勝疫情。當(dāng)多分類任務(wù)變?yōu)槎诸悤r(shí),這樣的任務(wù)成為情感分析,電商網(wǎng)站運(yùn)營人員可以依據(jù)相關(guān)產(chǎn)品的評論信息,對產(chǎn)品做出動態(tài)調(diào)整,同時(shí)還可以更好地把握店鋪整體的實(shí)力情況,有利于商家進(jìn)行高效率地整改。
文本分類問題常見的研究步驟是分詞、去停用詞、建模以及預(yù)測。常見的方法主要是使用統(tǒng)計(jì)機(jī)器學(xué)習(xí)模型,先利用TF-IDF[1](term frequency-inverse document frequency,TF-IDF)方法將文本數(shù)據(jù)向量化并進(jìn)行特征提取,然后使用支持向量機(jī)(support vector machine,SVM)、隨機(jī)森林以及邏輯回歸等機(jī)器學(xué)習(xí)模型建模。TF-IDF方法以“詞頻”來刻畫詞語之間的信息,各個(gè)詞語之間相互獨(dú)立,忽略了詞語的順序,同時(shí)該方法并沒有考慮到詞語的語義信息。因此,有學(xué)者提出用神經(jīng)網(wǎng)絡(luò)模型對文本建模并將文本進(jìn)行向量化。Bengio等人[2]提出了神經(jīng)網(wǎng)絡(luò)語言模型(NNLM)用于求解二元語言模型,但是該模型隱藏層到輸出層之間的計(jì)算較為復(fù)雜。于是Mikolov等人[3]提出了Word2vec詞向量模型來獲得更加高效的詞向量,建立了CBOW(continuous bagof-words,CBOW)和Skip-Gram兩種方法,其中CBOW方法利用周圍詞建立概率語言模型預(yù)測中間詞,Skip-Gram利用中間詞建模預(yù)測周圍詞。這兩個(gè)模型方法與NNLM模型相比,最大的區(qū)別在于沒有隱藏層,使得計(jì)算更加高效。
Word2vec模型提出后,一系列結(jié)合深度學(xué)習(xí)模型的算法被運(yùn)用到文本分類任務(wù)中。由于循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)模型存在梯度消失以及梯度爆炸問題,為了改善這些問題,有學(xué)者在模型中使用Relu激活函數(shù)以及將輸入數(shù)據(jù)進(jìn)行歸一化處理。其中,Hochreiter等人[4]提出了長短期記憶網(wǎng)絡(luò)(long short-term memory,LSTM),該模型主要通過遺忘門、輸入門以及輸出門控制信息的遺忘、輸入以及輸出,能夠很好地避免長期依賴以及梯度消失的問題。
為了更好地學(xué)習(xí)到詞語之間的雙向信息,Schuster等人[5]提出了雙向長短期記憶網(wǎng)絡(luò)(bi-directional long short-term memory,BiLSTM),該模型是前向LSTM和反向LSTM的組合,用于對文本建立上下文信息。在含有程度不同的褒義詞和貶義詞等詞語的情感分析任務(wù)中,則要求進(jìn)行更加細(xì)粒度的文本分類,需要模型對情感詞、肯定詞以及程度副詞等之間建立較好的交互。因此,通過BiLSTM模型能更好地捕獲雙向語義信息。
卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)在圖像處理領(lǐng)域取得了突破性的進(jìn)展。因此,有學(xué)者將CNN引入自然語言處理領(lǐng)域。Kim[6]提出了TextCNN模型,該模型主要通過卷積運(yùn)算與池化運(yùn)算對文本進(jìn)行建模,卷積運(yùn)算可以很好地捕獲到文本之間的信息。TextCNN模型在情感分類任務(wù)中憑借其出色的準(zhǔn)確率受到了學(xué)術(shù)界以及工業(yè)界的關(guān)注。何炎祥等人[7]提出了基于微博表情符號映射情感空間的深度學(xué)習(xí)模型EMCNN,有效增強(qiáng)了模型的情感分析效果,同時(shí)模型的訓(xùn)練時(shí)間也得到了縮減。李云紅等人[8]提出了循環(huán)神經(jīng)網(wǎng)絡(luò)變體與卷積神經(jīng)網(wǎng)絡(luò)的混合模型(BGRU-CNN),在中文長文本分類任務(wù)中取得了較好的效果。還有學(xué)者將BiLSTM模型與CNN模型結(jié)合起來,Zhou等人[9]提出了BLSTM-2DPooling以及BLSTM-2DCNN模型,這兩個(gè)模型既考慮了時(shí)間步(time-step)上的維度,也考慮了文本特征向量上的維度,因此可以捕獲輸入文本中更加豐富的語義特征。李啟行等人[10]提出了基于注意力機(jī)制的雙通道文本分類模型(DAC-RNN),利用CNN通道提取文本的局部特征,利用BiLSTM通道提取文本上下關(guān)聯(lián)信息,各個(gè)通道內(nèi)加入注意力機(jī)制分配權(quán)重。模型在公開數(shù)據(jù)集上測試效果良好。黃金杰等人[11]提出了一種基于CNN與BiLSTM的中文短文本分類模型,該模型能有重點(diǎn)地提取文本關(guān)鍵信息從而提高文本的準(zhǔn)確率。徐緒堪等人[12]提出了多尺度BiLSTM-CNN情感分類模型,該模型可以對情感極性進(jìn)行更為細(xì)致的分類。進(jìn)一步,景楠等人[13]提出了結(jié)合CNN和LSTM神經(jīng)網(wǎng)絡(luò)的期貨價(jià)格預(yù)測模型(CNN-LSTM)并在LSTM結(jié)構(gòu)的末端引入注意力機(jī)制對模型進(jìn)行優(yōu)化,對比CNN、LSTM以及CNN-LSTM模型后發(fā)現(xiàn),引入注意力機(jī)制的CNN-LSTM混合模型提高了預(yù)測的準(zhǔn)確性。在混合模型BiLSTM-CNN中,輸入的文本信息經(jīng)過BiLSTM模型解碼后進(jìn)行卷積運(yùn)算,該運(yùn)算捕獲詞語間的語義信息并將此信息通過最大池化運(yùn)算進(jìn)一步降低特征維度,減少模型參數(shù)的同時(shí)提取出重要的特征,從而有效地降低了模型對數(shù)據(jù)的過擬合。但是,這樣很容易損失文本的位置信息以及特征的重要信息。因此,本文考慮使用自注意力機(jī)制[14]來獲取卷積運(yùn)算后的特征信息權(quán)重,再將此信息進(jìn)行最大池化降維運(yùn)算,從而進(jìn)一步提取了特征重要信息。
另一方面,除了提出自注意力機(jī)制外,Vaswani等人[14]還提出了Transformer模型,該模型由Encoder+Decoder構(gòu)成,其中Encoder結(jié)構(gòu)中,作者使用了數(shù)據(jù)歸一化的思想,防止輸入的數(shù)據(jù)進(jìn)入激活函數(shù)的飽和區(qū)產(chǎn)生梯度消失或者梯度爆炸的問題。最后,將數(shù)據(jù)進(jìn)行殘差運(yùn)算,讓模型學(xué)習(xí)殘差,從而更好地學(xué)習(xí)到新的特征。借鑒以上思想,本文將最大池化運(yùn)算后的特征信息進(jìn)行數(shù)據(jù)歸一化處理以避免梯度消失以及梯度爆炸,接著通過添加殘差層讓模型更好地學(xué)習(xí)新的特征。最后,將本文構(gòu)建的模型BiLSTM-CNN-self-attention-norm(BCSAN)應(yīng)用到文本數(shù)據(jù)集上進(jìn)行仿真實(shí)驗(yàn),并在準(zhǔn)確率和F1值上與其他深度學(xué)習(xí)模型進(jìn)行對比,結(jié)果表明了本文提出的模型具有較好的分類效果。
模型主要由兩個(gè)Block塊構(gòu)成,每個(gè)Block塊均由BiLSTM、TextCNN、自注意力機(jī)制、殘差層以及Layer-Normalization層構(gòu)成,模型結(jié)構(gòu)圖如圖1所示。
接下來,介紹模型中的每一層以及激活函數(shù)。
RNN是按照時(shí)間序列展開的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)模型,LSTM模型是RNN模型的變體,主要用于解決RNN網(wǎng)絡(luò)梯度消失以及梯度爆炸的問題。
LSTM模型的第一個(gè)計(jì)算是由遺忘門控制上一個(gè)時(shí)刻有多少信息可以參與到當(dāng)前時(shí)刻,該步驟輸入為h t-1和x t,輸出為f t;下一步是由Sigmoid函數(shù)構(gòu)成的輸入門控制信息狀態(tài)的更新,該步驟輸入為h t-1和xt,經(jīng)過激活函數(shù)后輸出at、wt以及狀態(tài)信息;最后一步由輸出門控制狀態(tài)信息的輸出,以h t-1、xt和前一時(shí)刻的狀態(tài)信息為輸入,經(jīng)過運(yùn)算后得到輸出。該模型t時(shí)刻的計(jì)算過程如下:
在計(jì)算過程中,Sigmoid()表示的是激活函數(shù),Out t表示t時(shí)刻的輸出,H t表示t時(shí)刻的隱藏狀態(tài)輸出,W*以及b*分別表示權(quán)重和偏置,cat運(yùn)算表示向量之間的拼接。
LSTM模型可以更好地避免梯度消失以及梯度爆炸問題,計(jì)算效率更高,但是該模型并不能捕獲句子的雙向信息。對于更加細(xì)粒度的情感分析任務(wù),如果加入句子的前向信息和后向信息則能更好地讓模型對句子的情感色彩進(jìn)行預(yù)測。對于多分類任務(wù)中,BiLSTM模型在處理文本時(shí)可以學(xué)習(xí)到更多的語義信息,這有利于對文本進(jìn)行更好的分類。
BiLSTM模型是由前向的LSTM和反向的LSTM模型構(gòu)成,每層的LSTM網(wǎng)絡(luò)分別對應(yīng)輸出一個(gè)隱藏狀態(tài)信息,模型的參數(shù)由反向傳播進(jìn)行更新。BiLSTM模型的結(jié)構(gòu)如圖2所示。
圖2 BiLSTM模型Fig.2 BiLSTM model
其中,x0、x1以及x2分別表示0、1和2時(shí)刻的輸入信息;h*和k*分別表示某時(shí)刻的不同隱藏狀態(tài)輸出;cat運(yùn)算表示的是向量的拼接,即:
Ht-1表示的是t-1時(shí)刻的兩層LSTM模型隱藏狀態(tài)的輸出拼接。
CNN主要應(yīng)用在圖像識別領(lǐng)域,當(dāng)CNN應(yīng)用到自然語言處理任務(wù)中時(shí),通常記為TextCNN。CNN模型由輸入層(input layer)、卷積層(convolution layer)、池化層(pooling layer)以及全連接層(fully connected layer)構(gòu)成。在自然語言處理領(lǐng)域中,輸入層由詞語對應(yīng)的詞向量構(gòu)成,然后經(jīng)過卷積層運(yùn)算提取詞語的特征。CNN網(wǎng)絡(luò)還可以靈活設(shè)置多個(gè)卷積核(filters)來提取更加深層次的語義特征,接著將提取的特征信息進(jìn)行池化運(yùn)算,用于對特征進(jìn)行降維,提取更為主要的特征信息,最后進(jìn)行全連接層運(yùn)算得到結(jié)果。
設(shè)輸入詞向量為X,卷積運(yùn)算的目的是利用多個(gè)卷積核來提取句子中的n-gram信息,進(jìn)而更好地提取詞語之間的相關(guān)性和語義信息,其運(yùn)算過程為:
其中,?表示的是卷積運(yùn)算,W和b表示的是權(quán)重和偏置,f(?)表示激活函數(shù),例如Relu、Sigmoid以及Tanh函數(shù)。接著將提取的關(guān)鍵信息進(jìn)行池化運(yùn)算,進(jìn)一步提取主要信息,其運(yùn)算過程為:
最后將結(jié)果進(jìn)行全連接運(yùn)算。
人們?nèi)粘I钪卸紩a(chǎn)生數(shù)據(jù),隨著數(shù)據(jù)量的增大,對這些數(shù)據(jù)進(jìn)行清洗、分析、建模就顯得尤為重要。在建模過程中,加速模型的訓(xùn)練可以節(jié)省大量的時(shí)間成本。因此,有學(xué)者依據(jù)人類大腦的關(guān)注機(jī)制提出了自注意力機(jī)制[14],并成功地運(yùn)用到了自然語言處理領(lǐng)域中。該模型的思想來源于注意力機(jī)制[15],自注意力機(jī)制較注意力機(jī)制而言可以更容易實(shí)現(xiàn)并行化計(jì)算。其基本結(jié)構(gòu)如圖3所示。
圖3 自注意力機(jī)制模型Fig.3 Self-Attention model
首先,對于輸入文本信息分別乘以相應(yīng)的權(quán)重得到q1、k1以及v1,計(jì)算過程如下:
其中,W q、W k以及W v分別對應(yīng)q、k以及v的權(quán)重矩陣;i∈[0,N],N是詞庫的大小。將得到的q1與k1進(jìn)行點(diǎn)積運(yùn)算,接著將結(jié)果歸一化處理,最后分別乘以相應(yīng)的權(quán)重v(i)得到輸出內(nèi)容,即:
由b(i)的計(jì)算結(jié)果可以看出,每個(gè)b(i)的結(jié)果值與整個(gè)輸入序列有關(guān),這也是自注意力機(jī)制可以并行加速計(jì)算的一個(gè)原因。將上述的計(jì)算過程用矩陣的方式表示為:
其中,Q、K和V是由上述各個(gè)q i、k i和v i分別拼接而成的矩陣。因此,計(jì)算速度加快的另一個(gè)原因是自注意力機(jī)制的本質(zhì)是矩陣計(jì)算。
隨著深度學(xué)習(xí)的不斷發(fā)展,網(wǎng)絡(luò)的深度越來越大,雖然模型準(zhǔn)確率得到了提升,但是一系列的問題隨之產(chǎn)生,例如梯度爆炸和梯度消失。初始化權(quán)重參數(shù)顯得格外重要,合理的權(quán)重值可以避免參數(shù)進(jìn)入激活函數(shù)飽和區(qū),從而減少梯度消失和梯度爆炸問題,然而隨機(jī)初始化參數(shù)的方法效率低。鑒于上述不足,Bjorck等人[16]提出了Batch Normalization的方法,該方法主要通過將批數(shù)據(jù)進(jìn)行歸一化來使得進(jìn)入激活函數(shù)的批數(shù)據(jù)在0附近波動,這種歸一化的方法沒有將全部數(shù)據(jù)進(jìn)行歸一化,僅僅將每個(gè)神經(jīng)元的批數(shù)據(jù)進(jìn)行歸一化,保證了數(shù)據(jù)的多樣性,讓模型每一層都能學(xué)到不同的特征信息。Batch Normalization方法主要用于機(jī)器視覺任務(wù)中,RNN模型中主要使用由Ba等人[17]提出的Layer Normalization,即在每一層中對單個(gè)樣本所對應(yīng)的所有神經(jīng)元進(jìn)行歸一化處理。具體的做法是先對每一層的單個(gè)樣本對應(yīng)的所有神經(jīng)元求解其均值和方差。即:
其中,ati表示的是t時(shí)刻神經(jīng)網(wǎng)絡(luò)模型的輸出,H表示的是神經(jīng)網(wǎng)絡(luò)模型層的維度,然后為了保持?jǐn)?shù)據(jù)的多樣性,更好地保持歸一化后的模型非線性能力,將歸一化后的數(shù)據(jù)進(jìn)行非線性激活函數(shù)運(yùn)算,即:
其中,g和b分別表示基尼參數(shù)(gain parameters)和偏置(bias),⊙表示向量之間的元素乘積。
隨著深度學(xué)習(xí)模型網(wǎng)絡(luò)深度的增大,模型非線性擬合能力會越來越強(qiáng),準(zhǔn)確率會越來越好。當(dāng)深度達(dá)到一定程度時(shí),模型的準(zhǔn)確率又開始下降,擬合能力變差,這種現(xiàn)象并非欠擬合引起,這種現(xiàn)象稱為網(wǎng)絡(luò)退化問題(degradation problem)。因此,He等人[18]提出了深度殘差模型(residual network,ResNet),該模型不僅解決了深層的網(wǎng)絡(luò)帶來的梯度消失問題,還解決了網(wǎng)絡(luò)退化問題,同時(shí)模型的準(zhǔn)確率得到了提升。其基本的殘差結(jié)構(gòu)如圖4所示。
圖4 殘差網(wǎng)絡(luò)模型Fig.4 Residual network model
x為信息輸入,H(x)為特征的信息輸出,F(xiàn)(x)為殘差,其表達(dá)式為:
信息輸入x可以直接與后邊接入層相互連接,這樣使得后邊接入的層可以學(xué)習(xí)到殘差,因此這種連接也稱為捷徑連接(shortcut connection)。殘差結(jié)構(gòu)通過恒等映射來增大模型的深度,其基本的運(yùn)算為:
x L是第L層深度單元特征的信息表示,當(dāng)殘差值為0時(shí),殘差網(wǎng)絡(luò)相當(dāng)于進(jìn)行恒等映射,這樣保證模型的訓(xùn)練精度不會下降。事實(shí)上,由于數(shù)據(jù)的復(fù)雜性與多樣性,殘差值不會為0,這樣就相當(dāng)于模型在不斷地堆疊層,進(jìn)而更好地學(xué)習(xí)新的特征。
對輸入的文本數(shù)據(jù)向量化處理得到詞向量[x1,x2,…,x n],接著進(jìn)行BiLSTM運(yùn)算得到最終的輸出單元向量[h1,h2,…,h n],接著將此特征信息進(jìn)行維度擴(kuò)充,繼續(xù)進(jìn)行TextCNN模型運(yùn)算提取到更多的特征信息。在建模運(yùn)算的過程中將特征信息進(jìn)行激活函數(shù)非線性化處理。本文采用的激活函數(shù)是Mish函數(shù),該函數(shù)由Diganta[19]提出,傳統(tǒng)的深度學(xué)習(xí)任務(wù)中,激活函數(shù)的選擇大多是Relu函數(shù),這兩個(gè)激活函數(shù)的公式分別為:
對應(yīng)的函數(shù)圖像如圖5所示。對比Relu函數(shù),Mish函數(shù)的優(yōu)點(diǎn)是:Relu函數(shù)存在零邊界,Mish函數(shù)沒有邊界的限制,從而不會出現(xiàn)梯度飽和現(xiàn)象,該函數(shù)允許較小的負(fù)梯度值流入,可以更好地保證特征信息的流動;從圖像可以看出,Mish函數(shù)的梯度較Relu更加得光滑,這樣就會導(dǎo)致更多有用的信息流入神經(jīng)網(wǎng)絡(luò)中參與計(jì)算,得到更好的準(zhǔn)確率和泛化能力?,F(xiàn)有實(shí)驗(yàn)表明了使用Mish激活函數(shù)在大多數(shù)深度學(xué)習(xí)任務(wù)中得到的準(zhǔn)確率優(yōu)于Relu、Sigmoid以及Tanh函數(shù)。
圖5 激活函數(shù)圖像Fig.5 Activation function
深度學(xué)習(xí)實(shí)驗(yàn)往往需要GPU的計(jì)算加速,為了保證實(shí)驗(yàn)可以順利進(jìn)行,本文的實(shí)驗(yàn)環(huán)境如表1所示。
表1 實(shí)驗(yàn)環(huán)境配置信息Table 1 Experimental environment configuration information
本文選取的數(shù)據(jù)集是清華大學(xué)THUCTC網(wǎng)站開源的一部分新聞文本數(shù)據(jù)20萬條,同時(shí)加入互聯(lián)網(wǎng)上搜集到的最新的新聞文本數(shù)據(jù)集10萬條一起訓(xùn)練,總計(jì)30萬條文本數(shù)據(jù),隨機(jī)選擇26萬條訓(xùn)練集,2萬條測試集與2萬條驗(yàn)證集進(jìn)行實(shí)驗(yàn),共計(jì)10個(gè)新聞類別。具體的新聞名稱及類別如表2所示。
表2 新聞類別及其名稱Table 2 News category and its name
對于文本建模,常見的方法是先將文本進(jìn)行分詞操作,接著去除和模型訓(xùn)練無關(guān)的停用詞,將分詞結(jié)果進(jìn)行向量化表示,常用的向量化方法是基于神經(jīng)網(wǎng)絡(luò)的Word2vec,本文使用的是搜狗新聞?wù)Z料庫中通過Word2vec模型的前饋神經(jīng)網(wǎng)絡(luò)(Skip-Gram)方法訓(xùn)練得到的詞向量,通過大量的新聞文本數(shù)據(jù)進(jìn)行訓(xùn)練以實(shí)現(xiàn)詞語的語義信息與詞語特征的分布式表示,最后得到詞向量的維度為25~300維。
神經(jīng)網(wǎng)絡(luò)訓(xùn)練往往需要大量的數(shù)據(jù),對這些大量數(shù)據(jù)的收集是一件繁瑣的工作。因此,為了獲得較好的神經(jīng)網(wǎng)絡(luò)模型,就需要使用數(shù)據(jù)增強(qiáng)技術(shù),該方法最早來源于機(jī)器視覺任務(wù)中,常見的數(shù)據(jù)增強(qiáng)方法有圖像的反轉(zhuǎn)、平移以及旋轉(zhuǎn)等方法來對訓(xùn)練數(shù)據(jù)進(jìn)行擴(kuò)充。在自然語言處理任務(wù)中,常見的數(shù)據(jù)增強(qiáng)方法有隨機(jī)刪除、打亂順序以及同義詞的替換等等。因此,本文對分詞后的結(jié)果進(jìn)行數(shù)據(jù)增強(qiáng),不僅可以提高數(shù)據(jù)的量,還可以在訓(xùn)練過程中抑制模型的過擬合,提高模型的泛化能力,使得訓(xùn)練出來的模型具有魯棒性。
分類問題最常見的評價(jià)指標(biāo)是精確率(Precision)、準(zhǔn)確率(Accuracy)、F1(F-Measure)以及召回率(Recall)。其中,準(zhǔn)確率描述的是所有分類樣本中,分類正確的樣本所占比重,精確率描述的是所有預(yù)測為正實(shí)例的樣本中,是正實(shí)例所占的比重,召回率描述的是所有正實(shí)例的樣本中,被分為正實(shí)例的樣本所占比重,F(xiàn)1值是精確率與召回率的加權(quán)平均,綜合度量了精確率與召回率的結(jié)果。精確率和召回率由混淆矩陣(confusion matrix)計(jì)算得出?;煜仃嚾绫?所示。
表3 混淆矩陣Table 3 Confusion matrix
精確率(precision)和召回率(recall)由下式給出:
參數(shù)的設(shè)定決定了深度學(xué)習(xí)模型訓(xùn)練結(jié)果的好壞。因此,本實(shí)驗(yàn)所設(shè)定的參數(shù)如表4所示。
表4 模型參數(shù)設(shè)置Table 4 Model parameters
神經(jīng)網(wǎng)絡(luò)在進(jìn)行梯度反向傳播更新參數(shù)的過程中,本文使用的優(yōu)化器是Adam,該優(yōu)化算法是隨機(jī)梯度下降算法的優(yōu)化版本,計(jì)算效率更高,收斂速度較快。因此,為了更好地發(fā)揮該優(yōu)化算法的效率,本文對學(xué)習(xí)率進(jìn)行調(diào)整,繪制了不同學(xué)習(xí)率下,模型在測試集上準(zhǔn)確率和F1值的曲線圖,如圖6所示。
圖6 不同學(xué)習(xí)率下在測試集中的準(zhǔn)確率與F1值曲線圖Fig.6 Accuracy and F1 in test set with different learning rates
由圖6可以看出,當(dāng)Adam優(yōu)化器對應(yīng)的學(xué)習(xí)率為0.1時(shí),模型在測試集上的準(zhǔn)確率最小,當(dāng)學(xué)習(xí)率為0.001時(shí),模型在測試集上的表現(xiàn)最好。因此,本文實(shí)驗(yàn)中,Adam優(yōu)化器的學(xué)習(xí)率設(shè)定為0.001。
模型的訓(xùn)練過程中,本實(shí)驗(yàn)加入了Dropout[20]方法。Dropout的取值也是一個(gè)重要的參數(shù),恰當(dāng)?shù)娜≈悼梢宰屇P透玫厥諗?,同時(shí)能夠在保證精度的前提下抑制模型過擬合。因此,本文設(shè)定Dropout的取值分別為[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9]并進(jìn)行模型的訓(xùn)練、測試以及驗(yàn)證,通過模型在測試集上的表現(xiàn)來選擇最佳的Dropout值。最終繪制了測試集上準(zhǔn)確率變化曲線如圖7所示。曲線圖中可以看到,當(dāng)Dropout的取值為0.4時(shí),模型在測試集上的表現(xiàn)最佳,當(dāng)Dropout的取值開始逐漸增大時(shí),模型在測試集上的表現(xiàn)開始逐漸下滑,因此,本文選擇Dropout取值為0.4進(jìn)行實(shí)驗(yàn)。
圖7 不同Dropout值下在測試集中的準(zhǔn)確率與F1值曲線圖Fig.7 Accuracy and F1 in test set with different Dropouts
詞向量維度也是一種重要的參數(shù),維度越大意味著模型能學(xué)習(xí)到越多的特征信息,同時(shí)模型產(chǎn)生過擬合的風(fēng)險(xiǎn)也越大。而詞向量維度越低,模型越容易產(chǎn)生欠擬合的風(fēng)險(xiǎn)。因此,選擇合適的詞向量維度在模型訓(xùn)練過程中起到了關(guān)鍵的作用。本文在25~300維詞向量下使用Relu激活函數(shù)分別進(jìn)行實(shí)驗(yàn)來探索最佳的詞向量維度,將最終的結(jié)果繪制成曲線圖,如圖8所示。
圖8 不同詞向量維度下各模型準(zhǔn)確率圖Fig.8 Accuracy of each model for different word vector dimensions
由該曲線圖可以看出,隨著詞向量維度的增加,準(zhǔn)確率和F1值基本線性增加,其中,本文模型在300維的時(shí)候,模型可以學(xué)習(xí)到更多的語義信息,準(zhǔn)確率和F1值達(dá)到最大。因此,本文選擇300維進(jìn)行實(shí)驗(yàn)。
為了驗(yàn)證模型的有效性,本文選擇多個(gè)單一模型與多個(gè)在相同數(shù)據(jù)集上效果較好的先進(jìn)模型進(jìn)行對比,其對比的模型包括BiLSTM、TextCNN、BiLSTM-Attention、BiLSTM-CNN、BGRU-CNN、DAC-RNN、C-LSTM[21]以及模型。共做了兩組實(shí)驗(yàn),其中一組激活函數(shù)為Relu,另外一組激活函數(shù)為Mish。其對比結(jié)果如表5和表6所示。
表6 加入Mish激活函數(shù)的深度學(xué)習(xí)模型實(shí)驗(yàn)結(jié)果對比Table 6 Comparison of experimental results of deep learning model with Mish activation function
由表中的數(shù)據(jù)結(jié)果可以看出,本文提出的方法較其他深度學(xué)習(xí)模型實(shí)驗(yàn)結(jié)果均有所提高。在表5中,本文模型較BiLSTM、TextCNN、Bi LSTM-CNN、C-LSTM、Bi LSTM-Attention、DAC-RNN和BGRU-CNN模型準(zhǔn)確率分別提高了2.8%、3.2%、2.1%、3.1%、2.2%、4.8%和2.3%、F1值分別提高了3.2%、3.7%、2.1%、2.3%、2.4%、5.1%和2.4%。對比以往模型BiLSTM、TextCNN、C-LSTM和BiLSTM-Attention,BiLSTM-CNN模型無論準(zhǔn)確率還是F1值均有所提高,BiLSTM-CNN模型可以捕獲到更多的文本語義信息,其得到的精度高于其他模型。DAC-RNN和BGRU-CNN模型在清華大學(xué)THUCTC網(wǎng)站數(shù)據(jù)集上與其他模型對比取得了較高的準(zhǔn)確率,但是在表5中,可以看出本文模型在測試集上準(zhǔn)確率為87.57%,比這兩個(gè)最新的模型準(zhǔn)確率高。由于BiLSTM模型可以學(xué)習(xí)到句子的前向與反向信息,本文實(shí)驗(yàn)使用的文本句子平均長度為32,因此,BiLSTM可以很好地學(xué)習(xí)到這些短文本信息并避免長期依賴問題,其訓(xùn)練的結(jié)果較TextCNN模型好。通過對比C-LSTM、BiLSTM與BiLSTM-Attention模型的準(zhǔn)確率可知,加入自注意力機(jī)制使得模型的準(zhǔn)確率得到了提升。因此,對比上述模型結(jié)果,本文通過使用殘差網(wǎng)絡(luò)與自注意力機(jī)制的方法,能充分發(fā)揮BiLSTM與CNN對文本特征信息的提取能力,模型結(jié)果均高于其他深度學(xué)習(xí)模型,證明了本文方法的有效性。
表5 加入Relu激活函數(shù)的深度學(xué)習(xí)模型實(shí)驗(yàn)結(jié)果對比Table 5 Comparison of experimental results of deep learning model with Relu activation function
表6為各個(gè)深度學(xué)習(xí)模型將Relu激活函數(shù)替換為Mish后的結(jié)果,為了更好地對比加入Mish和Relu激活函數(shù)的結(jié)果,繪制了模型在測試集上的對比曲線圖如圖9所示。
圖9 Relu與Mish激活函數(shù)在各模型下的準(zhǔn)確率Fig.9 Accuracy of Relu and Mish activation functions under each model
由該曲線圖看出,加入Mish激活函數(shù)后的結(jié)果均得到了提高。其中,本文模型較這些模型準(zhǔn)確率分別提高了4.6%、2.8%、2.1%、3.1%、1.2%、3.5%以及3.4%。進(jìn)一步證明了加入Mish激活函數(shù)后本文模型的可行性。
繼續(xù)對比本文模型BiLSTM-CNN-Self-Attention-Norm(BCSAN)在各個(gè)詞向量維度下準(zhǔn)確率的關(guān)系如圖10所示。
圖10 不同詞向量維度下模型的準(zhǔn)確率Fig.10 Accuracy of models under different word vector dimensions
隨著詞向量維度的增加,各個(gè)模型的精度成線性增加,其中,本文模型的準(zhǔn)確率在300維度時(shí)達(dá)到最大,均高于其他主流深度學(xué)習(xí)模型。
本文提出了一種基于深度學(xué)習(xí)方法的文本分類模型。將文本信息分詞之后進(jìn)行文本數(shù)據(jù)增強(qiáng),然后將文本信息輸入到BiLSTM模型中得到特征信息,接著輸入到TextCNN模型中,將卷積運(yùn)算提取的信息使用自注意力機(jī)制自動地學(xué)習(xí)相應(yīng)的權(quán)重信息,有效地把握句子中各個(gè)詞語的信息。隨后進(jìn)行池化運(yùn)算,進(jìn)一步降低特征信息的維度,提取對分類結(jié)果有較大影響的特征信息。為了加速模型的訓(xùn)練和保證文本信息的多樣性,對池化運(yùn)算后的特征信息進(jìn)行Layer Normalization處理,并讓模型學(xué)習(xí)殘差,保證模型沒有過擬合的前提下進(jìn)一步提高模型的訓(xùn)練精度。本文的方法為自然語言處理文本分類任務(wù)的研究提供了一定的幫助,在自然語言處理的發(fā)展中具有一定的參考價(jià)值。
本文提出的模型沒有分析模型復(fù)雜度與如何降低模型復(fù)雜度問題,這是進(jìn)一步研究的方向。另外,在進(jìn)一步的研究中,將會重點(diǎn)關(guān)注以數(shù)據(jù),模型以及任務(wù)為驅(qū)動點(diǎn)來更好地選擇模型的參數(shù)、提高模型學(xué)習(xí)的效率,節(jié)省時(shí)間成本。