利用神經(jīng)網(wǎng)絡(luò)進(jìn)行文本分類算法綜述(持續(xù)更新中)

傳統(tǒng)的文本分類一般都是使用詞袋模型/Tf-idf作為特征+機(jī)器學(xué)習(xí)分類器來進(jìn)行分類的教届。隨著深度學(xué)習(xí)的發(fā)展恒水,越來越多的神經(jīng)網(wǎng)絡(luò)模型被用來進(jìn)行文本分類。本文將對這些神經(jīng)網(wǎng)絡(luò)模型做一個簡單的介紹凉倚。

《Enriching Word Vectors with Subword Information》

本文介紹了一種詞向量模型渺氧,雖然算不得文本分類模型,但由于其可以說是fasttext的基礎(chǔ)哎媚。因此也簡單提一下喇伯。

作者認(rèn)為cbow和skipgram及大部分詞向量模型都沒有考慮到單詞的多態(tài)性,而簡單的將一個單詞的多種形態(tài)視為獨立的單詞拨与。例如like的不同形式有l(wèi)ikes稻据,liking,liked,likes捻悯,這些單詞的意思其實是相同的匆赃,但cbow/skipgram模型卻認(rèn)為這些單詞是各自獨立的,沒有考慮到其形態(tài)多樣性今缚。

因此作者提出了一個可以有效利用單詞字符級別信息的n-gram詞向量模型算柳,該模型是以skipgram模式實現(xiàn)的。例如單詞 where姓言,其n-gram表示為<wh, whe, her, ere, re>, where瞬项。其中<>分別表示前后綴。在原始的skipgram模型中何荚,輸入僅僅只是where的onehot向量囱淋,而在此模型中輸入則變成了<wh, whe, her, ere, re>, where的onehot編碼的加和,有效的利用了字符級別的信息餐塘,因此效果更加好妥衣。

而在loss方面,文中采用了負(fù)采樣+binary LogisticRegression的策略戒傻。即對每一個目標(biāo)單詞都預(yù)測為正負(fù)中的一種税手。

《Bag of Tricks for Efficient Text Classification》


在本文中作者提供了一個基于神經(jīng)網(wǎng)絡(luò)的文本分類模型,這個模型是基于cbow的需纳,與cbow非常類似芦倒。

和CBOW一樣,fastText模型也只有三層:輸入層候齿、隱含層熙暴、輸出層(Hierarchical Softmax),輸入都是多個經(jīng)向量表示的單詞慌盯,輸出都是一個特定的target周霉,隱含層都是對多個詞向量的疊加平均。不同的是亚皂,CBOW的輸入是目標(biāo)單詞的上下文俱箱,fastText的輸入是多個單詞及其n-gram特征的embeding表示方式,這些特征用來表示單個文檔灭必;CBOW的輸入單詞被onehot編碼過狞谱,fastText的輸入特征是被embedding過;CBOW的輸出是目標(biāo)詞匯禁漓,fastText的輸出是文檔對應(yīng)的類標(biāo)跟衅。輸出層的實現(xiàn)同樣使用了層次softmax,當(dāng)然如果自己實現(xiàn)的話播歼,對于類別數(shù)不是很多的任務(wù)伶跷,個人認(rèn)為是可以直接使用softmax的。



最后,貼一個Keras的模型fasttext簡化版叭莫。



從上面可以看出蹈集,其實自己實現(xiàn)fasttext有兩種方式,第一種是將embeding詞向量訓(xùn)練過程與文本分類任務(wù)結(jié)合在一起雇初,也就是上面實現(xiàn)的模型拢肆;第二種則是單獨訓(xùn)練embeding詞向量,然后將這個ngram詞向量作為特征輸入到分類器中靖诗,如果分類器是神經(jīng)網(wǎng)絡(luò)郭怪,則是fasttext,當(dāng)然此時也可以將詞向量作為特征與其他分類器組合來進(jìn)行訓(xùn)練構(gòu)建模型刊橘。

《Convolutional Neural Networks for Sentence Classification》


