Deep Pyramid Convolutional Neural Networks for Text Categorization 閱讀筆記 === ###### tags: `thesis` [論文連結](https://ai.tencent.com/ailab/media/publications/ACL3-Brady.pdf) ## 1.簡介 本文提出一複雜度低的深度網路架構,並且可以有效抓取長距離的文本訊息。在先前的研究中,這類獲取長距離訊息的模型架構大多非常深,參數量大,造成訓練成本非常高,本文提出的金字塔型架構則降低了許多訓練上的成本。 ## 2.模型架構 ![](https://i.imgur.com/Y2M3IYN.png) 圖中由左至右分別為本文、ShallowCNN、ResNet之網路架構。 模型架構主要分為embedding layer和許多convolution blocks及shortcut連接。 - Embedding Layer: 此處作者將word embedding換成embedding layer的轉換型態,而這裡的region embedding大意是將一個一個區塊的words合併做embedding的轉換,作者在此處提出了三種方法。 - Sequential input:由k個one-hot vectors組成的k-v dimensional concatenation,將k個詞合併在一起做,可以理解為使用捲積核對words做embedding轉換(捲積窗口為k)。 - bow input:將k個文字以bag of word的vector作為input進行轉換。 - bag-of-n-gram input:以n-gram的bag of word形式作為input,舉例來說k為3,則input為此三字的unigram、bigram以及trigram。 綜上所述,可以發現當k=1時,就會是word embedding的形式。 經實驗過後,bow的結果會比sequential好,而bag-of-n-gram在使用監督式學習時會容易過擬合,但在非監督訓練時可以得到很好的成果,因此此處作者採用bag-of-n-gram的無監督式學習。具體方法參考tv-embedding,tv代表two-view,具體作法參考自[此篇研究](https://papers.nips.cc/paper/5849-semi-supervised-convolutional-neural-networks-for-text-categorization-via-region-embedding.pdf)。 - Convolution Blocks:此處的convolutional block由兩層捲積層以及一層池化層為一塊,排序依序為polling layer,conv layer,conv layer。而所採用的pooling方法為步長為2,窗口為3的max pooling,透過這樣的設計,可以得到只有一半size的輸出,且能覆蓋到中間詞詞意。大致概念可參考下圖(白點為pooling作用點,pooling步長為2,窗口大小為3,input為12,output為6)。 ![](https://i.imgur.com/xjdncGT.png) 每一塊conv block完成後會是前一層的一半大小,堆疊後即成為金字塔型形狀,故本論文命名為Pyramid Convolution。 ![](https://i.imgur.com/2Rrd5TM.png) - Shortcut連接:此處的shortcut引用自ResNet,並且採用其優化的版本(pre-activation版本)即${ (W\sigma (x)+b )}$而非${ (\sigma (W(x)+b) )}$。Pre-activation的ResNet shortcut可有效降低訓練複雜度,詳細內容可以參考[Identity Mappings in Deep Residual Networks](https://arxiv.org/pdf/1603.05027.pdf),此文做了許多ResNet變形的實驗,以及成果展示,可以詳細解釋此處使用pre-activation的用意。 總結此模型,主要有三大特色 - 下採樣的之前的feature map(filter數)固定為250,並採用${\frac{1}{2}}$pooling,前者讓shortcut連接不用做維度的轉換,後者則讓實驗參數量大幅減少,且可以捕捉到長距離訊息。 - 使用了pre activation的shortcut連接,在深度的模型上更具優勢。 - 採用region embedding,在長文本中可確實幫助準確率的提升。 ## 實驗 資料集: ![](https://i.imgur.com/K4x2Hbi.png) 實驗結果: ![](https://i.imgur.com/DEboMV4.png) 該圖標示為錯誤率,以本文架構搭配two view的非監督式embedding訓練可以獲得最好的成果。 ![](https://i.imgur.com/ZydSEz7.png) 在訓練時間上,本研究與層數僅一層TextCNN並沒有太大的差距,準確率卻有所提升;而char CNN相較之下則是訓練耗時卻無法得到太好的成果。 ![](https://i.imgur.com/PlmgAAf.png) 以本文模型為基礎的不同變形,在沒有downsampling的情況下訓練時間長且準確率低;而在增加feature map數量的情況下卻不見準確率有提升,且訓練也較耗時,因此作者認為固定feature map數量會是重要的調整。 ![](https://i.imgur.com/fNRGteJ.png) 在小資料集的實驗上,DPCNN並沒有佔到太多優勢,淺層的TextCNN可能就已經非常足夠(不需要獲取長文本訊息)。 ![](https://i.imgur.com/erbdcuA.png) 在不同深度下,DPCNN的訓練時間以及訓練成果,在15層的結構下可以得到最好的實驗結果;而最淺的3層與淺層TextCNN模型在訓練時間上並沒有相差太多,卻大致都可以得到更好的結果。 ## 結論 本研究在長文本的文字分類任務上設立了benchmark,本文主要提出一個深度的金字塔型模型,在長文本上有效地解決了訓練時間過長的缺點,金字塔型的架構也可有效抓取global information。