文章1python
Generative and Discriminative Text Classification with Recurrent Neural Networks算法
時間:2017網絡
機構:Google DeepMind架構
生成模型:generativeapp
判別模型:discrimination框架
做者支持生成模型比判別模型具備更加優異的性能,通過生成模型和判別模型的建模給出結論。dom
判別模型使用LSTM的變體(增長了peephole到每個門上,則每個門都會受到上一節點的cell的影響),當給定了文本類別標籤後最大化條件機率:P(y|x;W,V)iphone
生成模型是基於類的語言模型,命名爲共享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、文本分類的處理流程
傳統文本分類方法的缺點:文本特徵維度高,數據較稀疏,表徵能力弱。特徵工程這一項須要人來作,耗費成本很高。
拋開傳統的文本處理方法,就目前而言,基於深度學習的思路是本文分類的主流,由於它解決了大規模文本分類面臨的最重要的問題就是特徵表示,再利用深度網絡模型自動獲取表徵能力後接分類器進行分類,並可以取得很好的效果,因此就這一塊相融合的方法作梳理。
1)文本數據處理:該過程的目的是將文字信息到數字信息,以供計算機可以分析處理。拿到一段中文短文本,若是隻是對漢字作處理,須要一些手段如正則,將除漢字外的全部字符剔除;再對文本進行分詞操做,目前對文本處理的最小級別詞級別和字級別,經過前人的研究發現,基於詞的模型要遠遠好於基於字的模型,中文分詞頗有必要。分詞的結果中會包含有停用詞,通常是將這些沒有實際意義的詞從詞庫中除去,特定領域的工做能夠設計停用詞表則會是的數據更清潔,會帶來模型效率的提高。同時,要保持樣本數據的長度一致須要作padding處理,padding的方式論文中的方法也有多種,固定須要的長度,過短的就補足('PAD'),太長的就截斷,或者查找語料庫中文本的最大長度,以該最大長度爲標準對其它文本補足。這一塊內容是基礎性的工做,但也是整個過程當中重要的步驟,有好多東西可作,如分詞工具的選取(現有的?仍是本身作?影響多大?),停用詞表構建,樣本長度的選擇等。
2)詞的分佈式表示:word embedding 通過分詞後的數據能夠構建一個大的詞表,給詞表中的每個詞分配一個id,那麼,一個文本表示成對應詞的id向量,但一維數據的信息有限,若是擴展至多維就能很好地表中詞與詞的空間距離,鑑於此,採用word2vec構建出每個文本的word embedding matrix,至此文本經過詞向量的表示方式,把文本數據從高維稀疏的難處理的方式構建成連續稠密數據,使得深度學習算法能發揮做用。這一塊主要是詞向量的構建,包括rand,static,non_static等方式,不一樣的方式也會影響最終模型的效果。
2、深度學習文本分類模型
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、特徵提取和數據預處理
從文本和圖像兩個來看,文本和序列化的數據集是無結構的數據,而圖像數據集的特徵空間是結構化的,這就要處理二者時要單獨討論,有針對性的處理。
1.圖像和3維目標特徵提取。彩色圖像的特徵空間:圖像特徵:,h:圖像的高度,w:圖像的寬度,c:圖像的顏色(3個維度,RGB)。灰度圖像的特徵空間:圖像特徵:,顏色的維度爲1。一個3維實體在空間上包括n個雲點,每個雲點有6個特徵。
2.文本和序列特徵提取。採用詞嵌入方式(GloVe and Word2vec),還有TF-IDF方法。使用文本向量空間模型對特徵進行表徵,每個特徵200維,表示以下:,第j個文本的詞嵌入矩陣。
2、隨機多模式深度學習模型
特色:新穎,可使用任何一種數據集進行分類。
從框架圖能夠看到,這個模型結合了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三個的準確率差別並不大。結果代表,相比傳統的機器學習方法,深度學習方法能夠提升文本分類的性能;同時,採用堆疊的層次結構深度學習模型具備更優異的分類性能。