基于詞向量表示移盆,本文提出利用卷積神經(jīng)網(wǎng)絡(luò)來進(jìn)行文本分類。其算法如上圖所示:

  • (1)每個單詞的詞向量表示為一行伤为,而將這所有單詞拼接起來的矩陣則與圖片非常相似,這些便是模型的輸入据途。也即此時的輸入是各個單詞的embeding的拼接矩陣绞愚。但是也是可以將單詞的onehot向量作為輸入的,不過此時就是將詞向量訓(xùn)練過程與文本分類任務(wù)合在一起了颖医,這個其實與推薦算法中的各種id embeding利用類似位衩;
  • (2)有了詞向量拼接組成的矩陣,便可以使用卷積核進(jìn)行卷積運算了熔萧。不過這里的卷積核與圖形中的卷積核略有不同糖驴。這里卷積核的長是與embeding維度相同的,而寬則可以認(rèn)為是跨越幾個單詞佛致。因此一個卷積核與詞向量矩陣的運算可以看作是從一個n-gram單詞中提取特征贮缕。在文中使用的卷積核寬度有3,4俺榆,5感昼,也即使用的n-gram有3,4罐脊,5三種情況定嗓;
  • (3)卷積運算后作者對每個feature map使用了一個maxpooling操作,表示從中提取出最重要的特征萍桌,作者認(rèn)為值越大這個特征越重要宵溅;
  • (4)將所有fenture map通過maxpooling 提取到的特征組合成一個一維向量,然后構(gòu)建一個全連接層輸出分類結(jié)果上炎。

在本文中恃逻,作者嘗試了多種不同的詞向量模式:

  • (1)CNN-rand, 所有的詞向量都是隨機(jī)初始化的,隨著訓(xùn)練過程一起訓(xùn)練。這種也即我們上面提到的將詞向量訓(xùn)練過程與分類任務(wù)結(jié)合在了一起辛块。這個模型是效果最差的畔派,說明預(yù)訓(xùn)練的詞向量是非常重要的;
  • (2)CNN-static润绵,所有的詞向量都來自預(yù)訓(xùn)練线椰,且在訓(xùn)練過程中保持固定不進(jìn)行更新。這個結(jié)果相較于CNN-rand有了較大的提升尘盼;
  • (3)CNN-nonstatic憨愉,使用預(yù)訓(xùn)練的詞向量,但是在訓(xùn)練中進(jìn)行更新卿捎。這種模型的結(jié)果比上面的要稍好配紫;
  • (4)CNN-multichannel,使用了兩個詞向量午阵,每個詞向量組成的矩陣相當(dāng)于一個channel(也即相當(dāng)于圖像的RGB三通道)躺孝。但是,其中一個詞向量保持固定不進(jìn)行訓(xùn)練底桂,另一個則進(jìn)行更新植袍。作者認(rèn)為,僅有一個詞向量且進(jìn)行更新的話可能會過擬合這個當(dāng)前較小的數(shù)據(jù)集籽懦,因此保留了一個詞向量固定不進(jìn)行訓(xùn)練于个。最后這個結(jié)果與CNN-nonstatic相差無幾,還是比較令人意外的暮顺。

《Effective Use of Word Order for Text Categorization with Convolutional Neural Networks》

在上一篇文章中CNN網(wǎng)絡(luò)的輸入一般是預(yù)訓(xùn)練好的詞向量厅篓,而在本文中作者提出一種直接將embedding訓(xùn)練與分類任務(wù)結(jié)合在一起,且能有效提取/保留詞序信息捶码,也即有效訓(xùn)練出n-gram的模型方法羽氮,其實也可以理解為一種利用CNN來進(jìn)行embedding的方法。

為了保留詞序信息惫恼,作者提出了兩種模型訓(xùn)練方法乏苦,第一種是將各個詞的onehot向量合并在一起,以保留詞序信息尤筐,訓(xùn)練n-gram模型汇荐,稱為seq-CNN,如'I love it'的bi-gram表示如下:

但是seq-CNN有一些缺點盆繁,當(dāng)n-gram的n過大時袁翁,或者詞典過大時绿贞,seq-CNN的表示方式扣猫,會使得向量維度過大(即會堆疊過長),從而造成過多的參數(shù)需要學(xué)習(xí)倾贰,加大算法的計算復(fù)雜度,因此提出了第二種方式拦惋,詞袋模型bow-CNN(bag of word CNN)匆浙,如下:

這種方式雖然在很小程度上損失了語序信息(如bi-gram使用bow表示時是沒有考慮到語序的),也可以理解為損失了局部語序信息厕妖,但是實驗結(jié)果證明其效果與seq-CNN相似首尼,但是其參數(shù)更少,因此推薦使用言秸。

