何 力,鄭灶賢,項(xiàng)鳳濤,吳建宅,譚 林
(1.國防科技大學(xué)智能科學(xué)學(xué)院,長沙 410073;2.南方電網(wǎng)數(shù)字電網(wǎng)研究院有限公司,廣州 510555;3.湖南天河國云科技有限公司,長沙 410073)
文本分類技術(shù)經(jīng)歷了從專家系統(tǒng)到機(jī)器學(xué)習(xí)再到深度學(xué)習(xí)的發(fā)展過程。在20世紀(jì)80年代以前,基于規(guī)則系統(tǒng)的文本分類方法需要領(lǐng)域?qū)<叶x一系列分類規(guī)則,通過規(guī)則匹配判斷文本類別?;谝?guī)則的分類方法容易理解,但該方法依賴專家知識,系統(tǒng)構(gòu)建成本高且可移植性差。20世紀(jì)90年代,機(jī)器學(xué)習(xí)技術(shù)逐漸走向成熟,出現(xiàn)了許多經(jīng)典的文本分類算法,如決策樹[1]、樸素貝葉斯[2]、支持向量機(jī)[3]、最大熵[4]、最近鄰[5]等,這些方法部分克服了上述缺點(diǎn),一定程度上實(shí)現(xiàn)了分類器的自動(dòng)生成,被廣泛應(yīng)用于各個(gè)領(lǐng)域。然而,機(jī)器學(xué)習(xí)方法在構(gòu)建分類器之前通常需要繁雜的人工特征工程,這限制了其進(jìn)一步發(fā)展。
2012年之后,深度學(xué)習(xí)算法引起了研究者的廣泛關(guān)注。深度學(xué)習(xí)為機(jī)器學(xué)習(xí)建模提供了一種直接端到端的解決方案,可避免復(fù)雜的特征工程。GolVe[6]和word2vec[7]等詞向量模型的提出,使深度學(xué)習(xí)算法成功地應(yīng)用到文本處理領(lǐng)域,隨后出現(xiàn)了各種基于深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)的文本分類方法。這些方法主要采用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)和注意力機(jī)制等深度學(xué)習(xí)技術(shù),并且取得了比傳統(tǒng)方法更為出色的性能。近年來,圖卷積網(wǎng)絡(luò)(Graph Convolutional Network,GCN)、區(qū)域嵌入和元學(xué)習(xí)等一些新的深度學(xué)習(xí)方法也被應(yīng)用于文本分類領(lǐng)域。
本文對基于深度神經(jīng)網(wǎng)絡(luò)的文本分類技術(shù)進(jìn)行介紹和分析,闡述卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)和注意力機(jī)制等方法在文本分類中的應(yīng)用和發(fā)展情況,總結(jié)各類方法的特點(diǎn)及區(qū)別,并對不同方法的性能表現(xiàn)和適用場景進(jìn)行比較,討論在應(yīng)用深度學(xué)習(xí)方法處理文本分類任務(wù)時(shí)應(yīng)當(dāng)注意的問題。在此基礎(chǔ)上,指出針對該技術(shù)未來的研究方向。
傳統(tǒng)機(jī)器學(xué)習(xí)方法采用詞袋(Bag-of-Words,BoW)模型表示文本,導(dǎo)致文本特征數(shù)據(jù)出現(xiàn)高維、稀疏問題,影響文本分析的效率和性能。隨著深度學(xué)習(xí)技術(shù)的發(fā)展,出現(xiàn)了更為有效的文本表示方法。文獻(xiàn)[8]提出的神經(jīng)網(wǎng)絡(luò)語言模型(Neural Network Language Model,NNLM)將單詞映射到低維稠密空間,采用詞向量度量單詞之間的語義相關(guān)性。文獻(xiàn)[9]提出的word2vec模型實(shí)現(xiàn)了詞向量的高效計(jì)算,被廣泛應(yīng)用于自然語言處理領(lǐng)域。
基于深度學(xué)習(xí)的文本分類方法以詞向量對詞語進(jìn)行語義表示,然后通過語義組合的方式獲得句子和文檔的語義表示[10]。神經(jīng)網(wǎng)絡(luò)語義組合方法主要包括卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)和注意力機(jī)制等,這些方法采用了不同的組合方式將詞級別的語義組合到句子和文檔級別的語義。本節(jié)闡述卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)和注意力機(jī)制在深度學(xué)習(xí)文本分類中的應(yīng)用情況,介紹相應(yīng)分類方法,同時(shí)探討其他類型的深度學(xué)習(xí)分類模型。
卷積神經(jīng)網(wǎng)絡(luò)最初是為圖像處理而構(gòu)建的,其結(jié)構(gòu)類似于視覺皮層,之后被有效用于文本分類。卷積神經(jīng)網(wǎng)絡(luò)為文本分類提供了一種直接端到端的解決方案,相比傳統(tǒng)機(jī)器學(xué)習(xí)方法,其不需要開發(fā)者準(zhǔn)備先驗(yàn)信息,并且能夠避免復(fù)雜的人工特征工程。文獻(xiàn)[11-13]將卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于文本分類,分別使用了兩層卷積網(wǎng)絡(luò)、基于單詞向量的單層卷積網(wǎng)絡(luò)和基于字符向量的多層卷積網(wǎng)絡(luò)。
文獻(xiàn)[11]提出基于兩層卷積網(wǎng)絡(luò)結(jié)構(gòu)的分類模型DCNN。該模型采用一維卷積,不改變輸入序列寬度,其中池化層采用動(dòng)態(tài)池化策略返回k組最大值。通過一維卷積和動(dòng)態(tài)池化,DCNN可以實(shí)現(xiàn)連續(xù)多層卷積。該研究驗(yàn)證了在情感分類和問題分類等任務(wù)上,神經(jīng)網(wǎng)絡(luò)方法性能優(yōu)于樸素貝葉斯、支持向量機(jī)等傳統(tǒng)分類方法。
文獻(xiàn)[12]提出單卷積層結(jié)構(gòu)的句子分類模型TextCNN。該模型對文本進(jìn)行整行的卷積計(jì)算,從而使每次卷積的行數(shù)恰好對應(yīng)n-gram語言模型中的詞語個(gè)數(shù)n。相比在輸入向量的單一維度或部分維度上進(jìn)行卷積計(jì)算(例如DCNN),整行卷積保持了每個(gè)單詞的語義完整性,更具可理解性。因此,在自然語言處理中,單層CNN結(jié)構(gòu)使用較多,此處單層包含一對卷積層和池化層。與傳統(tǒng)機(jī)器學(xué)習(xí)方法以及RNN、DCNN等深度學(xué)習(xí)方法相比,TextCNN在一系列分類任務(wù)上取得了優(yōu)異的結(jié)果,說明淺層神經(jīng)網(wǎng)絡(luò)能夠在文本分類任務(wù)上實(shí)現(xiàn)準(zhǔn)確分類。
文獻(xiàn)[13]提出字符級的卷積神經(jīng)網(wǎng)絡(luò)分類模型char-CNN。該模型是一個(gè)采用字符級的獨(dú)熱(one-hot)向量輸入的6層卷積網(wǎng)絡(luò)模型,其以詞向量表示字符,以字符向量取代單詞向量作為模型輸入,將多卷積層網(wǎng)絡(luò)連接到一個(gè)雙向循環(huán)層。char-CNN在短文本分類上取得了與單詞向量方法相近的性能,但在新聞和百科分類上,單詞向量方法性能更好。
將卷積神經(jīng)網(wǎng)絡(luò)直接應(yīng)用到文本分類可取得較好的效果,但相關(guān)研究并未止步于此。針對深度分類模型復(fù)雜、深度網(wǎng)絡(luò)梯度消失和短文本內(nèi)容簡短等問題,文獻(xiàn)[14-16]分別提出了相應(yīng)的解決方案。
文獻(xiàn)[14]提出了fastText模型。該模型將輸入詞序列投射到詞嵌入空間,然后通過一個(gè)平均池化層計(jì)算文檔向量的值,再連接到一個(gè)全連接層得到分類結(jié)果。相比一般的卷積網(wǎng)絡(luò)結(jié)構(gòu),fastText避免了卷積操作,可以看作是一個(gè)特殊的卷積網(wǎng)絡(luò)模型。該模型還采用n-gram擴(kuò)充特征詞,以增加文本的時(shí)序特征。fastText模型結(jié)構(gòu)簡單,但在多數(shù)分類任務(wù)上取得了與VDCNN[17]和char-CNN等深度模型相當(dāng)?shù)姆诸愋阅埽M(jìn)一步說明淺層學(xué)習(xí)在文本分類問題上能夠獲得深度模型的學(xué)習(xí)效果。
文獻(xiàn)[15]提出深度卷積網(wǎng)絡(luò)分類模型DPCNN。該模型參考深度殘差網(wǎng)絡(luò)(ResNet)[18],采用跳層連接技術(shù)以緩解在增加模型深度時(shí)出現(xiàn)的梯度消失問題,其通過固定特征圖的數(shù)量,采用步長為2的最大池化操作,使每個(gè)卷積層的數(shù)據(jù)規(guī)模和相應(yīng)的計(jì)算時(shí)間減半,從而形成一個(gè)金字塔。實(shí)驗(yàn)結(jié)果表明,在用戶評論和新聞數(shù)據(jù)分類任務(wù)上,DPCNN的準(zhǔn)確率超過了char-CNN和VDCNN等分類方法。
由于短文本內(nèi)容簡短,因此會導(dǎo)致分類模型缺少足夠的特征進(jìn)行類別判斷。對此,文獻(xiàn)[16]提出結(jié)合知識的CNN短文本分類模型KPCNN。該模型將知識庫豐富的短文本信息與每篇短文和知識庫中的相關(guān)概念進(jìn)行結(jié)合,使預(yù)訓(xùn)練的詞和概念的嵌入相互連接,形成對應(yīng)的詞-概念嵌入作為CNN的輸入。該模型同時(shí)引入了字符級語義特征,將字符嵌入輸入一個(gè)單獨(dú)的CNN,通過兩個(gè)CNN子網(wǎng)絡(luò)分別提取詞-概念和字符的信息,并將兩個(gè)子網(wǎng)絡(luò)的輸出相互連接,送入輸出層得到分類結(jié)果。實(shí)驗(yàn)結(jié)果表明,結(jié)合知識庫的概念信息和字符信息能夠有效提升CNN的分類精度。
增加卷積神經(jīng)網(wǎng)絡(luò)模型的深度能否帶來文本分類性能的提升,這是一個(gè)重要的問題。對此,文獻(xiàn)[19]分別將基于字符輸入的CNN模型和基于單詞輸入的CNN模型應(yīng)用于5個(gè)標(biāo)準(zhǔn)文本分類和情感分析任務(wù)中進(jìn)行實(shí)驗(yàn)分析,結(jié)果表明:當(dāng)以字符序列作為文本輸入時(shí),深度模型能夠提供比淺層模型更好的性能,但是提升效果不顯著;當(dāng)以單詞序列作為文本輸入時(shí),簡單的淺層網(wǎng)絡(luò)TextCNN的性能可以達(dá)到甚至優(yōu)于DenseNet[20]等深層模型。此外,單詞級淺層網(wǎng)絡(luò)性能要優(yōu)于深層字符級網(wǎng)絡(luò),這也證明文本分類中單詞觀察比字符特征提取更有效。
卷積神經(jīng)網(wǎng)絡(luò)在文本分類任務(wù)中得到了成功應(yīng)用,特別是淺層卷積網(wǎng)絡(luò)模型,更適合處理文本分類任務(wù)。然而,卷積神經(jīng)網(wǎng)絡(luò)需要開發(fā)者指定精確的模型結(jié)構(gòu)并設(shè)置相應(yīng)的超參數(shù),這要求開發(fā)者必須以自己的經(jīng)驗(yàn)確定哪些參數(shù)應(yīng)花費(fèi)精力調(diào)優(yōu),哪些參數(shù)設(shè)置對性能沒有影響,并且找出獨(dú)立于特定數(shù)據(jù)集的最佳設(shè)置。下文以TextCNN為例,分析使用卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練文本分類模型時(shí)應(yīng)當(dāng)注意的問題。根據(jù)上文的實(shí)驗(yàn)結(jié)論和文獻(xiàn)[21]對TextCNN的敏感度分析,對影響卷積神經(jīng)網(wǎng)絡(luò)性能的各項(xiàng)參數(shù)進(jìn)行總結(jié),如表1所示。
表1 卷積神經(jīng)網(wǎng)絡(luò)分類模型參數(shù)說明Table 1 Parameters description of classification model based on convolutional neural network
輸入文本的特征表示在文本分類中非常重要,傳統(tǒng)機(jī)器學(xué)習(xí)一般采用one-hot模型表示文本特征。但因?yàn)榫渥拥男畔⒑喍?,不能向高維編碼提供足夠的信息,所以采用one-hot模型表示的CNN不適合文本分類,而詞嵌入將詞映射到稠密特征空間,更適合神經(jīng)網(wǎng)絡(luò)計(jì)算。詞向量可以采用隨機(jī)值初始化,也可以采用預(yù)先訓(xùn)練好的詞向量進(jìn)行初始化,常用的方法有word2vec和GolVe。在實(shí)際應(yīng)用中,采用預(yù)先訓(xùn)練好的詞向量初始化,可以加快訓(xùn)練迭代過程。對于詞嵌入維度大小,一般可以在50~200之間尋找最佳取值。對于文本詞典大小,并不是越大越好,詞典過大反而可能降低文本分類的準(zhǔn)確率。
CNN超參數(shù)的設(shè)定非常重要,其中包括卷積窗口大小的設(shè)置。由于文本卷積一般由整行卷積計(jì)算構(gòu)成,因此只需要確定每次卷積的行數(shù)即可,這個(gè)行數(shù)可以對應(yīng)n-gram模型中n的取值,例如按照2、3、4這樣來取值。不同的數(shù)據(jù)集有著不同的最優(yōu)窗口大小,一般文本長度越長,窗口應(yīng)該越大。針對目標(biāo)數(shù)據(jù)集,首先應(yīng)找到單一卷積窗口的最佳值,然后在最佳值附近選取多個(gè)不同窗口大小的卷積核,再進(jìn)行不同卷積核的組合,找到最優(yōu)組合。特征圖的數(shù)量設(shè)置也很重要,合適的特征圖數(shù)量能夠提高分類性能,但找到一個(gè)合適值非常耗時(shí),增大特征圖數(shù)量會增加訓(xùn)練時(shí)間。為了防止過擬合,模型通常在全連接層加入失活率,從而隨機(jī)地舍棄一部分連接。
卷積神經(jīng)網(wǎng)絡(luò)在很多任務(wù)中有不錯(cuò)的表現(xiàn),但其需要固定卷積窗口的大小,導(dǎo)致無法建模更長的序列信息,而循環(huán)神經(jīng)網(wǎng)絡(luò)恰好可以避免這一問題。在文本分類任務(wù)中,實(shí)際使用較多的長短期記憶(Long Short Term Memory,LSTM)網(wǎng)絡(luò),從某種意義上其原理可以理解為捕獲變長的n元語言信息。RNN能夠處理變長文本,而CNN一般則要按照固定長度對文本進(jìn)行截取,相比RNN,CNN超參調(diào)節(jié)過程也很繁瑣。因此,RNN是自然語言處理領(lǐng)域的常用模型。本節(jié)首先介紹LSTM和門控循環(huán)單元(Gated Recurrent Unit,GRU)的應(yīng)用,然后介紹RNN在文本分類中應(yīng)用的一些新方法,最后分析比較CNN和RNN的文本分類性能。
LSTM網(wǎng)絡(luò)由HOCHREITER等人于1997提出[22],其是一種特殊的RNN,能夠?qū)W習(xí)長期依賴關(guān)系。此后,研究者對其進(jìn)行了改進(jìn)和推廣,在處理很多問題時(shí)都取得了成功。GRAVES于2012年給出LSTM的一個(gè)具體實(shí)現(xiàn)方案[23],本文對該文提出的模型進(jìn)行了分類測試,發(fā)現(xiàn)其分類性能不如TextCNN。LSTM的另一個(gè)變體是GRU,由CHO于2014年提出[24]。GRU將輸入門和遺忘門合并為一個(gè)單一的更新門,同時(shí)合并了細(xì)胞狀態(tài)和隱含狀態(tài),因而其結(jié)構(gòu)較標(biāo)準(zhǔn)LSTM模型更簡單。在一些分類任務(wù)中,GRU性能超過了LSTM。
對于自然語言處理任務(wù),如客戶評論情感分析,循環(huán)神經(jīng)網(wǎng)絡(luò)模型要解析整條評論內(nèi)容后方能作出結(jié)論,然而在實(shí)踐中,對于容易分類的評論不需要讀取整個(gè)輸入。對此,文獻(xiàn)[25]提出一種快速閱讀分類方法,其受人類閱讀技巧的啟發(fā),通過一個(gè)智能循環(huán)代理評估當(dāng)前片段的重要性,以決定是進(jìn)行預(yù)測還是跳過某些文本,或者重讀部分語句。該方法的具體模型由一個(gè)LSTM和一個(gè)策略模塊構(gòu)成,其中策略模塊控制模型的閱讀和決策。在同一精度水平下,該方法能夠有效加速模型計(jì)算。文獻(xiàn)[26]提出基于信息共享機(jī)制的循環(huán)神經(jīng)網(wǎng)絡(luò)模型Multi-RNN,其采用多層LSTM結(jié)構(gòu),利用多任務(wù)數(shù)據(jù)訓(xùn)練模型,能夠通過多個(gè)任務(wù)的訓(xùn)練數(shù)據(jù)提高單一任務(wù)的分類性能。
相比CNN,RNN能夠方便地實(shí)現(xiàn)多層疊加,構(gòu)成多層神經(jīng)網(wǎng)絡(luò),例如多層LSTM或者多層GRU,因此,在序列標(biāo)注、命名實(shí)體識別、seq2seq模型等很多場景都有應(yīng)用。對于分類任務(wù),文獻(xiàn)[26]對CNN和RNN進(jìn)行了測試,其中RNN采用文獻(xiàn)[23]提出的LSTM實(shí)現(xiàn),CNN分別采用TextCNN[12]和DCNN[11]實(shí)現(xiàn)。測試結(jié)果表明,在電影評論情感分類任務(wù)上,RNN的性能不如TextCNN、DCNN等卷積網(wǎng)絡(luò)方法,說明對于文本分類任務(wù),卷積網(wǎng)絡(luò)方法更適合構(gòu)建文本的語義表示。此外,對于基于詞向量的循環(huán)神經(jīng)網(wǎng)絡(luò)模型,在網(wǎng)絡(luò)深度超過兩層后,分類性能提升會很小,但深層模型能給字符型輸入的網(wǎng)絡(luò)(如char-CNN、char-RNN等)帶來性能提升。
卷積操作檢測特征具有平移不變性,但序列數(shù)據(jù)中的長期依賴關(guān)系不能由卷積神經(jīng)網(wǎng)絡(luò)直接獲得,而是需要組合多個(gè)卷積層計(jì)算得到。雖然循環(huán)神經(jīng)網(wǎng)絡(luò)能夠從時(shí)序數(shù)據(jù)中學(xué)習(xí)長期依賴關(guān)系,但是在處理長文本時(shí),可能出現(xiàn)模型訓(xùn)練不穩(wěn)定的情況,在一些文本分類任務(wù)上性能不如CNN[27]。針對這兩種網(wǎng)絡(luò)在文本處理中的不足,一些研究嘗試結(jié)合CNN和RNN,以期獲得性能更好的神經(jīng)網(wǎng)絡(luò)模型。根據(jù)卷積層和循環(huán)層在網(wǎng)絡(luò)架構(gòu)中的先后關(guān)系,可以將這些模型分為兩類,即先循環(huán)層后卷積層的RCNN和先卷積層后循環(huán)層的CRNN。
在RCNN方面,文獻(xiàn)[28]針對卷積神經(jīng)網(wǎng)絡(luò)需要固定卷積核大小且可能導(dǎo)致上下文語義缺失的問題,提出一個(gè)循環(huán)卷積神經(jīng)網(wǎng)絡(luò)模型。該模型由1層LSTM和1層CNN組成,首先采用雙向循環(huán)網(wǎng)絡(luò)學(xué)習(xí)文本表示,利用循環(huán)神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)中心詞左側(cè)和右側(cè)的詞表示,然后將這兩個(gè)詞表示連接起來作為中心詞的表示,再輸入到卷積層。該模型同時(shí)利用了CNN和RNN的優(yōu)點(diǎn),即利用RNN學(xué)習(xí)詞序信息,利用CNN獲取文本主要成分。
在CRNN方面,文獻(xiàn)[29]提出字符型輸入模型char-CRNN。該模型同樣是將卷積神經(jīng)網(wǎng)絡(luò)與雙向LSTM相結(jié)合,但順序不同,其首先使用多層卷積網(wǎng)絡(luò)處理輸入文本的字符序列,然后通過池化函數(shù)縮短序列的長度,最后將生成的特征提供給一個(gè)雙向LSTM層進(jìn)行處理。char-CRNN采用與圖像二維卷積相同的計(jì)算方式,可進(jìn)行特征圖的組合卷積,實(shí)現(xiàn)字符序列的連續(xù)多層卷積。
因?yàn)榫矸e層和池化層的局部性,現(xiàn)有的多數(shù)深度模型需要多層卷積才能捕獲更高層次的平移不變性特征。在此過程中,池化層往往只捕獲句子中最重要的特征,導(dǎo)致局部細(xì)節(jié)信息丟失。對此,文獻(xiàn)[30]提出一個(gè)CRNN模型,以RNN代替CNN模型中的池化層。該模型首先使用一個(gè)卷積層來提取文檔特征,然后以LSTM層代替池化層捕獲長期依賴關(guān)系,從而通過去除池化層有效減少參數(shù)數(shù)量。
在多標(biāo)簽文本分類方面,針對現(xiàn)有方法在局部語義信息提取和標(biāo)簽相關(guān)性建模方面存在的不足,文獻(xiàn)[31]提出一個(gè)組合CNN和LSTM的多標(biāo)簽文本分類模型。該模型利用以詞向量為輸入的CNN提取文本特征,將CNN的輸出向量作為LSTM的輸入,通過LSTM對標(biāo)簽之間的相關(guān)關(guān)系進(jìn)行建模,用于預(yù)測輸入文檔的標(biāo)簽序列。
傳統(tǒng)的編碼器-解碼器框架在編碼時(shí),可能會對不完全相關(guān)的信息進(jìn)行編碼。當(dāng)輸入很長或者輸入信息豐富時(shí),編碼選擇會變得更加困難。在文本摘要和機(jī)器翻譯等任務(wù)中,輸入文本和輸出文本之間存在一定的對齊關(guān)系,這意味著每個(gè)生成步驟都與輸入文本的特定部分高度相關(guān),這種直覺激發(fā)了注意力機(jī)制。注意力機(jī)制試圖通過允許編碼器回顧輸入序列來緩解上述問題,即編碼器會基于一個(gè)上下文向量來調(diào)節(jié)輸出[32]。
深度學(xué)習(xí)方法在處理文本數(shù)據(jù)時(shí),通常采用求平均或者求和等方式將詞匯合成為語句及文檔的語義表示。實(shí)際上,文檔的不同部分對文本信息的影響是不同的,因此,通過引入注意力機(jī)制,深度學(xué)習(xí)在逐層合成文本語義過程中,就會像人類閱讀文章一樣,對文本中不同句子以及句子中的不同詞匯給予不同的關(guān)注度,從而實(shí)現(xiàn)更合理的自然語言建模。
文獻(xiàn)[33]模型將注意力機(jī)制應(yīng)用于機(jī)器翻譯,提高了翻譯性能。該模型利用多層感知器,根據(jù)解碼器的最后一個(gè)隱藏狀態(tài)確定注意力信號并將其作用到輸入隱藏狀態(tài)序列。注意力機(jī)制使得模型在預(yù)測一個(gè)目標(biāo)單詞時(shí)能夠自動(dòng)選擇原句子的相關(guān)部分作為解碼器的輸入。此后,注意力機(jī)制也被應(yīng)用到圖像描述生成[34]、機(jī)器閱讀理解[35]等其他自然語言處理任務(wù)中。
在文本分類任務(wù)上,文獻(xiàn)[36]在注意力機(jī)制的基礎(chǔ)上,考慮到文本是層次式結(jié)構(gòu),可以用詞向量表示句子,再由句子向量表示文檔,即采用“詞-句子-文章”的層次化結(jié)構(gòu)來表示一篇文本,提出層次化注意力機(jī)制模型HAN。該模型包含兩個(gè)層次的注意力機(jī)制,分別存在于詞層次和句子層次,具有對文本中重要性不同的句子和詞給予不同“注意力”的能力,其在提高分類性能的同時(shí),還可以選擇出含有豐富信息的詞語和句子。
現(xiàn)有方法大多采用粗粒度注意力機(jī)制,當(dāng)目標(biāo)單詞和上下文很長時(shí)會引入信息損失。文獻(xiàn)[37]提出一種細(xì)粒度注意力機(jī)制來捕獲單詞級別的目標(biāo)和上下文之間的交互,從而減少粗粒度注意力機(jī)制造成的損失,在此基礎(chǔ)上,結(jié)合細(xì)粒度和粗粒度注意力形成多粒度注意力網(wǎng)絡(luò)(Multi-Grained Attention Network,MGAN)。在情感分類測試中,MGAN性能優(yōu)于基本循環(huán)神經(jīng)網(wǎng)絡(luò)和多種注意力機(jī)制方法,說明細(xì)粒度的交互可以為分類帶來額外的有用信息。
在文本分析過程中,注意力機(jī)制能夠根據(jù)目標(biāo)對象重點(diǎn)關(guān)注與之密切關(guān)聯(lián)的詞語和句子,而面向目標(biāo)的情感分析任務(wù)主要是分析句子中所描述對象的情感極性,因此,越來越多的研究將注意力機(jī)制應(yīng)用到情感分析任務(wù)中。文獻(xiàn)[38-39]使用注意力機(jī)制增強(qiáng)LSTM,從而為分類提供額外的支持,實(shí)現(xiàn)了基于目標(biāo)的情感分析,說明利用注意力機(jī)制的RNN能夠較好地解決這個(gè)問題。文獻(xiàn)[40]分析注意力機(jī)制和CNN在完成這一任務(wù)時(shí)存在的不足,提出一種利用CNN進(jìn)行目標(biāo)情感分析的模型,并且設(shè)計(jì)針對目標(biāo)的變換單元,使目標(biāo)信息能夠被更好地表示。在該模型中,變換單元位于RNN層和CNN層之間,一方面將帶有上下文信息的詞特征結(jié)合目標(biāo)信息以實(shí)現(xiàn)目標(biāo)調(diào)整機(jī)制,另一方面保留上下文信息以實(shí)現(xiàn)上下文保存機(jī)制。文獻(xiàn)[41]提出一種基于記憶網(wǎng)絡(luò)的多跳注意力方法,將注意力機(jī)制應(yīng)用于記憶網(wǎng)絡(luò)。該方法采用多注意力計(jì)算層改進(jìn)記憶網(wǎng)絡(luò)中的信息區(qū)域查找過程,有效提高了情感分類性能。
近年來,深度學(xué)習(xí)在圖像領(lǐng)域的應(yīng)用進(jìn)展領(lǐng)先于自然語言處理領(lǐng)域,當(dāng)前文本分類的研究借鑒了深度學(xué)習(xí)在圖像處理領(lǐng)域應(yīng)用的研究成果,例如圖卷積網(wǎng)絡(luò)、區(qū)域嵌入、元學(xué)習(xí)等。此外,一些研究人員在利用深度學(xué)習(xí)解決文本分類問題時(shí),還考慮使用強(qiáng)化學(xué)習(xí)和集成學(xué)習(xí)等方法。
1.5.1 圖卷積網(wǎng)絡(luò)
CNN和RNN模型考慮文本的順序信息和局部信息,能夠很好地捕獲連續(xù)詞序列中的語義信息,但忽略了全局的詞共現(xiàn),而詞共現(xiàn)中攜帶了不連續(xù)及長距離的語義信息?;趫D網(wǎng)絡(luò)的神經(jīng)網(wǎng)絡(luò)模型能夠更靈活地表征節(jié)點(diǎn)與節(jié)點(diǎn)之間的關(guān)系。因此,文獻(xiàn)[42]將圖卷積網(wǎng)絡(luò)應(yīng)用于文本分類,提出文本圖卷積網(wǎng)絡(luò)模型Text GCN。該模型采用兩層圖網(wǎng)絡(luò),構(gòu)建了單詞和文檔兩種節(jié)點(diǎn),相應(yīng)地有兩種類型邊,邊的權(quán)重以TF-IDF和PMI來表征,并利用softmax分類。Text GCN能夠獲取全局詞共現(xiàn)信息并使用有限標(biāo)注的文檔來執(zhí)行所需任務(wù),在多個(gè)基準(zhǔn)數(shù)據(jù)集上表現(xiàn)出色。
1.5.2 區(qū)域嵌入
短語的識別和表示在文本處理中非常有用,傳統(tǒng)的n-gram模型可以看作是該方法的近似,但會受到數(shù)據(jù)稀疏性的影響。針對多數(shù)CNN、RNN等深度學(xué)習(xí)模型忽略建模上下文信息重要性的問題,文獻(xiàn)[43]提出區(qū)域嵌入方法LRE,其原理是一個(gè)詞的語義表示由自身含義及周圍詞的含義共同確定,分別對應(yīng)詞嵌入和本地上下文單元,然后使用詞和相應(yīng)的本地上下文單元生成區(qū)域嵌入。該方法在完成文本分類任務(wù)的同時(shí),還能捕捉到文本中顯著的短語表達(dá)。文獻(xiàn)[44]指出LRE僅能捕獲固定長度區(qū)域內(nèi)的上下文信息,并且生成本地上下文單元需要消耗大量的內(nèi)存空間,進(jìn)而提出一種新的區(qū)域嵌入方法。該方法采用自適應(yīng)上下文單元替換原方法中的本地上下文單元,通過為每個(gè)區(qū)域生成一個(gè)上下文單元,使每個(gè)單詞與相應(yīng)的上下文單元交互,然后產(chǎn)生區(qū)域嵌入。與原有的區(qū)域嵌入模型LRE相比,新模型的參數(shù)更少,能夠利用一個(gè)小參數(shù)空間取得更優(yōu)的分類性能,同時(shí)避免詞語歧義。
1.5.3 元學(xué)習(xí)
元學(xué)習(xí)在計(jì)算機(jī)視覺領(lǐng)域表現(xiàn)出優(yōu)越的性能,因?yàn)樵谟?jì)算機(jī)視覺中,低級模式可以在學(xué)習(xí)任務(wù)之間轉(zhuǎn)移。然而將元學(xué)習(xí)直接應(yīng)用于文本面臨挑戰(zhàn),因?yàn)閱卧~與任務(wù)具有相關(guān)性,在一類任務(wù)中起重要作用的單詞,可能在另一類任務(wù)中就不重要了。文獻(xiàn)[45]將動(dòng)態(tài)路由算法和典型的元學(xué)習(xí)框架相結(jié)合,模擬人類的歸納能力,提出一個(gè)針對小樣本文本分類的神經(jīng)網(wǎng)絡(luò)模型。該模型結(jié)合分布簽名來學(xué)習(xí)單詞編碼,通過元學(xué)習(xí)框架將這些簽名映射到注意力分?jǐn)?shù),然后計(jì)算單詞的詞匯表示。在小樣本分類和關(guān)系分類上,該模型性能優(yōu)于在詞匯知識上學(xué)習(xí)的原型網(wǎng)絡(luò)方法[46]。
1.5.4 強(qiáng)化學(xué)習(xí)
文本分類在很大程度上依賴于表示學(xué)習(xí),文本分類的表示模型主要包括詞袋模型、序列表示模型、基于注意力的模型和結(jié)構(gòu)化表示模型。結(jié)構(gòu)化表示模型能夠抽取句子結(jié)構(gòu),但需要預(yù)先指定解析樹,而在實(shí)際中事先往往不知道具體的句子表示結(jié)構(gòu)。對此,文獻(xiàn)[47]提出一種無需明確結(jié)構(gòu)注釋即可識別任務(wù)相關(guān)句子結(jié)構(gòu)的強(qiáng)化學(xué)習(xí)方法。該方法使用一個(gè)結(jié)構(gòu)化表示模型學(xué)習(xí)文本表示,包括信息提取LSTM和分層結(jié)構(gòu)LSTM兩部分。其中:信息提取LSTM能夠刪除不相關(guān)的單詞并提取一個(gè)句子中與任務(wù)相關(guān)的單詞;分層結(jié)構(gòu)LSTM能夠發(fā)現(xiàn)與任務(wù)相關(guān)的結(jié)構(gòu)并構(gòu)建結(jié)構(gòu)化句子表示。該表征方法通過識別重要單詞或與任務(wù)相關(guān)的結(jié)構(gòu)來學(xué)習(xí)文本表示,從而獲得有競爭力的分類性能,為文本分類的表示學(xué)習(xí)提供了一個(gè)新思路。
1.5.5 集成深度學(xué)習(xí)
文獻(xiàn)[48]提出一個(gè)隨機(jī)多模型深度學(xué)習(xí)方法,其使用DNN、CNN和RNN 3種深度學(xué)習(xí)架構(gòu),隨機(jī)生成各個(gè)模型的隱藏層個(gè)數(shù)和神經(jīng)元節(jié)點(diǎn)數(shù),然后由所有這些隨機(jī)深度學(xué)習(xí)模型進(jìn)行多數(shù)表決得出預(yù)測結(jié)果。該方法通過融合多種深度學(xué)習(xí)模型提高模型魯棒性和準(zhǔn)確性,能夠處理包括文本、視頻、圖像在內(nèi)的多種類型的輸入。相比采用單一深度學(xué)習(xí)模型的方法,集成深度學(xué)習(xí)采用并行學(xué)習(xí)體系結(jié)構(gòu)構(gòu)建不同的深度神經(jīng)網(wǎng)絡(luò)分類模型,然后通過集成學(xué)習(xí)方法組合各個(gè)DNN、RNN和CNN模型,最后形成統(tǒng)一的分類框架,從而獲得更高的分類精度,并可用于多種數(shù)據(jù)類型。在實(shí)際應(yīng)用中,往往不是采用單一的深度模型,而是采用模型融合的方法建立多種深度模型,以此獲得更好的性能表現(xiàn)。
下文通過分析比較現(xiàn)有的深度學(xué)習(xí)分類方法,為進(jìn)一步開展深度學(xué)習(xí)在文本分類中的應(yīng)用提供借鑒。首先,總結(jié)多種深度學(xué)習(xí)方法在標(biāo)準(zhǔn)數(shù)據(jù)集上的分類性能。為了便于對各個(gè)方法進(jìn)行比較,采用文獻(xiàn)[13]建立的公開數(shù)據(jù)集,如表2所示,其中:平均長度指每篇文檔平均包含的單詞個(gè)數(shù);AG是一個(gè)新聞?wù)Z料集,包括世界、體育、商業(yè)和科技4個(gè)類別;Sogou是搜狗新聞數(shù)據(jù)集,筆者結(jié)合拼音包和分詞工具將中文文本轉(zhuǎn)換為拼音序列,這樣英文模型就可以直接應(yīng)用到該數(shù)據(jù)集;Dbpedia是從維基百科中抽取的數(shù)據(jù),包含14個(gè)類別;Yahoo!Answers是從雅虎問答系統(tǒng)中抽取的問題答案數(shù)據(jù)集,包含10個(gè)主題類別;Yelp是Yelp數(shù)據(jù)挑戰(zhàn)賽的評論數(shù)據(jù)集;Amazon是亞馬遜用戶的產(chǎn)品評價(jià)數(shù)據(jù),用Ama表示;.P表示極性二分類(正/負(fù));.F表示星級評價(jià)分類。數(shù)據(jù)細(xì)節(jié)和數(shù)據(jù)預(yù)處理過程此處不再詳述。
表2 數(shù)據(jù)集信息Table 2 Information of datasets
表3按照時(shí)間順序列出了各個(gè)方法的分類準(zhǔn)確率,由于TextCNN在原文采用了不同的實(shí)驗(yàn)數(shù)據(jù),因此此處引用文獻(xiàn)[19]對該模型的測試結(jié)果。
1)邏輯回歸。BoW、BoW TFIDF、n-gram以及n-gram IFIDF方法均使用邏輯回歸進(jìn)行分本分類,區(qū)別在于所用的特征計(jì)算方法不同。BoW和BoW TFIDF選擇出現(xiàn)最頻繁的50 000個(gè)單詞作為特征,分別采用詞頻和詞頻逆文檔頻率計(jì)算特征值。n-gram選擇出現(xiàn)最頻繁的500 000個(gè)n元特征序列作為特征,特征值計(jì)算方法與BoW相同。
2)支持向量機(jī)(SVM)。SVM+Unigram同BoW一樣使用詞袋模型表示文本,然后用SVM訓(xùn)練分類器。SVM+Bigram采用二元語言模型表示文檔。SVM+AverageSG采用word2vec詞嵌入表示單詞,然后用所有單詞的詞向量平均值表示文檔,最后用支持向量機(jī)分類。
3)神經(jīng)網(wǎng)絡(luò)方法。表3中的神經(jīng)網(wǎng)絡(luò)方法在上節(jié)均有介紹,包括深度模型和淺層模型,分別記為Y和N。
對典型深度學(xué)習(xí)文本分類方法的特點(diǎn)和適用場景等進(jìn)行分析,如表4所示。
表3 分類準(zhǔn)確率比較Table 3 Comparison of classification accuracies %
表4 典型深度學(xué)習(xí)文本分類方法比較Table 4 Comparison of typical text classification methods based on deep learning
由表3和表4可以看出:
1)在傳統(tǒng)機(jī)器學(xué)習(xí)方面:對于大多數(shù)文本分類任務(wù),神經(jīng)網(wǎng)絡(luò)方法性能優(yōu)于傳統(tǒng)的機(jī)器學(xué)習(xí)方法,例如在情感分類和問題分類任務(wù)上,表3中的神經(jīng)網(wǎng)絡(luò)方法性能基本都超過了邏輯回歸和支持向量機(jī)這兩個(gè)經(jīng)典的分類模型。
2)在淺層模型方面:單卷積層的TextCNN采用預(yù)先訓(xùn)練好的word2vec詞向量初始化,相比隨機(jī)初始化可以提高CNN方法的準(zhǔn)確率;FastText采用n-gram擴(kuò)充特征詞,然后將詞向量輸入到一個(gè)全連接網(wǎng)絡(luò),取得了同基于詞向量CNN方法相當(dāng)?shù)男阅?;TextCNN和FastText方法的較優(yōu)性能,說明對于文本分類任務(wù),合理的淺層學(xué)習(xí)能夠達(dá)到深層學(xué)習(xí)的效果;ARE使用區(qū)域嵌入方法捕獲單詞上下文信息,類似于FastText采用的n-gram模型,同樣取得了很好的分類效果。
3)在深度模型方面:char-CNN和char-CRNN的較優(yōu)性能,說明對于大規(guī)模文本數(shù)據(jù)的分類任務(wù),字符級的深度模型能夠取得同詞向量卷積神經(jīng)網(wǎng)絡(luò)相近的性能;HN-ATT使用注意力機(jī)制,通過對輸入詞或句子進(jìn)行差分評分來建立表示,相比單純采用序列表示模型的深度CNN或RNN取得了更好的分類效果,說明基于注意力機(jī)制的表征學(xué)習(xí)方法適用于自然語言處理;同深度殘差網(wǎng)絡(luò)在圖像識別上的優(yōu)秀表現(xiàn)一樣,DPCNN在文本分類問題上同樣表現(xiàn)出色。
為更好地分析神經(jīng)網(wǎng)絡(luò)方法的分類性能,本文對CNN、LSTM、GRU、MLP等基本網(wǎng)絡(luò)進(jìn)行性能測試,其中CNN分類采用了經(jīng)典的TextCNN實(shí)現(xiàn)。此外,還增加了一個(gè)組合模型CRNN和一個(gè)淺層模型FastText。所有模型均調(diào)用Keras庫實(shí)現(xiàn),未做特別優(yōu)化,輸入均采用隨機(jī)初始化向量。Keras是一個(gè)由Python編寫的開源人工神經(jīng)網(wǎng)絡(luò)庫,可以作為Tensorflow的高階應(yīng)用程序接口進(jìn)行深度學(xué)習(xí)模型的設(shè)計(jì)、調(diào)試、評估、應(yīng)用和可視化。IMDB情感分類數(shù)據(jù)集是Stanford整理的一套影評情感數(shù)據(jù),含有25 000個(gè)訓(xùn)練樣本和25 000個(gè)測試樣本,可用于文本情感分類。表5比較了不同分類模型的網(wǎng)絡(luò)結(jié)構(gòu)、精度和運(yùn)行時(shí)間,其中運(yùn)行時(shí)間包括模型的訓(xùn)練時(shí)間和分類測試時(shí)間。
表5 深度學(xué)習(xí)基礎(chǔ)網(wǎng)絡(luò)結(jié)構(gòu)IMDB分類測試結(jié)果Table 5 Classification test results of deep learning basic network on IMDB
測試結(jié)果表明,對于短文本分類任務(wù),卷積神經(jīng)網(wǎng)絡(luò)性能優(yōu)于循環(huán)神經(jīng)網(wǎng)絡(luò)和多層感知器,比較適合構(gòu)建文本的語義表示。在常用的循環(huán)神經(jīng)網(wǎng)絡(luò)中,相比LSTM網(wǎng)絡(luò),門控循環(huán)單元分類效果更好。FastText先提取n-gram特征得到特征序列,再對每個(gè)特征做詞嵌入操作,將句子中的所有詞向量相加求平均,得到句子的向量表示。采用unigram時(shí)不增加特征詞。同其他方法的特征詞集合一樣,F(xiàn)astText取得了與CNN相當(dāng)?shù)男阅?,但?xùn)練時(shí)間更短。通過引入bigram特征和增加二元特征序列,F(xiàn)astText的分類性能甚至超過了CNN,但需要更大的計(jì)算開銷,此時(shí)FastText模型的訓(xùn)練時(shí)間為采用unigram特征的50倍左右,為TextCNN的5倍左右。
神經(jīng)網(wǎng)絡(luò)方法在文本分類任務(wù)中得到了較多應(yīng)用,然而從已有研究和本文分析來看,深度模型未被證明比淺層模型更為有效。當(dāng)前文本分類所采用的深度模型,來源于最初為圖像處理開發(fā)的深度模型,其中圖像被表示為真實(shí)稠密數(shù)據(jù)。不同于圖像,文本是離散稀疏數(shù)據(jù),同樣結(jié)構(gòu)的深度網(wǎng)絡(luò)應(yīng)用到不同類型的數(shù)據(jù)上,可能產(chǎn)生不同的結(jié)果[19]。例如,在卷積神經(jīng)網(wǎng)絡(luò)中,圖像在經(jīng)過卷積層后輸出依然是二維矩陣,而文本在經(jīng)過卷積層后一般會變成一維向量。此外,還應(yīng)在其他自然語言處理任務(wù)以及更多數(shù)據(jù)集,特別是中文文本集上,驗(yàn)證深度模型的有效性。
當(dāng)前的深度模型分類方法同統(tǒng)計(jì)機(jī)器學(xué)習(xí)算法原理一樣,模型沒有利用已有知識,不能像人一樣理解文本的語義。結(jié)合知識,特別是利用HowNet、WordNet等知識庫進(jìn)行自然語言處理,將會給深度學(xué)習(xí)模型帶來新的提升。例如,文獻(xiàn)[50]在中文微博情感分類中,利用HowNet情感詞集合對句子進(jìn)行詞性標(biāo)注,將輸入句子的詞性向量和句子內(nèi)容層面的詞向量結(jié)合作為卷積神經(jīng)網(wǎng)絡(luò)的輸入,對結(jié)合知識建立深度模型進(jìn)行了初步嘗試。未來,結(jié)合知識庫和知識圖譜建立自然語言處理的深度模型,會是打破現(xiàn)有深度學(xué)習(xí)方法性能瓶頸的可能途徑。
在許多實(shí)際的文本分析場景中有大量的未標(biāo)記數(shù)據(jù),但缺少足夠的標(biāo)記數(shù)據(jù)訓(xùn)練深度模型。雖然目前已出現(xiàn)一些無監(jiān)督或半監(jiān)督方法,例如針對小樣本類別的零樣本學(xué)習(xí)策略,但這些方法仍處于研究探索中,需要設(shè)計(jì)能夠充分利用未標(biāo)記數(shù)據(jù)的深度學(xué)習(xí)方法。利用大量的未標(biāo)記數(shù)據(jù)構(gòu)建知識庫或知識圖譜,然后結(jié)合知識建立深度模型將是未來的一個(gè)研究方向。此外,采用強(qiáng)化學(xué)習(xí)方法同樣可以減少數(shù)據(jù)標(biāo)記工作。
對抗生成網(wǎng)絡(luò)(Generative Adversarial Network,GAN)[51]為傳統(tǒng)機(jī)器學(xué)習(xí)提供了一種新的學(xué)習(xí)模式,生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)利用“對抗”的思想學(xué)習(xí)模型,生成網(wǎng)絡(luò)的目標(biāo)是生成盡量真實(shí)的數(shù)據(jù),例如文本、圖像、視頻,判別網(wǎng)絡(luò)的目標(biāo)是盡量區(qū)分生成對象的真假,這就像人與人之間通過競爭而不斷進(jìn)步的情況。GAN可被廣泛應(yīng)用于自然語言處理領(lǐng)域,近年來在圖像描述(圖像到文本)[52]、機(jī)器翻譯(文本到文本)[53]、圖像生成(文本到圖像)[54-56]等任務(wù)中得到了成功應(yīng)用,其通過對抗學(xué)習(xí)增強(qiáng)人工神經(jīng)網(wǎng)絡(luò)的預(yù)測和生成能力,為自然語言處理和文本分析提供了一個(gè)新的技術(shù)途徑,例如可以采用對抗學(xué)習(xí)方法,以大量無監(jiān)督句子和少量帶標(biāo)簽的句子訓(xùn)練生成模型,模型最終可以生成特定情感傾向的句子。利用該模型可以進(jìn)行樣本自動(dòng)生成,從而解決深度學(xué)習(xí)中樣本數(shù)據(jù)獲取困難的問題。
本文闡述深度學(xué)習(xí)在文本分類中的應(yīng)用和研究進(jìn)展,對現(xiàn)有多種基于深度學(xué)習(xí)的文本分類方法進(jìn)行分析和比較,并指出未來的研究方向。深度學(xué)習(xí)為文本分類提供了一個(gè)新的解決方案,相比傳統(tǒng)的文本分類方法,深度學(xué)習(xí)可以直接從輸入中學(xué)習(xí)特征表示,避免復(fù)雜的人工特征工程,簡化文本預(yù)處理工作,使研究者更專注于數(shù)據(jù)挖掘算法本身。深度學(xué)習(xí)模型通過改進(jìn)表征學(xué)習(xí)方法和模型結(jié)構(gòu),能夠獲得比傳統(tǒng)統(tǒng)計(jì)學(xué)習(xí)模型更好的分類性能,特別是卷積神經(jīng)網(wǎng)絡(luò),其在實(shí)際應(yīng)用中具有較好的分類性能和泛化能力?,F(xiàn)有研究多針對英文文本建立深度模型,同時(shí)采用英文數(shù)據(jù)集進(jìn)行性能評測,而這些方法對中文文本是否同樣有效,需要做進(jìn)一步的研究和驗(yàn)證。