文本分类问题不需要ResNet?小夕解析DPCNN设计原理(上)
歷史回顧
回顧一下圖像和文本的發展史,似乎這就是一場你追我趕的游戲。在上一階段的斗爭中,樸素貝葉斯、最大熵、條件隨機場這些理論完備的統計機器學習模型使得文本分類、中文分詞、NER等諸多自然語言處理問題取得了差強人意(釋義:基本使人滿意。順帶嘲諷一波誤用該詞的媒體們( ̄? ̄))的性能,而這些理論完備的模型卻在圖像分類這種基本的計算機視覺問題上都嚴重碰壁。
?
如今深度學習,或者具體點說卷積神經網絡(CNN),為圖像分類、目標檢測等計算機視覺問題帶來了蛻變式發展。從LeNet、AlexNet等,到Resnet、DenseNet,深層CNN一次次的刷新圖像分類的極限,直至超越人類。但是在文本分類這個簡單的問題上卻遲遲未能等到深層CNN帶來的驚喜。甚至都已經2017年了,依然有paper在討論文本分類問題有沒有必要用深度CNN網絡的問題,并且最后的主要結論是沒啥必要,一層就夠了[1][2]。
?
猜想
出現這個現象的原因有三種,一種是文本分類問題真的已經做的足夠好了(喂喂,真的要這樣欺騙記幾嗎),一種是深度CNN網絡確實不適合文本分類問題(emmmm這就比較憂傷了),還有一種是NLP領域還沒有出現何愷明男神研究出一種適合學習自然語言文本的深度CNN網絡。
?
其實第二種可能性確實讓人比較沮喪,一旦有人說出來,可能就會出現惡性循環,直到有人做出有效的模型才能結束這個sad story。而冷靜看的話,第三種則是很有可能的,最優化理論里有個經典的no-free-lunch(NFL)定理,暗示我們不要試圖找一個解決所有AI問題的通用模型,而要根據具體問題來設計具體的算法和模型。而現有的很多paper的研究卻貌似在忽略這個問題,從而得出一些不太靠譜的經驗性結論,甚至包括一些頂會paper。
no-free-lunch延伸出的公平性比較問題
比如[1]試圖說明文本分類問題里,word-level的模型(注:word-level模型是指以詞為單位,character-level是指以字母/字符為單位)沒必要做深,作者卻拿TextCNN這個專門為文本分類問題設計的淺卷積模型與DenseNet這個為圖像分類問題設計的深卷積模型做比較,發現DenseNet不如TextCNN于是結論說文本分類問題沒什么必要用深層模型的呢,費力不討好的呢。可是親愛的,你可知道no-free-lunch?你可知道一個模型不針對數據集精調超參可有多大性能損失?
?
同樣的,[2]也是做了一個沒有什么意義的嘗試,其作者精心為文本分類問題設計了一個character-level的深度卷積網,包括為其精調參數,卻直接將設計完成的網絡用在word-level的問題上,然后結果發現word-level的模型性能很差,顯得好像word-level的模型是真的不能用深度CNN的哦,如果要用,請切換為char-level哦。看似讓word-level和char-level保持同樣的網絡結構、層數和超參數是為了單一變量,實則恰好無視了no-free-lunch,私以為這樣的比較結果是沒有什么意義的。當然,這篇文章帶來的數據資源以及其他貢獻還是值得肯定的。
在no-free-lunch衍伸出的公平比較問題上,[3]是一篇做的不錯的文章。其通過多維度比較word-level的精心設計的TextCNN模型與char-level的精心設計的VDCNN模型,從而相對謹慎的得出char-level的模型確實沒有word-level模型高效的結論。表1是測試集性能比較。
表1
表2是兩種模型的空間復雜度與時間復雜度的比較。
表2
由此各自的優劣就非常明顯了。
?
那話說回來,文本分類問題中到底存不存在有效的深層word-level模型呢?
最起碼小夕在前面指出了,前人的貶低深層word-level模型的依據都是片面、不可靠的,那么說明文首提到的第二種可能性依然沒有成立,這時第三種可能性的機會來了。
?
2017年的ACL上有這么一篇文章,Deep Pyramid Convolutional Neural Networks for Text Categorization [5],論文中提出的DPCNN是嚴格意義上第一篇word-level的對文本分類有效的深層卷積網絡。這篇文章貌似目前并沒有引起廣泛關注,然而其性能提升卻撩起了小夕的濃厚興趣。
小夕曾經做過相關研究,當時做實驗時首先用的是1層CNN1層全連接的word-level模型,也就是2014Kim[4]的這個俗稱的TextCNN模型,如圖1
圖1
小夕發現TextCNN果然在幾個大規模文本分類數據集上取得了不錯的效果。然而,小夕多次嘗試加深CNN卻發現模型性能總是收效甚微甚至不升反降。當時小夕似乎都要信了[1]的結論,感覺word-level的模型在文本分類問題上太難做深了。雖然覺得不能像[1]那樣直接把DenseNet拿來用,然而并沒有探索出太有效的深層結構。所以認認真真研究了一下這篇文章,并且做了一小部分復現,發現確實是有必要好好體會和總結一下這個網絡的設計思想的。
?
DPCNN一方面在冷啟動和梯度消失問題上借鑒了ResNet中的Highway/Shortcut結構,另一方面讓DPCNN在冷啟動階段去等效為TextCNN,使得其理論上不至于比TextCNN更差,另一方面就是一個巧妙的設計trick將各個block的embedding約束到相似(甚至可能相同)的空間(畢竟文本里的embedding是比較“扁平”的,很可能三四個詞描述的語義完全可以用一個詞替代)。下面詳細介紹這三點。
首先丟上(a)DPCNN與(b)TextCNN(文中稱為ShallowCNN)、(c)ResNet的對比圖,如圖2。
?圖2
嗚,好困哇,堅持了一下還是沒寫完。迷迷糊糊的發現后半部分寫的有點亂,還是從中間截斷,先發引人入勝又戛然而止的前半部分吧~明天補完尾巴再把后半部分重新整理一下再推送哦,啾咪啾咪~
參考文獻
[1] Le H T, Cerisara C, Denis A. Do Convolutional Networks need to be Deep for Text Classification?[J]. arXiv preprint arXiv:1707.04108, 2017. [2] Zhang X, Zhao J, LeCun Y. Character-level convolutional networks for text classification[C]//Advances in neural information processing systems. 2015: 649-657.[3] Rie Johnson and Tong Zhang. 2016. Convolutional neural networks for text categorization: Shallow word-level vs. deep character-level.arXiv:1609.00718 .[4] Kim Y. Convolutional neural networks for sentence classification[J]. arXiv preprint arXiv:1408.5882, 2014.[5] Johnson R, Zhang T. Deep pyramid convolutional neural networks for text categorization[C]//Proceedings of the 55th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers). 2017, 1: 562-570.
總結
以上是生活随笔為你收集整理的文本分类问题不需要ResNet?小夕解析DPCNN设计原理(上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法岗面试前怎样高效刷题?
- 下一篇: 推荐几个NLP出论文的好方向!!