此外软能,另一個問題是輸入序列長度變化問題(在上一篇文章textCNN中通過padding解決的?)举畸,在本文作者提出使用一個動態(tài)可變的pooling層來解決這個問題查排,使得卷積層輸出的大小是相同的。關(guān)于可變pooling其實與圖像識別中的空間金字塔池化 (Spatial Pyramid Pooling) 是類似的抄沮。

這篇文章有點將fastText與TextCNN結(jié)合在一起的感覺跋核,將n-gram embedding與分類任務(wù)結(jié)合在了一起進(jìn)行訓(xùn)練,通過CNN來進(jìn)行Embedding叛买。

《Semi-supervised Convolutional Neural Networks for

Text Categorization via Region Embedding》



在本篇文章中作者提出了一個tv-embedding(即two-view embedding)了罪,它也屬于region embedding(也可以理解為ngram embedding)。這種方法與上面的bow-CNN表示相似聪全,使用bow(bag of words)的方式來表示一個區(qū)域的詞句,然后通過某個區(qū)域(region辅辩,左右鄰域的單詞或詞句)來預(yù)測其前后的區(qū)域(單詞或詞句)难礼,即輸入?yún)^(qū)域是view1,target區(qū)域是view2玫锋。tv-embedding是單獨訓(xùn)練的蛾茉,在使用的時候與CNN中的embedding組合在一起(形成多個channel?)撩鹿。作者認(rèn)為谦炬,word2vec方法預(yù)訓(xùn)練得到的embedding向量是普適性的,而通過特定任務(wù)的數(shù)據(jù)集的訓(xùn)練得到tv-embedding具有任務(wù)相關(guān)的一些信息节沦,更有利于提升我們的模型效果键思。

吐槽一下,這篇文章沒太看懂甫贯,也可能是英語太差吼鳞,作者文章中沒有那種一眼就能讓人理解的網(wǎng)絡(luò)圖,像textCNN的圖就非常一目了然叫搁,看圖就知道是怎么做的了赔桌。

《Supervised and Semi-Supervised Text Categorization using LSTM for Region Embeddings》

本文提出了一個使用監(jiān)督學(xué)習(xí)加半監(jiān)督預(yù)訓(xùn)練的基于LSTM的文本分類模型供炎。文章作者與上面相同,所以用到的很多技術(shù)可以說與上面也是同出一轍疾党。因此簡單說下本文的一些思路音诫。

作者認(rèn)為已有的直接使用LSTM作為文本分類模型并直接將LSTM的最后一個輸出作為后續(xù)全連接分類器的方法面臨兩個問題:(1)這種方式一般都是與word embedding整合在一起(即輸入onehot經(jīng)過一個embedding層再進(jìn)入LSTM),但是embedding訓(xùn)練不穩(wěn)定雪位,不好訓(xùn)練竭钝;(2)直接使用LSTM最后一個輸出來表示整個文檔不準(zhǔn)確,一般來說LSTM輸入中后面的單詞會在最后輸出中占有較重的權(quán)重茧泪,但是這對于文章表示來說并不總是對的蜓氨。因此作者對這兩點進(jìn)行了改進(jìn):

    1. 對于前面embedding訓(xùn)練不穩(wěn)定的問題,作者做出了點改進(jìn):(1)直接將embedding向量V與LSTM的權(quán)重W結(jié)合在了一起队伟,也就是現(xiàn)在的W的功能其實是兼具W*V的功能的穴吹,而LSTM的輸入也就直接變成了onehot向量。(2)作者還使用LSTM進(jìn)行了tv-embedding半監(jiān)督預(yù)訓(xùn)練嗜侮,即LSTM中每個時序的輸出預(yù)測結(jié)果為其后面的單詞(作者這里使用的雙向LSTM港令,但是原理是一樣的反向的預(yù)測前面的詞語就行了)。除此之外锈颗,作者還添加了CNN-tv-embedding到其中顷霹。作者將這些預(yù)訓(xùn)練的embedding向量合并到各個門的計算中,形式如下:

      其中頭上戴波浪線的就是預(yù)訓(xùn)練的embedding向量击吱,其余的則是正常的LSTM門計算的方式淋淀。

  • 2、對于利用LSTM的最后一個輸出來表示文檔不準(zhǔn)確的問題覆醇,作者提出使用一個maxpooling來對所有時序的輸出來進(jìn)行處理朵纷,以從每個時刻中選擇最重要的表示,這一點其實跟RCNN想法基本相同的永脓。由于maxpooling可以自動選擇最重要的表示值袍辞,因此輸入輸出門不再有意義(這兩個門也是用來選擇是否對前面時序的輸出值(ht,ct)進(jìn)行遺忘的常摧,功能重復(fù))搅吁,作者直接將輸入輸出門都設(shè)置為1。
  • 3落午、此外谎懦,為了加速運算過程,作者將文章進(jìn)行打斷了分別輸入到多個LSTM中以實現(xiàn)并行溃斋,最終pooling也是從這些所有的打斷的LSTM中進(jìn)行合并得到分類層的輸出党瓮。

