在分類任務裡,一個網絡能達到比較好的效果,那麼是其中提feature的卷積層效果比較好呢,還是分類器訓練的比較好?哪個更重要一點呢?
因為我想直接拿預訓練的網絡提的feature做其他的事情,並不是要單純完成分類任務,所以我不確定卷積層提的feature是不是就是我想要的,因此提出這個問題。
機器學習 話題的優秀回答者
這個問題雖然問的很大,但是在細分領域內蠻有意思的(感謝題主你將討論範圍限定在分類,要不然真沒法答了)
正好以前研究過這個問題,基於圖像和文本這兩個經典領域說一下吧。先說感性結論,強特徵數量多但是容易提取的話分類層更重要,反之卷積層更重要。壓榨分類性能的話依然是卷積層更重要。
圖像任務貌似沒什麼懸念,從LeNet,AlexNet到GoogLeNet, ResNet等,卷積層數的加深對模型性能的提升是大家有目共睹的事情,這其中一個很重要的原因就是圖像數據中對於分類描述能力強的特徵往往隱藏的很深,難以直接在原始像素數據中描述。以人臉檢測為例,想像一下手寫一個規則來映射像素值到高level特徵「嘴」的難度。但是,想像一下,如果我們得到了一個樣本的高level特徵,比如特徵向量的每個維度分別描述圖片裡有眼睛,鼻子,嘴的可能性,那麼這時再做人臉檢測的話是不是就容易多了?手寫規則都感覺貌似可以做的不錯(一條簡單粗暴的規則:設置一個決策閾值將各個特徵cast到bool型,然後眼睛+鼻子+嘴=人臉,else=無人臉)。
也就是說,在人臉檢測任務中,強分類特徵隱藏很深但是數量不多,一旦提取到了這些較為有效的特徵,分類就變得異常容易(相對來說)。所以對於圖像分類來說當然是要花大精力去提取這些特徵啊,所以你看,大佬們把卷積層做的這麼深,分類層卻沒太大的變化,懂了吧~(當然,這裡說的眼睛,鼻子,嘴等強特徵不一定能被深度卷積層學習到,但是毫無疑問的是頂層卷積層的神經元一定學到了其他類似的強特徵[1])
文本分類則恰好是對面的世界。試想一下,你要對文本進行情感分類時,文本裡的有效特徵容易get嗎?簡直一想一大把哇,比如「開心」,「好棒」,「難過」,「煩」,「傷心「都是對於分類來說非常實錘的強特徵,基本上只要樣本裡出現了其中一個特徵,就能以非常大的把握決定這個樣本的情感極性。也就是說,文本分類裡的強特徵藏的非常淺,從原始數據裡可以輕鬆描述。但是,這些強特徵也非常之多,情感詞有多少?情感短語呢?是不是覺得數不清哇?數不清就對啦~
但是,拿到一個樣本的一組強特徵後,好不好準確分類呢?對於大部分樣本來說,直接學習每個特徵的權重然後做個簡單的加權就好咯,這確實可以取得非常好的效果,因此樸素貝葉斯這個異常簡單的線性分類器以及2014Kim提出的這個簡單的淺卷積文本分類器[5](俗稱TextCNN)可以在文檔分類任務中取得非常高的性能。如圖1。
但是總有一些描述「隱晦」的樣本,可能明褒暗貶,那這種線性分類器就無力了。怎麼辦呢?
當然是加強分類層呀~讓分類層給每個情感詞的重要性打分!讓分類層去描述中性詞與情感詞的作用關係,讓分類層找出情感詞共現的分類規律,反正我提取特徵的層已經給你把特徵提取出來了哼。
好了口說無憑,近年來已經有不止一篇paper專門研究文本分類裡的卷積層深淺的有效性問題,[2]使用[4]這個簡單的一層卷積+線性分類就已經足以讓文本分類取得非常好的效果了,而作者將DenseNet直接拿來用發現效果很差勁,性能如下表。
[3]類似。同時[4]提出的DAN(Deep Averaging Nets)恰好是指出特徵隨便提取一下(僅使用神經詞袋模型),然後分類層瘋狂加深,則發現可以大幅提升文本語義的描述能力,如圖2。
同時我自己也做了一下相關研究,發現僅使用1層CNN+3層全連接即在大多數文本分類數據集上超過了當時的state-of-art,當時做實驗時首先用的是1層CNN1層全連接,也就是2014Kim[5]的這個經典結構,然後加深CNN卻發現模型性能不升反降,但是加深全連接卻明顯提升,加到3層時提升的效果很顯著,4層又能得到小幅提升,5層出現下降,6層下降明顯。所以在出現提取了大量強特徵的情況時,考慮加深一下分類層還是比較有意義的嘗試。
直到2017ACL上有篇文章提出的Deep Pyramid CNN (DPCNN)[6],才讓人覺得貌似word-level的文本分類模型也是可以做的很深嘛,只不過確實要設計的非常謹慎。DPCNN結構如圖3。
誒?剛不說了強特徵數量多但是容易提取時,CNN沒必要太深,分類層值得加深嘛?
其實這裡是存在一個「職責轉移」的通道的。眾所周知,把分類層做深是計算代價很高、學習效率很低的操作,而卷積層則高效的多。既然加深分類層獲得性能增益的原理是學習特徵之間的關聯與權重,也就是類似於將特徵進行加權以及合併。那麼其實這個過程可以提到卷積層進行。
想一想,如果特徵「不要」和「太好」在文本裡先後鄰接出現的話,那顯然這兩個強特徵可以合併為「不要太好」這個強特徵,類似於「很好」的語義。同樣,特徵之間還可以通過句法關係來進一步合併,只不過這種句法關係可能空間上相隔較遠,需要多疊幾層卷積層才方便捕捉。通過卷積層來進行特徵合併更加接近樣本裡本來的特徵作用關係,因此這種操作在這一層面上反而是比加深分類層更加高效明智的。
也正因為如此,隨便一加深卷積層是容易起反效果的,這時既難以很準確的合併特徵,還可能產生了一堆幹擾分類的噪聲特徵,正如[2]中展現的DenseNet直接從圖像領域拿到文本領域是非常不work的,而經過精心設計的DPCNN[6]就能取得顯著的分類性能提升。我猜這也是為什麼時隔這麼久才在文本分類領域出現一個word-level 「ResNet」的原因吧。
[1] http://www-cs.stanford.edu/people/ang/papers/icml09-ConvolutionalDeepBeliefNetworks.pdf
[2] Le H T, Cerisara C, Denis A. Do Convolutional Networks need to be Deep for Text Classification?[J]. arXiv preprint arXiv:1707.04108, 2017.
[3] Rie Johnson and Tong Zhang. 2016. Convolutional neural networks for text categorization: Shallow word-level vs. deep character-level.arXiv:1609.00718 .
[4] Iyyer M, Manjunatha V, Boyd-Graber J, et al. Deep unordered composition rivals syntactic methods for text classification[C]//Proceedings of the 53rd Annual Meeting of the Association for Computational Linguistics and the 7th International Joint Conference on Natural Language Processing (Volume 1: Long Papers). 2015, 1: 1681-1691.
[5] Kim Y. Convolutional neural networks for sentence classification[J]. arXiv preprint arXiv:1408.5882, 2014.
[6] 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.