文章1
Generative and Discriminative Text Classification with Recurrent Neural Networks
時間:2017
機構:Google DeepMind
生成模型:generative
判別模型:discrimination
作者支持生成模型比判別模型具有更加優異的性能,經過生成模型和判別模型的建模給出結論。
判別模型使用LSTM的變體(增加了peephole到每一個門上,則每一個門都會受到上一節點的cell的影響),當給定了文本類別標簽后最大化條件概率:P(y|x;W,V)
生成模型是基於類的語言模型,命名為共享LSTM,通過類別class來共享參數,包括:詞向量矩陣V,LSTM參數W,softmax參數U。新穎之處,這樣會產生一個條件模型,這個模型可以通過給定標簽的詞向量來共享參數;而在傳統的生成模型中,每一個標簽都有一個獨立的LM。
文中的生成模型和判別模型具有很多相似性,不同的是體現在訓練的過程中,生成模型要最大化聯合概率:
實驗:
數據集:來源:http://goo.gl/JyCnZq,資源包括: 新聞分類,情感分析,Wikipedia文章分類,問答文本
數據列表:
基線model:Na¨ıve Bayes classifier;Kneser–Ney Bayes classifier;Na¨ıve Bayes neural network
模型在測試集上的結果 :
判別模型LSTM相比其它判別模型有優勢,如基於logistic回歸(Zhang et al., 2015; Joulin et al., 2016),基於卷積網絡(Zhanget al., 2015; Xiao & Cho, 2016; Conneau et al., 2016)
同時,生成模型LSTM比基線模型具有更好的效果(na¨ıve Bayes,Kneser–Ney Bayes, and na¨ıve Bayes neural network)
作者最后給出建議:Our results suggest that LSTM is an effective method to capture dependencies among words in a document.
LSTM模型是有效捕捉文本中詞與詞之間的依賴關系
對於作者提出的生成模型LSTM和判別模型LSTM,通過訓練數據容量的大小評判模型:Our results show that the generative shared LSTM model outperformsthe discriminative model in almost all cases in the small-data regime on all datasets except one (AGNews)
這說明生成LSTM模型在小數據集上的性能會比判別LSTM模型會好些,但不是絕對的。
文章2
Hierarchical Deep Learning for Text Classification
時間:2017
機構:University of Virginia
作者說,現今隨着文檔數量的增加,傳統的有監督分類器的性能有所下降。原因是文檔數量的增加,類別的數量也在增加,提高了分類的難度。當前的分類重點放在了文本的多分類上,而本文提出了層次分類的方法,采用深度學習網絡堆疊結構,在文檔層次結構的每個層次上提供專門的理解。
自動文本分類有多種方法,決策樹、朴素貝葉斯、SVM、神經網絡、詞嵌入等。決策樹和朴素貝葉斯可以提供更好的解釋性,但分類的精度比其它方法要低。
文章使用全連接神經網絡構建DNN,構建15種方法比較文本分類的性能。6種傳統分類模型作為基線,3種基本的深度學習網絡(DNN,CNN,RNN)作為層次DNN的擴展。
特征提取:使用向量空間模型 vector-space model
模型
DNN:每一層只接受前一層的輸入,之后輸出到下一層,層與層是全連接。輸入層是提取的文本特征,輸出層每一個節點表示一個分類標簽,如果是二分類僅僅只有一個節點。作為基線DNN。
文章擴展了這個基線結構,以達到分級分類的目的。如下圖所示,
在該層次結構分類模型中,第二層分類(父)是在第一層分類(子)的基礎上完成的,可以理解成一個層次樹,由根節點散發到多個子節點。第二層的每一個區域都與第一層的結果輸出相連接。類別判定的過程舉例如下:如果經過模型的第一個層次的輸出分類是計算機科學這一類別,那么在下一層級訓練的時候只接受計算機科學類的數據作為訓練數據。所以第一層次模型的訓練數據是所有數據集,第二層次模型只接受前一層次確定類別下對應的數據再分類。通過這樣的層次結構達到了多分類的目的。
模型訓練:標准BP算法,激活函數:sigmoid和ReLu,輸出:softmax
RNN:該層節點的輸出可以作為輸入重新輸入到該層中。改模型在文本處理中具有很大的優勢。RNN在理論上可以記憶前幾時刻的信息,但在實際的工程應用中很難實現,還有梯度彌散問題,為了解決這些,提出RNN的進化版LSTM,有選擇性的記憶或者遺忘。LSTM又有多個版本,如下圖:
圖中下部分是基本的LSTM,上部分是LSTM的變體GRU(Gated Recurrent Unit)門控循環單元,GRU比LSTM更加簡潔。基本LSTM公式:
輸入門:
遺忘門:
候選cell值:
新的cell值:
輸出門:
RNN文本分類的網絡結構如下圖:
CNN:RNN會有一個問題,當后面的詞比之前的詞更有影響力時,RNN會有偏差,就會出現問題。為解決這一點,卷積網絡可以通過max-pooling這一層,判定有區別性的短語。盡管CNN的本源是處理圖像問題的,但在文本分類上也取得了不錯的效果。潛在的問題是通道個數和特征空間的大小。
本文的網絡結構匯總:
DNN:8個隱含層,每個隱含層有1024個神經元節點
RNN:2個隱含層,每個隱含層有100個GRU
CNN:濾波器大小:{3,4,5,6,7},8個隱含層,層大小{128,128,128},用{5,5,35}池化
模型參數:batch_size=128
軟硬件環境:
CPU:E5-2640,32核,64G內存
GPU:英偉達K620,K20c
使用python,CUDA英偉達官方平行計算平台級API。使用Keras核TensorFlow框架搭建神經網絡結構。
實驗結果:
分三個數據集分別測試。RNN在三個測試集的表現最好,之后是CNN,第三是帶有權重的SVM(在前兩個數據集中),最差的是朴素貝葉斯。第三個數據集是三個里面最小的數據集,所以RNN、CNN和權重SVM三個的准確率差異並不大。結果表明,相比傳統的機器學習方法,深度學習方法可以提高文本分類的性能;同時,采用堆疊的層次結構深度學習模型具有更優異的分類性能。
文章3
Abstractive Text Classification Using Sequence-to-convolution Neural Networks
時間:2018
機構:韓國江西大學
針對文本分類,文章提出一種深度神經網絡模型,該模型叫序列-卷積神經網絡(Seq2CNN)model,包括兩塊:序列塊在最前用來概要輸入的文本,卷積塊接受輸入的概要信息並將之分類到對應的標簽。Seq2CNN模型采用端到端來分類變長文本,就是前期不用將輸入數據預處理成固定長度。指出,TextCNN在文本分類上的應用具有里程碑式的意義,但其要求輸入固定長度的數據做訓練,但是TextCNN的參數個數是由輸入文本的長度決定的,業界采用的普遍方法就是修剪或者填充輸入文本到定長數據以達到訓練模型訓練的目的。這樣操作會在分類長文本時產生信息損失,導致模型性能退化。
Seq2CNN模型結構:
序列模型使用注意力機制的Encoder-Decoder RNNs 用於抽取文本摘要;后接的卷積模型是建立在經典的TextCNN基礎上實現的。注意力機制的Encoder-Decoder RNNs模塊將源句子編碼成固定長度的向量,並且解碼生成文本摘要;編碼器包括Bidirectional RNN,解碼器包Uni-directional RNN,對於解碼部分、編碼部分、Attention部分都采用128個隱含單元的Long-Short-Term-Mermory,並且在LSTM層間使用了Dropout進行正則化。用於前向LSTM編碼器讀取的序列是按照語句順序排列的,后向的LSTM則是讀取該序列的反向順序,這樣來自於編碼器的固定長度向量就包含了前一詞和后一詞的集成信息。在注意力機制的幫助下,解碼器部分就可以取舍源語句中的信息(哪些部分需要注意),只關注那些對概要來說至關重要的向量。
卷積模型:將文本用n*k的矩陣表示 ,n:輸入文本詞的個數;k:詞向量的維數,可變長濾波器窗口長度h,對文本進行h*k卷積操作,之后進行max-over-time操作。多濾波器映射到多特征,濾波器窗口{3,4,5},一組有32個,之后這些特征全連接的soft-max層,輸出是標簽上的概率分布。注意:輸入的文本數據是通過序列模型生成的摘要的詞向量的表示。
word embedding layer:存儲每一個詞的詞向量,詞及其對應的詞向量可以查找vocabulary表獲得,該文章中的詞表有2w-3w個詞,詞向量的維度為100。
TextCNN中,有3種文件預處理方法:1)full-text:從輸入文本中去除不必要的字符和停用詞,用“PAD” token 填充到固定長度,固定長度的選取是文本中出現的最長長度。2)修剪&填充:人為設定固定長度的超參,如果輸入數據超過設定的長度,選取前N個,之后的剔除;如果不足長度,用“PAD”補全。3)概要式:代替預料中的每一個句子,作者使用TextRank方法提取了輸入文本的摘要,並用修剪&填充方法處理這些摘要。(文本摘要需要標記數據嗎)
數據集:
模型損失:
模型准確率:
在以上結果中,帶有TextRank-summarization表現出的分類結果相對較好。作者提出Seq2CNN模型相比其它模型是最優的,帶來約有1%的效果提升,而且是在詞向量沒有經過任何預處理的情況下進行的,比經過預訓練詞向量下的TextCNN效果更有競爭力。
從Yahoo Answers數據集中看到,所有模型的准確率都非常的低,這是因為TextRank算法,如果原始文本太短就無法生成正確的摘要信息。但是,Seq2CNN在短文本上具有更好的魯棒性,前部分的序列模型可以從原始預料中剔除不重要的詞正確地生成摘要信息。可以通過下圖看到:
總結:作者提出了Seq2CNN模型,其最大的優勢就是高靈活性。對於相同的任務,它的每一個模塊都可以設計其它的模型來替代,如序列模塊可以被多層的Seq2Seq或者文本自編碼器來替代;卷積模塊可以被C-LSTM、R-CNN、Char-CNN、VDCNN等來替代。從模型的結果來看,文中的方法相比其它的深度學習模型的准確率提升並不大,都可以提供有效的分類,同時數據集對模型分類的影響很大,同種模型在不同的數據集上表現有差異,所以評判模型的優劣要從多角度出發。
文章名:Joint Embedding of Words and Labels for Text Classification
機構:杜克大學
時間:2018
當對文本序列進行學習表示時候,詞嵌入方式是捕捉語義信息最有效的中間媒介。作者提出一種觀點,將文本分類視為一個標簽詞的聯合嵌入問題,每個標簽詞都用詞向量嵌入到相同的空間內。提出一種注意力框架用以確定文本序列和標簽之間的嵌入能力。注意力能力可以從標記訓練樣本集中學習得到,對於給定的序列,相關詞的權重要比不相關詞的權重高。
文本分類是NLP領域的基礎問題。
注意力機制可以更加靈活的表征文本特征,訓練該模型可以捕捉到對目標任務具有重要貢獻的依賴關系,而不用考慮序列中元素之間的距離,這樣可以為具有距離依賴的model(CNN,RNN)提供補充信息,但注意力機制在提高表征能力的同時是的模型的復雜度也隨之增加。
我們希望在兩個方面有更加出色的處理:1)學習到最有效的文本表征捕捉到重要的依賴信息;2)更低的計算復雜度
對於文本表征,當前最好的展現模型是經編碼器和解碼器連接的注意力機制方法,已經成功應用與語義情感分類、句對模型和句子摘要。得益於這些成功應用,目前出現了更顯得注意力機制model,包括層次注意力網絡,AOA,多步注意力等。注意力機制的思想是:被觀測到的不同的詞在相同的上下文中具有不同的信息,同一個詞在不同的上下文中也會有不同的重要度。對於上下文的實現,在不同的應用程序和模型架構中有所不同。通常,上下文被確定為目標任務,注意力是通過一個CNN/RNN的隱含層計算的。文中的注意力模型直接是在單詞和標簽的聯合嵌入空間中建立的。
模型:LEAM(Label-Embedding Attentive Model)
流程:
1.數據預處理:Embeddings
前兩部分的工作已經有學者做了大量的研究,體現在如何有效表征一個詞或者詞序列,NLP的成功很大取決於詞嵌入方法數據表征(Bengio, Mikolov)。他們的通常做法就是,離線對大語料庫做預訓練,然后再結合步驟一和步驟二進行改進以達到特定目標的任務。當前主流的深度學習模型認為映射函數就是一個黑盒子,已經被復雜的CNN/RNN結構所主導以實現優異的結果;同時,最近也研究也顯示,對詞嵌入的簡單處理操作(均值、最大池化),也能夠產生好的結果。
2.模型結構
特征嵌入
在該模型中僅在分類映射那一步中使用標記信息(f3),對傳統方法在f1步驟加入了優化。
重點放在了標簽嵌入句子C的學習,如何在歐幾里得空間內容嵌入類別標簽,需要借助矩陣G,這個G是嵌入詞和嵌入標簽構成的一種關系,之后通過這個G得到注意力得分貝塔,最后優化z。
在第一步中(f0):除了嵌入詞,也嵌入了所有的標記信息到同一個空間內,扮演了一個類別的“錨點”作用,以精細化詞嵌入。
在第二步中(f1):是組合函數,聚合詞嵌入到z,根據標簽和詞之間的權重信息。
在第三步中(f2):和傳統的處理方法一樣。
注意力模型:根據文中公式理解
數據集:
參數比較
模型結果比較
模型消耗
模型效率
作者文中提到的注意力機制模型可以提高單純CNN/RNN的准確率,目前所有的深度學習網絡都要比傳統的Bag-of-words詞袋模型要好,提出的模型只在兩個數據集上取得了最好成績(Yahoo,DBPedia),在其它兩個數據集上表現差的原因有兩點:1)這些數據集上的分類個數都比較少;2)在標簽嵌入用於初始化時沒有明確的對應詞嵌入可用,潛在的標簽嵌入沒有充分利用。這也是這種模型需要考慮的問題。
從上圖中也可以看出,該模型的有點具有更少的訓練參數,更快的收斂速度。
文章:Very Deep Convolutional Networks for Text Classification
機構:Facebook AI Research
時間:2017
目前NLP的主導方法:LSTM和CNN
相比於深度卷積網在計算機視覺的應用,在NLP的應用的這套東西還是非常膚淺。牛逼轟轟的Alexis等設計了一種新的架構VD-CNN專門用於文本處理,直接操作字符層級的特征,用非常小的卷積和池化操作,有29層的卷積網,網絡非常深。(目前,最好的網絡是使用了150層的,用於句子分類的卷積網的層數以前不超過6層)
許多NLP方法將詞作為最基本的單元,詞嵌入的特征抽取方法有其自身的優勢,然后,我們如何才能更好的表征一個有復雜語法語義關系的詞、短語或者句子目前來說做的還是不夠。一個句子既有長時依賴也有短時依賴。大牛首先肯定了RNN的優異性能,但是指出LSTM是針對序列信號處理的通用方法,缺乏明確的任務結構。
推理:都知道全連接的隱含層理論上可以學習到任何一個實值函數,那么網絡層次越深越能夠獲得更好的結果。卷積網能夠廣泛應用於圖像是由於圖像的組合特性,文本也具有相似的屬性:字符可以組合成n-grams, stems, words, phrase, sentences。
VDCNN網絡結構
該模型首先用lookup-table的方式生成一個2維的張量,大小為(f0,s),字符s的長度是1024,f0可以認為是輸入文本的通道數(維度),即通過lookpu-table的方式,生成了輸入句子矩陣,1*s可以看成是1通道,經過此后,變成16*s的16通道特征。之后,經過64通道的卷積,大小為3(kernel size 3),是一個臨時卷積(全連接),讓特征變成64維,輸出64*s。接着,兩個卷積塊,64通道,大小為3;接着3層各2個分別為128,256,512的卷積塊,大小為3,每層塊之間接一個降采樣層,使用pool/2方式。最后一個卷積塊輸出為512*Sd的張量,Sd取決於降采樣的個數.在這樣的卷積網絡下,產生的張量可以看做是輸入文本的高維表征,前期要使用PAD對文本進行處理,使之成為固定長度,那么Sd是一個常量。通常,卷積核的大小要分不同的維度,如2,3,4等,出於這樣考慮的動機是,不同的size可以模擬提取出n-gram特征,不同的n-gram特征可以體現出語句中長時-短時的內在關系。在這篇文章中,作者沒有采用這種方法,而是直接使用size為3的小卷積應用在每一層中,這樣具有更窄的感受野,目的就是要在深度結構中學習3-gram Feature。在最后一個卷積塊結束后,接一個k-maxpooling(k=8)的操作,使輸出固定到k維,這樣網絡就提取了最重要的前k個特征,獨立於他們在句子中出現的位置,就是從不同位置取出的重要特征。之后512*k的特征轉換到一個k維的向量,這個向量用於輸入到接下來的3個全連接層(Relu+Relu+softmax),輸出神經元的個數取決於分類的類別數,文中隱層節點數2048,k=8,使用batch normlization代替了dropout。
語料數據
通用模型設置:
實驗證明以下的初始化參數證明是效果最好的處理,具有通用性。一個句子用字符級的原子表示,對圖像來說就好比是像素點。
數據字典中含有的字符如下:
輸入文本PAD到1024的固定長度,如果文本過長則進行截斷處理。
一個字符嵌入的維度是16,那么對於一句話經過字符嵌入處理后得到16*s的矩陣。
min-batch:128,訓練用SGD,初始化學習速率0.01,動量因子0.9,GPU:K40
深度9層時,迭代一次的時間為24min-2H45min;深度為29層,迭代一次的時間為50min-7H,10到15代之后達到收斂。
實驗結果
結論:
1.深度網絡提高了預測准確率。當網絡從17層增加到29層,測試的錯誤率在所有數據集上都有降低。在Amazon Full數據集上,網絡從9到17到29錯誤率有近1%的降低,該數據集含有650K個樣本,超過6.5K個測試樣本能夠被正確分類,尤其是對大數據集,更加深層次的網絡對於文本處理任務有重要的意義。
2.max-pooling的方式比其它pooling方法處理的要好。max-pooling整體表現最好,顯著優於k-max-pooling。pooling的機制都是執行最大化操作,但k-max-pooling則更多考慮到了整個句子,這似乎破壞了在中間層執行最大化操作的行為。
3.該深度模型比ConvNets更優。
4.更深的網絡會是的模型退化,准確率降低;快捷連接有助於降低模型退化。
通過文章,作者給出了NLP處理中的兩個思路:1)從最小原子的角度對文本進行表征;2)使用局部操作的深度堆疊方式,就是用卷積和pooling操作學習句子的高維表征。深度網絡在圖像處理領域已經取得了很大一部分成功,可以將文本同圖像進行類比考慮,根據屬性的相似性,可以將計算機視覺的方法應用到NLP處理中,優化文本處理模型。
文章閱讀總結
一、文本分類的處理流程
傳統文本分類方法的缺點:文本特征維度高,數據較稀疏,表征能力弱。特征工程這一項需要人來做,耗費成本很高。
拋開傳統的文本處理方法,就目前而言,基於深度學習的思路是本文分類的主流,因為它解決了大規模文本分類面臨的最重要的問題就是特征表示,再利用深度網絡模型自動獲取表征能力后接分類器進行分類,並能夠取得很好的效果,所以就這一塊相融合的方法做梳理。
1)文本數據處理:該過程的目的是將文字信息到數字信息,以供計算機能夠分析處理。拿到一段中文短文本,如果只是對漢字做處理,需要一些手段如正則,將除漢字外的所有字符剔除;再對文本進行分詞操作,目前對文本處理的最小級別詞級別和字級別,通過前人的研究發現,基於詞的模型要遠遠好於基於字的模型,中文分詞很有必要。分詞的結果中會包含有停用詞,一般是將這些沒有實際意義的詞從詞庫中除去,特定領域的工作可以設計停用詞表則會是的數據更清潔,會帶來模型效率的提升。同時,要保持樣本數據的長度一致需要做padding處理,padding的方式論文中的方法也有多種,固定需要的長度,太短的就補足('PAD'),太長的就截斷,或者查找語料庫中文本的最大長度,以該最大長度為標准對其它文本補足。這一塊內容是基礎性的工作,但也是整個過程中重要的步驟,有好多東西可做,如分詞工具的選取(現有的?還是自己做?影響多大?),停用詞表構建,樣本長度的選擇等。
2)詞的分布式表示:word embedding 經過分詞后的數據可以構建一個大的詞表,給詞表中的每一個詞分配一個id,那么,一個文本表示成對應詞的id向量,但一維數據的信息有限,如果擴展至多維就能很好地表中詞與詞的空間距離,鑒於此,采用word2vec構建出每一個文本的word embedding matrix,至此文本通過詞向量的表示方式,把文本數據從高維稀疏的難處理的方式構建成連續稠密數據,使得深度學習算法能發揮作用。這一塊主要是詞向量的構建,包括rand,static,non_static等方式,不同的方式也會影響最終模型的效果。
二、深度學習文本分類模型
1)fastText:最暴力最簡單的分類模型,直接將句子內的詞向量求和取結果
2)TextCNN:應用n-gram思想,捕捉局部序列信息的相關性,利用卷積提取句子中類似n-gram的關鍵信息。整體表現佳,但也存在問題,局部感受野大小是固定的,長時序列特征建模的能力受到限制,而且這個大小需要人為調參,繁瑣且效率不高。
3)TextRNN:我們知道卷積操作的本質是在做特征表達,表征能力很強;但文本屬於時序信號,是上下文信息相關的,那么用RNN來處理文本問題顯得理所應當。RNN及其變體可以捕捉到變長且雙向的n-gram信息。
4)TextRCNN(TextRNN+CNN):兩者的結合,先用RNN提取上下文特征,再用CNN對特征抽取,最后放入到分類器中分類。
5)其它
現今的文本分類模型都是在RNN/CNN的基礎上重構出新的網絡,更多的是用不同的組合方式建立模型,在學術上爭取到1%的提升。並不是網絡結構越復雜,層數越深,效果就越好,要具體到實際的應用,同一個模型在不同的數據集上效果表現差別很大,所以說效果不好並不是代表模型不好,問題可能在其它地方。通過看的這些文章實驗發現,基於CNN的深度學習模型同其它優化方法相比,結果相差不多,其它方法對准確率的提升並不顯著,但從任務來看,一個好的CNN模型就能達到不錯的效果,可以在此基礎上進行模型改進。
文章名:Combining Knowledge with Deep Convolutional Neural Networks
for Short Text Classification
時間:2018
機構:微軟亞洲研究院
摘要:短文本沒有完全的語義信息;短文本的量也是缺乏的;短文本一詞多意,往往表達意思含糊不清。
預訓練中沒有待確認的詞怎么辦。比如:buy apple iphone7,iphone7是一個新詞,既沒有出現在知識庫中,也沒有在預訓練詞嵌入矩陣中,我們要識別他。
模型:知識驅動卷積網絡模型,KPCNN,使用兩個子網絡分別提取詞級別和字級別中的特征。用一個a knowledge base來幫助短文本的理解,首先需要將短文本概念化。
包括兩個分支模型:一個子網絡用於詞和概念的embedding,另一個子網絡用於字符的embedding,這兩個網絡都是卷積網,通過這樣的模型可以從詞和字符級別獲取到豐富的特征。
子網1是個9層網絡,1個輸入層,2個卷積層,2個pooling層,2個全連接層。
子網2也是同樣,只是超參設置的不同。
文章:Hierarchical Convolutional Attention Networks for Text Classification
時間:2018
機構:USA
模型:層次卷積注意力模型
在筆記本上記錄筆記
文章:Random Multimodel Deep Learning for Classification
時間:2018
機構:弗吉尼亞大學
提出隨機多模式深度學習方法:通過該方法發現最好的神經網絡結構和架構,提高模型的魯棒性和精度,這種模型結構可以輸入廣泛的數據類型,包括文本、視頻、圖像,在MNIST, CIFAR-10, WOS, Reuters, IMDB做模型驗證。
當文本被組織成層次化的結構,傳統的有監督多分類方法很難進行有效分類。以下介紹該方法:
該項工作的新穎之處就是,使用多隨機深度模型包括DNN,RNN和CNN,首先描述RMDL的整個框架,之后討論這三種方法在平行語料庫中的訓練,最后在不同的隨機模型中討論多優化技術。
一、特征提取和數據預處理
從文本和圖像兩個來看,文本和序列化的數據集是無結構的數據,而圖像數據集的特征空間是結構化的,這就要處理兩者時要單獨討論,有針對性的處理。
1.圖像和3維目標特征提取。彩色圖像的特征空間:圖像特征:,h:圖像的高度,w:圖像的寬度,c:圖像的顏色(3個維度,RGB)。灰度圖像的特征空間:圖像特征:,顏色的維度為1。一個3維實體在空間上包括n個雲點,每一個雲點有6個特征。
2.文本和序列特征提取。采用詞嵌入方式(GloVe and Word2vec),還有TF-IDF方法。使用文本向量空間模型對特征進行表征,每一個特征200維,表示如下:,第j個文本的詞嵌入矩陣。
二、隨機多模式深度學習模型
特點:新穎,可以使用任何一種數據集進行分類。
從框架圖可以看到,這個模型結合了DNN,RNN和CNN三大網絡模型。在該模型中,網絡的層數和節點數都是隨機生成的。
隨機生成模型的公式:
其中,n是組合模型的個數,是第i個樣本點在第j個模型的輸出預測值。輸出空間使用投票制確定最終輸出的預測值:
對於模型j,的輸出為:,所以每一個模型都有一個預測結果,對這些結果投票輸出。
深度學習的模型是單獨訓練的,訓練好一個。
Hierarchical Deep Learning for Text Classification(面向文本分類的分層深度學習模型)
時間:2017
機構:University of Virginia
現今隨着文檔數量的增加,出現了越來越多的大文本集合,傳統的有監督分類器的在文本分類的任務上性能下降。原因是文檔數量的增加,類別的數量也在增加,增加了分類的難度。這篇文章處理該問題於當前文本分類的方法不同,而是把這個分類問題看作是多類分類問題(multi-class classification),文提出了分類分類的方法,即Hierarchical Deep Learning for Text classification (HDLTex),采用堆疊的深度學習網絡結構,以在文檔層次結構的每個層次上提供專門的理解。就是特征抽取啦,換句話說就是特征抽取的更加好。
自動文本分類有多種方法,決策樹、朴素貝葉斯、SVM、神經網絡、詞嵌入等。決策樹和朴素貝葉斯可以提供更好的解釋性,但分類的精度比其它方法要低。在這些傳統方法中,分類精度高效果好的要數SVM,但SVM很難去解釋,可解釋性差。
目前,采用深度學習的方法要比SVM更要效果好,尤其是在大數據集上,更有前景。可以提供更加靈活的網絡結構,分層分類不僅非常精確,而且可以實現,通過顯示文檔在一個字段或區域內的位置標記,從而更好地理解由此產生的分類。在一定程度上提供了深度學習方法的可解釋性。
文章使用全連接神經網絡構建DNN,構建15種方法比較文本分類的性能。6種傳統分類模型作為基線,其中3種是廣泛用於文本分類的的方法:(1)term-weighted support vector;(2)multi-word support vector machines;(3)naıve Bayes classification:NBC,3種基本的深度學習網絡(DNN,CNN,RNN)作為層次DNN的擴展。
SVM方法
NBC方法:速度快,可解釋性強
特征提取:使用向量空間模型 vector-space model
:文本j的長度,可以理解為詞長。
:文本j的第i個詞的詞向量。
對於DNN模型,使用基於詞頻的TF-IDF特征提取方法,使用N-grams進行特征統計。DNN的特征空間:
模型框架
在該層次結構分類模型中,第二層分類(父)是在第一層分類(子)的基礎上完成的,可以理解成一個層次樹,由根節點散發到多個子節點。第二層的每一個區域都與第一層的結果輸出相連接。類別判定的過程舉例如下:如果經過模型的第一個層次的輸出分類是計算機科學這一類別,根據這一標簽找到對應的二級網絡,並且在該網絡中進行訓練的時候只接受計算機科學類的樣本數據作為網絡訓練數據,繼續訓練並分類。所以第一層次模型的訓練數據是所有數據集,第二層次模型只接受前一層次確定類別下對應的標簽再分類,所以接受的數據是一部分數據。通過這樣的分層結構達到了多分類的目的。
DNN:每一層只接受前一層的輸入,之后輸出到下一層,層與層是全連接。輸入層是提取的文本特征,輸出層每一個節點表示一個分類標簽,如果是二分類僅僅只有一個節點。作為基線DNN。
文章擴展了這個基線結構,以達到分級分類的目的。
模型訓練:標准BP算法,激活函數:sigmoid和ReLu,輸出:softmax化的概率分布
RNN:在RNN網絡中,節點的輸出可以作為輸入重新進入到該層中。因為文本信息具時間依賴,要能有效捕捉語句中時間信息可以很好地對文本進行建模,RNN的網絡特性使其對文本處理有很大的優勢。
公式:
:t時刻的狀態值;:t時刻的輸入
使用權重公式表達:
:循環矩陣權重;:輸入矩陣權重,b是偏置項
改模型在文本處理中具有很大的優勢。RNN在理論上可以記憶前幾時刻的信息,不能保持長時依賴信息,還有梯度彌散問題,為了解決這些,提出RNN的進化版LSTM,有選擇性地對前期信息記憶或者遺忘。LSTM又有多個版本,如下圖:
LSTM具有鏈狀結構,使用多個門來調節進入每個節點的信息,基本LSTM公式:
GRU:
RNN文本分類的網絡結構如下圖:
CNN:RNN會有一個問題,當后面的詞比之前的詞更有影響力時,RNN會有偏見,就會出現問題。為解決這一點,卷積網絡可以通過max-pooling這一層,判定有區別性的短語。盡管CNN的本源是處理圖像問題的,但在文本分類上也取得了不錯的效果。潛在的問題是通道個數和特征空間的大小。
卷積核在固定窗口上滑動,大小通常為3*3,可以叫做特征圖,使用多個卷積核獲取多個特征,卷積層就是進行特征映射。同時,為了減少計算的復雜度,CNN網絡使用pooling的方式降低輸入到下一層的尺寸。最為常用的方法就是就是max-pooling,最pooling窗口中選擇數值最大的那個元素。為了將pooling的結果從堆疊特征圖輸入到下一層,特征圖往往被展平成一列。CNN的最后一層就是全連接了。
分層深度學習模型:
DNN:8個隱含層,每個隱含層有1024個神經元節點
RNN:2個隱含層帶有100個GRU
CNN:濾波器大小:{3,4,5,6,7},max-pool of 5。8個隱含層,層大小{128,128,128},用{5,5,35},max-pool
模型參數:
軟硬件環境:
CPU:E5-2640,32核,64G內存
GPU:英偉達K620,K20c
使用python,CUDA英偉達官方平行計算平台級API。使用Keras核TensorFlow框架搭建神經網絡結構。
實驗結果:
分三個數據集分別測試。RNN在三個測試集的表現最好,之后是CNN,第三是帶有權重的SVM(在前兩個數據集中),最差的是朴素貝葉斯。第三個數據集是三個里面最小的數據集,所以RNN、CNN和權重SVM三個的准確率差異並不大。結果表明,相比傳統的機器學習方法,深度學習方法可以提高文本分類的性能;同時,采用堆疊的層次結構深度學習模型具有更優異的分類性能。