本文其實可以看作是作者將自己前面的tv-embedding半監(jiān)督訓(xùn)練與RCNN的一個融合吧,大有一種一頓操作猛如虎盐类,一看人頭0-5的感覺(因為作者的實驗結(jié)果跟一般的CNN相比其實也搶不了多少)寞奸。

《Deep Pyramid Convolutional Neural Networks for Text Categorization》


本文的作者也是前面兩篇使用CNN來進(jìn)行文本分類處理的文章的作者呛谜。因此在本文中,結(jié)合了前面兩篇文章提出的一些方法枪萄,并使用了一個深層的卷積神經(jīng)網(wǎng)絡(luò)隐岛。具體的細(xì)節(jié)包括:

  • 1、使用詞袋向量模式作為模型的輸入(即前文中bow-CNN的輸入)瓷翻;
  • 2聚凹、使用兩個embedding向量,因此相當(dāng)于兩個embedding channel齐帚,一個是嵌合在模型中直接進(jìn)行訓(xùn)練的CNN embedding妒牙,另一個則是上文提到的單獨訓(xùn)練的tv-embedding。其中对妄,tv-embedding是可選的湘今,但作者證明tv-embedding是能有效提升模型效果的;
  • 3剪菱、使用了深達(dá)15層的卷積網(wǎng)絡(luò)摩瞎,但是與圖像中常見的卷積網(wǎng)絡(luò)不同,在此網(wǎng)絡(luò)中每一次下采樣后網(wǎng)絡(luò)的feature map數(shù)量都不變孝常,而在圖像的CNN網(wǎng)絡(luò)中旗们,每一次下采樣后都會增加feature map的數(shù)量來增加特征多樣性。本文中作者研究表明增加feature map數(shù)量并不能有效提升模型效果构灸,而且會增大計算量上渴,因此本文中的網(wǎng)絡(luò)feature map數(shù)量一直未變。但是隨著下采樣的進(jìn)行喜颁,每個block 都比之前的block feature map小了一半稠氮,因此計算量減半,各個block的計算量隨著網(wǎng)絡(luò)加深呈金字塔形狀洛巢。這也是文章題目中 Pyramid 的由來;
  • 4次兆、最后稿茉,為了防止梯度消失,與大多數(shù)神經(jīng)網(wǎng)絡(luò)一樣芥炭,本文采用resnet中的skip connection漓库。

一點小思考:為什么深度卷積網(wǎng)絡(luò)對文本分類有用?
在網(wǎng)絡(luò)的第一層我們通過改變卷積核的大小來進(jìn)行不同長度ngram的embedding园蝠,但是隨著n的加大還是會出現(xiàn)長ngram稀疏性問題渺蒿。而隨著網(wǎng)絡(luò)的加深,每個卷積核的感受野也變得越來越大彪薛,可以看作是能夠有效的組織理解更長文本的語義茂装。

更多詳細(xì)的關(guān)于DPCNN的細(xì)節(jié)可以查看從DPCNN出發(fā)怠蹂,撩一下深層word-level文本分類模型

《Densely Connected CNN with Multi-scale Feature Attention for Text Classification》


本文提出了一種基于CNN+Attention的文本分類模型少态。作者認(rèn)為已有的基于CNN的文本分類模型大都使用的是固定大小的卷積核城侧,因此其學(xué)習(xí)到的表示也是固定的n-gram表示,這個n與CNN filter大小相關(guān)彼妻。但是在進(jìn)行句子的語義表示時嫌佑,不同句子發(fā)揮重要作用的ngram詞語常常是不同的,也即是變化的侨歉。因此屋摇,模型能根據(jù)句子來自適應(yīng)的選擇每個句子最佳的n-gram對于提升模型的語義表示能力是非常關(guān)鍵的。本文便是由此思路提出了一種自適應(yīng)的來選擇不同n-gram表示的模型幽邓。

本文模型在主題結(jié)構(gòu)上參照了CV中的DenseNet炮温,借由DenseNet中的稠密連接來提取到豐富的n-gram特征表示。舉例來說颊艳,在layer3的特征不僅能學(xué)習(xí)到f(x1, x2, x3)茅特,還能學(xué)習(xí)到f(x1(x2,x3))這種更多層次,更加豐富的特征棋枕。網(wǎng)絡(luò)的結(jié)構(gòu)主要包括三部分:DenseCNN主網(wǎng)絡(luò)白修,Attention module和最后的全連接層分類網(wǎng)絡(luò)。下面對這三部分進(jìn)行簡單的說明:

  • DenseCNN與DenseNet結(jié)構(gòu)相似重斑,都是由多個Dense block組成的兵睛,在每一個包含n個卷積層的Dense block里面都有(1+(N-1))*((N-1)/2)個連接。再來說說每一層網(wǎng)絡(luò)連接的細(xì)節(jié):(1)在圖像的卷積網(wǎng)絡(luò)中一般k個kernel會生成k個feature map窥浪,但是在這里略有區(qū)別祖很。因為這里的kernel并非等長的,而是與word embedding的長度相同漾脂,因此每個kernel與原來的mxd維(m個詞d維)的矩陣相乘都會得到一個mx1的向量假颇,相當(dāng)于一個kernel就是一個word embedding的一維,因此k個kernel即生成了k個mx1的向量(word embedding的k維)骨稿,將這些向量拼接在一起便形成了一個大的mxk維的feature map笨鸡。這與圖像中的有些不同,相當(dāng)于將圖像中的k個feature map(也即channel)拼接在了一起坦冠。(2)skip connection如何連接形耗?每個skip connection 都會有一個kernel與之相乘,得到一個mxk的feature map辙浑,然后將這些所有的connection計算得到的feature map按位(element-wise)相加激涤,便得到了我們的輸出feature map;
  • Attention module. 注意力機(jī)制應(yīng)用在CNN結(jié)構(gòu)的最后判呕,其作用是將前面所有層的特征進(jìn)行加權(quán)倦踢,已得到最后分類層的輸出向量送滞。具體地,Attention module包括兩步:filter ensemble和scale reweight硼一。(1)filter ensemble累澡,這一步會生成一個mxL維(L表示CNN層數(shù))的注意力矩陣 s,其表示的是對于最后輸出的mxk中的m行中每一行("單詞"表示)般贼,所有CNN層的對應(yīng)行的權(quán)重占有多少愧哟。舉例來說s11表示最后mxk的feature map中的第1行有多少(權(quán)重)來自于第1層CNN的第1行(對應(yīng)的行),而s23表示最后mxk的feature map中的第2行有多少(權(quán)重)來自于第3層CNN的第2行(對應(yīng)行)哼蛆。其值得sij的值計算也非常簡單蕊梧,直接等于某一個單詞的k為數(shù)值相加即可,也即s23的值等于第2層的第3行的k個數(shù)值相加得到腮介。如此肥矢,我們便得到了我們的未歸一化的Attention權(quán)重矩陣。(2)scale reweight叠洗。這一步通過一個softmax(MLP)來對輸出進(jìn)行歸一化甘改,得到最后的對于每個單詞的最后的各CNN層的權(quán)重。
  • 第三部分就是一個非常簡單的全連接分類層了灭抑。

本文通過Dense connection + Attention來自動獲取對于文本語義最重要的n-gram特征十艾,結(jié)果很好。但是缺點是腾节,這個網(wǎng)絡(luò)比較適合較短的文本忘嫉,文中對輸入文本進(jìn)行了padding補(bǔ)齊,對于不同數(shù)據(jù)集最大長度分別為50案腺,100等庆冕,但這對于較長的文本明顯是不足的。因此對于較長的文本或許HAN這種借用RNN來不限制輸入長短的網(wǎng)絡(luò)會更好劈榨。

《Recurrent Convolutional Neural Networks for Text Classification》


本文提出了一種結(jié)合循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)和卷積神經(jīng)網(wǎng)絡(luò)來進(jìn)行文本分類的方法访递,其結(jié)構(gòu)如上圖所示,該網(wǎng)絡(luò)可以分為三部分:

  • 第一部分利用一個雙向RNN網(wǎng)絡(luò)來提取各個單詞及其上下文的表示同辣。具體地拷姿,cli表示某個單詞的左側(cè)語句信息,其等于上一個單詞的左側(cè)信息cli-1加上上一個單詞的embedding表示ei-1邑闺。右側(cè)語句信息cr也可通過相同方法計算得到跌前,只不過RNN的方向相反而已棕兼。如此便可得到每個單詞的上下文信息陡舅,將上下文信息與單詞的embedding合并起來便可以得到此單詞的語義了,即yi伴挚;
  • 第二部分是一個卷積網(wǎng)絡(luò)中的maxpooling層靶衍,對于上面得到的各個單詞的語義表示灾炭,進(jìn)行一個相當(dāng)于channel-wise的maxpooling,也即取各個單詞的同一個維度上面的最大值颅眶,這樣可以將不同長度的文本縮放到同一維度大小的特征蜈出;
  • 第三部分是一個softmax輸出層。

雖然說是RNN與CNN的結(jié)合涛酗,但是其實只用到了CNN中的pooling铡原,多少有一點噱頭的意思。文中還提到了RCNN為什么比CNN效果好的原因商叹,即為什么RCNN能比CNN更好的捕捉到上下文信息:CNN使用了固定大小window(也即kernel size)來提取上下文信息燕刻,其實就是一個n-gram。因此CNN的表現(xiàn)很大程度上受window大小的影響剖笙,太小了會丟失一些長距離信息卵洗,太大了又會導(dǎo)致稀疏性問題,而且會增加計算量弥咪。

《Recurrent Neural Network for Text Classification with Multi-Task Learning》

s上標(biāo)表示共享參數(shù)

在眾多自然語言處理任務(wù)中过蹂,一個非常突出的問題就是訓(xùn)練數(shù)據(jù)不足,且標(biāo)注難度大聚至。因此文本提出了一種多任務(wù)共享的RNN模型框架酷勺,其使用多個不同任務(wù)數(shù)據(jù)集來訓(xùn)練同一個模型共享參數(shù),已達(dá)到擴(kuò)充數(shù)據(jù)集的作用晚岭。

文中作者提出了三個模型鸥印,如上圖所示:

  • 第一個模型與一般的LSTM模型基本相同,只是在輸入端每個單詞用了兩個兩個embedding坦报,一個是共享的库说,一個是各個任務(wù)的數(shù)據(jù)訓(xùn)練出來的;
  • 第二個模型可以看作一個使用了一個兩層LSTM的模型片择,其中每層LSTM作為一個特定任務(wù)的參數(shù)層潜的,其中兩個LSTM層的隱藏層數(shù)據(jù)又是可以相互交流的,因此充分利用了不同任務(wù)的數(shù)據(jù)字管;
  • 第三個模型使用了三個LSTM層啰挪,相比于第二個模型通過隱藏層進(jìn)行非線性變換后的數(shù)據(jù)進(jìn)行交流,第三個模型直接使用了一個中間層來作為共享參數(shù)層嘲叔,其每個任務(wù)的數(shù)據(jù)都可以直接作為這一層LSTM的輸入亡呵,然后通過共享層的隱藏層進(jìn)行數(shù)據(jù)交流。

三個模型的訓(xùn)練方式相同:

  • 1硫戈、先隨機(jī)選擇一個分類任務(wù)及其數(shù)據(jù)集锰什;
  • 2、從此訓(xùn)練集中隨機(jī)選擇一個樣本進(jìn)行訓(xùn)練;
  • 3汁胆、重復(fù)1梭姓、2步。
  • 4嫩码、最后在實際應(yīng)用于分類時誉尖,可以使用特定任務(wù)的數(shù)據(jù)進(jìn)行繼續(xù)訓(xùn)練微調(diào)一下以達(dá)到更好的效果。

《Hierarchical Attention Networks for Document Classification》


本文提出了一個層次LSTM+Attention模型铸题。作者認(rèn)為铡恕,雖然一篇文章有多個句子組成但真正其關(guān)鍵作用的可能是其中的某幾個,因此對各個句子施加了注意力機(jī)制丢间,以使得對文章語義貢獻(xiàn)較多的句子占有更多的權(quán)重没咙。同樣的,組成一個句子的單詞有多個千劈,但是發(fā)揮重要作用的可能就那么幾個祭刚,因此使用注意力機(jī)制以使得重要單詞發(fā)揮更大的作用,這些便是本文的核心思想墙牌。整個網(wǎng)絡(luò)可分為三層涡驮,兩個LSTM層分別用來進(jìn)行word encode和sentence encode,最頂上為一個全連接分類層喜滨。若加上兩層注意力層捉捅,則可認(rèn)為網(wǎng)絡(luò)為5層。下面簡單聊聊這五層網(wǎng)絡(luò)的結(jié)構(gòu):

  • 首先是最底層為word encoder層虽风,網(wǎng)絡(luò)是一個雙向LSTM棒口,其輸入自然是一個句子的所有詞word embedding,雙向LSTM(word encoder)用來學(xué)習(xí)得到句子中各個單詞的表示辜膝。這個word encoder是用來學(xué)習(xí)得到各個單詞在某個特定上下文中的語義无牵,也即在word embedding的基礎(chǔ)上添加了上下文信息。需要注意的是厂抖,在整個網(wǎng)絡(luò)中這樣的word encoder的數(shù)量是文章句子數(shù)量一致的茎毁,有幾個句子便需要幾個word encoder(抑或是所有句子的word encoder都共用一個雙向LSTM?貌似這種可能較大忱辅,也更容易實現(xiàn))七蜘。這一層的輸出是每個單詞在雙向LSTM中正向和反向輸出的拼接
  • 往上走就是word Attention層了,這一層是對一個句子的所有單詞進(jìn)行加權(quán)以生成一個句子的語義表示墙懂。具體地想通過一個MLP層(即全連接層)所有的單詞表示相乘以更進(jìn)一步地得到各個單詞的表示uit橡卤,與通過一個矩陣uw與句子中所有的單詞表示uit相乘softmax歸一化以得到各個單詞的打分。矩陣uw的意思可以理解為找出那個貢獻(xiàn)更多信息的單詞并給與更高的權(quán)重损搬。最后通過對句子中各個單詞加權(quán)相加以得到各個句子的表示碧库;
  • 第三層是sentence encoder層扔亥,其結(jié)構(gòu)與word encoder層相同,作用是用來對句子表示進(jìn)一步學(xué)習(xí)表示谈为,加入句子的上下文語義,學(xué)習(xí)得到其在整個文章中的語義踢关,因此不再贅述伞鲫;
  • 第四層是一個sentence Attention層,其計算方式也與word Attention層的計算方式相同签舞,最后得到各個句子的權(quán)重后進(jìn)行加權(quán)便得到了整個文章的向量表示v秕脓;
  • 第五層便是最后的分類層了,就是一個全連接層儒搭,也沒有太多需要說的東西吠架。

總體來說,本文看起來還是比較有意思的搂鲫,符合人閱讀文章的習(xí)慣傍药,我們寫文章的時候也是有中心詞和中心句的。但是由于這個層級結(jié)構(gòu)是否會導(dǎo)致訓(xùn)練慢或者不好訓(xùn)練還不得而知魂仍。最后拐辽,文中還提出對文章按長短先進(jìn)行排序,長度相似的進(jìn)入一個batch擦酌,這將訓(xùn)練速度加快了3倍俱诸。

《Graph Convolutional Networks for Text Classification》


本文提出了一個基于圖神經(jīng)網(wǎng)絡(luò)的文本分類方法。該方法的主要思想是將所有文章及其包含的詞匯都放到一個圖網(wǎng)絡(luò)里面去赊舶,圖網(wǎng)絡(luò)中的節(jié)點分為兩種類型:單詞節(jié)點和文章節(jié)點睁搭。其中連接單詞節(jié)點和文章節(jié)點的邊的權(quán)重使用TF-IDF來表示,而單詞與單詞之間邊的權(quán)重則是使用點互信息(PMI)來表示笼平。點互信息與傳統(tǒng)語言模型中的條件概率計算方式非常相似园骆。只不過PMI采用的是滑窗方式而條件概率是直接在所有語料中進(jìn)行統(tǒng)計,可以認(rèn)為是將所有語料當(dāng)做一個大窗口寓调,這時就又與PMI相同了遇伞。

A表示圖網(wǎng)絡(luò)的鄰接矩陣,表示如下:



GCN同樣也是可以含有多層隱藏層的捶牢,其各個層的計算方式如下:


其中A'為歸一化對稱鄰接矩陣鸠珠, W0 ∈ R^(m×k) 為權(quán)重矩陣,ρ是激活函數(shù)秋麸,例如 ReLU ρ(x) = max(0,x) 如前所述渐排,可以通過疊加多個GCN層來合并更高階的鄰域信息:



其中j表示層數(shù)。
損失函數(shù)定義為所有已標(biāo)記文檔的交叉熵誤差:



文中提到Text GCN運行良好的原因有兩個方面:

  • (1)文本圖可以同時捕捉文檔和單詞之間灸蟆、全局的詞與詞之間的聯(lián)系驯耻;
  • (2)GCN模型作為拉普拉斯平滑的一種特殊形式,將節(jié)點的新特征計算為其自身及其二階鄰域的加權(quán)平均。

但是其也有一些缺:

  • (1)圖網(wǎng)絡(luò)這種表示方式丟失了語序信息可缚,有時候這種信息是非常重要的霎迫;
  • (2)Text GCN訓(xùn)練的時候是將測試集(不要label)一起放入圖網(wǎng)絡(luò)進(jìn)行訓(xùn)練的,倘若來了新的數(shù)據(jù)又需要重新建立網(wǎng)絡(luò)再次訓(xùn)練帘靡。文中提到可能的解決方法是引入歸納或快速GCN模型知给。

總的來說,文章的idea還是挺有意思的描姚,效果也還不錯涩赢。初識GCN可能還是有一點難以理解,可以參考如下資料進(jìn)行進(jìn)一步學(xué)習(xí):
基于圖卷積網(wǎng)絡(luò)的文本分類算法
如何理解 Graph Convolutional Network(GCN)轩勘?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末筒扒,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子绊寻,更是在濱河造成了極大的恐慌花墩,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件澄步,死亡現(xiàn)場離奇詭異观游,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)驮俗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進(jìn)店門懂缕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人王凑,你說我怎么就攤上這事搪柑。” “怎么了索烹?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵工碾,是天一觀的道長。 經(jīng)常有香客問我百姓,道長渊额,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任垒拢,我火速辦了婚禮旬迹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘求类。我一直安慰自己奔垦,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布尸疆。 她就那樣靜靜地躺著椿猎,像睡著了一般惶岭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上犯眠,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天按灶,我揣著相機(jī)與錄音,去河邊找鬼筐咧。 笑死鸯旁,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的嗜浮。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼摩疑,長吁一口氣:“原來是場噩夢啊……” “哼危融!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起雷袋,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤吉殃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后楷怒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蛋勺,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年鸠删,在試婚紗的時候發(fā)現(xiàn)自己被綠了抱完。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡刃泡,死狀恐怖巧娱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情烘贴,我是刑警寧澤禁添,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站桨踪,受9級特大地震影響老翘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜锻离,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一铺峭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧汽纠,春花似錦逛薇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啤呼。三九已至,卻和暖如春呢袱,著一層夾襖步出監(jiān)牢的瞬間官扣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工羞福, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留惕蹄,地道東北人。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓治专,卻偏偏與公主長得像卖陵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子张峰,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 預(yù)備知識 為了更好的理解fastText泪蔫,我們先來了解一些預(yù)備知識。第一個是BoW模型喘批,也叫做詞袋模型撩荣。BoW模型...
    lwyaoshen閱讀 17,718評論 1 24
  • 前言 作為NLP領(lǐng)域最經(jīng)典的使用場景之一,文本分類積累了許多的實現(xiàn)方法饶深。這里我們根據(jù)是否使用深度學(xué)習(xí)方法將文本分類...
    摩天輪的守候閱讀 36,764評論 0 11
  • outline 什么是文本分類 特征工程+分類器 TextCNN 什么是文本分類 文本分類是自然語言處理的一個基本...
    neo_ng閱讀 2,625評論 0 0
  • 應(yīng)用深度學(xué)習(xí)解決淘寶商品的類目預(yù)測問題的項目餐曹,總結(jié)下文本分類領(lǐng)域特別是應(yīng)用深度學(xué)習(xí)解決文本分類的相關(guān)的思路、做法和...
    MiracleJQ閱讀 3,579評論 0 20
  • 夏天以征服者的姿勢闖入了春天敌厘,幾個回合后台猴,伴隨著一聲陣?yán)祝钟樣樀碾x開了俱两。 晚上八點卿吐,跟父母視頻。每次視頻的...
    嘻哈一哈閱讀 322評論 0 1