為什麼現在的CNN模型都是在GoogleNet、VGGNet或者AlexNet上調整的?
我看現在很多的模型都是在這幾個模型上修改成的,很少有完全自己創建的模型,當然也可能我的眼界有限。
我想問的是,為什麼現在設計新模型的不是很多呢?畢竟牛人和牛的研究機構還是很多的,是沒有必要,還是比較困難?
更新:如果你覺得這篇回答有意思,也許你對我最近的CVPR"17上發表的比較不同網路可解釋性的工作也感興趣(CVPR 2017 有什麼值得關注的亮點?)。
--------------------------------
這是個挺好的問題。AlexNet(https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf), Network in Network(https://arxiv.org/pdf/1312.4400v3.pdf), VGG(https://arxiv.org/pdf/1409.1556.pdf), GoogLeNet(http://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Szegedy_Going_Deeper_With_2015_CVPR_paper.pdf), Resnet(https://arxiv.org/pdf/1512.03385v1.pdf)等CNN網路都是圖片分類網路, 都是在imagenet上1.2 million數據訓練出來的。由於從這些pretrained網路抽出來的deep feature有良好的generalization的能力,可以應用到其他不同的CV問題,而且比傳統的hand-craft feature如SIFT,bag of word要好一大截,所以得到廣泛應用。目前大部分的high-level vision相關的問題,都是利用基於CNN的方法了。花點時間去了解這幾個核心分類網路的結構和發展,是挺有必要的。
一般來說,某CNN網路在imagenet上面的分類結果越好,其deep feature的generalization能力越強。最近出現蠻多論文,裡面在benchmark上面的比較是自己方法的核心網路換成resnet,然後去比別人基於vgg或者alexnet的方法,自然要好不少。所以對於某個CV的問題,選一個優秀的核心網路作為基礎,然後fine-tune, 已經是套路,這點從ResNet那篇論文的citation的增長就可以看出來。fine-tune的原因一是訓練AlexNet等網路需要imagenet, places等million級別的數據,一般的CV任務都沒有這麼多數據。二是因為pre-trained model本身的feature已經足夠generalizable,可以立刻應用到另外一個CV任務。
至於如何開發出新的CNN分類模型,這就需要積累訓練CNN的經驗和直覺,以及大量的計算資源來嘗試不同的網路結構。一般的研究者和實驗室很難負擔得起。但如果能搞出個如ResNet一樣的牛逼網路,瞬間Best Paper ;), 這也是Kaiming師兄的厲害之處。這裡有個八卦,去年Facebook AI Research裡面Ross Girshick和Piotor Dollar等大牛帶領幾個research engineerintern猛搞COCO challenge, 用上了DeepMask,MultiPath Network等黑科技,可惜最後還是敗北於Kaiming領隊的MSRA。原因是他們的核心網路還是基於VGG,而Kaiming放出大招ResNet。Resnet比起VGG單在imagenet上的分類結果就要好大概50%,這自然是沒法比,甭管怎麼個調參和前端如何好的object proposal,輸得真是心服口服。這裡值得一提的是,Kaiming能提出ResNet,不僅在於他對問題本身深入思考和靈敏的直覺(那篇Dark Channel paper真是直覺的直接體現),也在於他調CNN長期的積累,從spatial pyramid pooling, 到leaky relu, 再到resnet, 中間的確有三年多時間的投入。這裡的後話是Kaiming加入FAIR, 跟Piotr Dollar坐到了一塊。幾個做high-level vision最牛逼的人都在FAIR裡面了,很期待他們接下來強強聯合會做出如何的研究工作。
最後我再梳理下這些網路之間的關係。我個人覺得這幾個網路是這樣演變而來的.
AlexNet - &> VGG: VGG可以看成是加深版本的AlexNet. 都是conv layer + FC layer.
Network in Network -&> GoogLeNet: NIN本身大家可能不太熟悉,但是我個人覺得是蠻不錯的工作,Lin Min挺厲害。GoogLeNet這篇論文裡面也對NIN大為讚賞。NIN利用Global average pooling去掉了FC layer, 大大減少了模型大小,本身的網路套網路的結構,也激發了後來的GoogLeNet裡面的各種sub-network和inception結構的設計.
ResNet:這個網路跟前面幾個網路都不同。我清楚記得這篇論文是在去年年底我去開NIPS的時候release到arxiv上的。當時我開會間歇中看著論文裡面在cifar上面的一千層的resnet都目瞪狗呆了。。。然後再看到ResNet刷出了imagenet和COCO各個比賽的冠軍,當時就覺得如果這論文是投CVPR, 那是絕對沒有爭議的Best paper, 果不其然。好像resnet後來又有些爭議,說resnet跟highway network很像啥的,或者跟RNN結構類似,但都不可動搖ResNet對Computer Vision的里程碑貢獻。當然,訓練這些網路,還有些非常重要的trick, 如dropout, batch normalization等也功不可沒。等我有時間了可以再寫寫這些tricks。
再最後,這裡潛在的一個問題是這些CNN網路都是在ImageNet上面1.2million數據訓練出來的,很難分析是否數據源本身會對CNN造成影響。我和MIT的同事建立了一個10 million級別的場景分類資料庫Places Database (Places2: A Large-Scale Database for Scene Understanding)。Places是除了imagenet另外一個可以train CNN from scratch的圖片資料庫,我們把Places數據和不同pre-trained Places-CNNs都提供下載了。這裡我們還做了些有意思的實驗,比如說合併imagenet和places的數據,訓練hybrid net,其feature也有不同的performance和generalization, 具體見GitHub - metalbubble/places365: The Places365-CNNs和我們的arxiv論文(http://places.csail.mit.edu/places2_arxiv.pdf)。我做了些CNN網路visualization的工作,看這些網路結構裡面到底學到了什麼東西,以及在物體為核心的Imagenet上和場景為核心的Places資料庫上分別訓練出來的結果是否不同,大家可以看看我之前的一篇ICLR"15 paper(https://arxiv.org/pdf/1412.6856.pdf)。隨著object centric task的飽和,我期待在scene understanding方向會有更好的模型和方法出現。
哈哈遇到一個好適合回答的問題。你問為什麼看到現在很多的模型都是在這幾個上面修改的,基礎模型的演進方案Bolei講的非常清楚,我從我在工業界一年多的角度補充幾點,有下面幾個原因
1. 那是因為你看到的大部分是公開的論文,公開的論文需要一個標準的baseline及在baseline上改進的比較,因此大家會基於一個公認的baseline開始做實驗大家才比較信服。常見的比如各種檢測分割的問題都會基於VGG或者Resnet101這樣的基礎網路。而這類型paper很多,就會有種業內只有這幾個模型的錯覺
2. 發表論文的同學多數是在校的phd同學,首先大家有強大的科研壓力和ddl的壓力,時間和精力只允許大家在有限的範圍探索。因此基於vision問題的特性進行各種模型和演算法方案的改進肯定是更有novelty(也是更符合發paper的思路),所以有限的精力就放在了另外的方面而繼續沿用目前VGG/GoogleNet/AlexNet/Resnet這樣的baseline
3. 進行基本模型的改進需要大量的實驗和嘗試,很有可能投入產出比比較小。能做到Kaiming ResNet這樣的工作真是需要大量的實驗積累加強大的靈感,真是偶像。我們大部分人自己的實驗過程,很多之前預想的可能會work的idea經過嘗試可能提升有限(失望臉,沒法畢業怎麼辦)。基於我們今年參與ImageNet的經歷來講,對於深度學習,很大部分可以提升性能的點在於一些對於細節的精確把握。因此你可以看到許多排名靠前的隊伍最後講的關鍵技術點似乎都是tricks。而這樣精確細節的把握是需要大量的時間和計算資源的,往往在學校不可行。因此有大量計算資源的比如香港中文大學,我司商湯科技,公安三所,海康等成績靠前。PS,我們之後會公布我們今年參加ImageNet Scene Parsing比賽拿到第一的技術方案(paper+code+model),實際構成是一些insights(可以寫paper的技術點)加大量的tricks(好像不太容易寫paper)。敬請期待。
4. 如果所有人的目標都是ImageNet/VOC/Kitti/Cityscapes這種標準資料庫拼性能的話,大家會慢慢收斂到比較大的網路,比如你提到的這些。但是實際上也有很多討論不同模型結構和計算性能的文章,拿Kaiming偶像的其他文章舉例(https://arxiv.org/abs/1412.1710,https://arxiv.org/abs/1411.4229),都是分析的很深入淺出的好的文章。但是由於不符合發paper一定要state-of-the-art且可比較的性能的基本法,因此之後follow在這樣的網路結構上繼續做的人就很有限。
5. 在實際的應用場景中,其實是有大量的非標準模型的配置。比如我司在做的人臉關鍵點tracking可以在低端的android手機上達到5ms的運行速度(很差的手機和CPU速度差約50倍,CPU和GPU速度差約10-20倍?。。),基於的也是深度學習的網路;比如我們自己團隊做的人像分割,也可以在PC CPU上達到接近800fps的速度。這些所有的深度學習的網路結構研究,基於的目標是能夠在限制的環境中達到最優的性能,同時會兼顧各種平台不同的優化方案調整網路結構。其中的黑科技非常多,主要是對基礎網路的結構改進,肯定不會是VGG/AlexNet/GoogleNet/ResNet152這種龐然大物。這些技術也是大家在玩FaceU,各種直播平台的貼紙和之後其他的酷炫產品時,已經不知不覺已經享用到的深度學習的成果。不過由於是正在賺錢的產品(也是因為大家非常忙懶的寫paper)暫時沒有對學術界公開這些技術背後的網路結構。不過歡迎大家來實習親自參與和實現這些改變未來的技術~
最後知乎回答一定會變成一個招聘貼,如果大家對使用深度學習改變生活有熱情有實力或者對商湯科技感興趣,歡迎私信勾搭:D謝邀,基本贊同Jianping Shi的觀點。
1. 這些網路都是一些知名的研究機構設計出來的,為領域提供了一個baseline。做深度學習的相關研究,一個很重要的點在於將自己的方法和其他人的方法進行對比。對比的時候就要講究公平性的問題。在ResNet出來之前,多數研究者在基於VGG做相關領域的研究,這樣在相同的網路深度下,就檢驗自身提出的東西的有效性了。還有整個科研界對於VGG、AlexNet、ResNet這些網路有一個基本的認識,你提出的方法在這種baseline下能到什麼樣的效果大家心裡有數,比如在目標檢測這個任務中,基於VGG的網路在COCO上邊最多能做到27%-28%的mAP,而ResNet就可以做到30以上,這樣就便於對比和評價了。再比如一開始用於語義分割的FCN是基於VGG的,ResNet出來之後很容易的變成基於ResNet的,這也側面說明了方法的有效性。
2. 這個領域只有一小部分人是在研究分類的網路結構,其他的應用的研究者,包括視覺、自然語言等更專註於本領域的內部知識,在一個base網路的基礎之上進行修改,以驗證自己方法的有效性。而這些網路正好提供了這樣的baseline,所以何樂而不為呢。自己設計的網路結構有可能也會達到很好的效果,但這就偏離了自己本身的研究點。當然如果一個人足夠厲害,比如這篇文章(YOLO: Real-Time Object Detection),作者完全是自己設計、訓練的網路結構,這也是完全沒有問題的。研究來講,最終的準確率只是追求的一個方面。更重要的,是提供解決問題的一個新途徑、思路或者方法。如果大家都去拼準確率、拼機器、搞更深的模型,這個領域就不會發展到現在這個地步了。另外,很多高校,根本就沒有這種條件來做這樣的事情。
3. 科研與工業應用的區別。科研界基本上都在這些現有的模型的基礎之上做一些改進,而實際的應用中會遇到各種各樣的問題(數據標註、計算資源、效率等)。據我所知,一些機構在實際場景中,都在訓練適合於自己應用的模型,這些模型可以達到相當好的性能。而這些涉及到商業的東西並沒有放出來供大家使用。其實今年新結構也不少,wide resnet,stochastic depth resnet(似乎在imagenet上不work),densenet(這個好像更promising),fractal net等等。。
當然這些要經過不同任務的檢驗才能變為大家通用的。
這個問題真的好巧,剛好最近我在趕論文的間歇,也在整理接觸DL整一年來的零星經驗和體會,冒昧mark一下。
目前(2016-10-29 15:52)排名前兩位的周博士和Shi小姐的答案很棒,分別從學術本身和工業開發兩個角度給了非常靠譜的回答。那我想做的補充是,以一介普通Master student的身份,挖掘一下題主的一些潛在想法,並現身說法一下。(如有唐突,就當我沒說啦啦啦)
1. 所謂「眼界有限」這個點,我想說題主千萬不要這麼想。你能提出來這個問題,足以說明,你花費的時間和精力已經完全夠了,不要再去糾結廣度的問題,不要再去試圖緊跟每一個新的DL點,你會窒息的。抓緊地選取幾個最新的相關的點,深入下去,才是王道。科研和生活一樣,要想進步,先得聚焦,然後攻堅。
1.1. 余以為,DL直接相關的最新的點包括:
(1)DRL;
(2)reasoning;
(3)attention;
(4)transfer。
2. 關於「設計新模型」這個點,我想交流的是,DL從學術內核來講,到底還有多少空間?什麼方向?(1)首先我覺得設計新結構這個趨嚮應該是不太有價值的;
(2)其次關於DL(或者更具體一點說DNN)的數學理論探討,似乎暫時也不是很有必要。記得1969年MLP在數學上被證明能力有限之後曾經第一次走下神壇,陷入十年低谷;現在這一波熱潮,絕不是說理論上煥發,而終究是實驗推進的。Bengio團隊,一年半以前出了很多試圖研究低層數學邏輯的paper,但是目前看來,還是走向了實用比較靠譜(參見Bengio老師最搞的DL創業孵化器);
(3)那麼方向在何方?我比較相信的是:將DNN和Bayesian reasoning,Probability Graph進行有機融合,是值得期許的學術未來。
這也是在一些業內博客中經常被提及的motivation,況且退一步說,演算法終究只是演算法,最終的進步還是要接受來自產業應用的BP training。
換了個模型可能就不work了,多少層,每層的參數都是調參的經驗結果。當然根據已有的模型來開發新模型不會使得結果變得太差。
為什麼?因為深度學習學習的參數灰常多,其中可以手動調整的參數也很多,這使得深度學習和其他的機器學習演算法不一樣。每遇到一個新的任務,必調的肯定有這麼幾個(針對圖像和sgd的話),層的數量,feature的數量,kernel size的大小,學習率等。如果每次遇到一個task,用戶都挨個試一遍得累死了。。這幾個模型都是經典的分類模型。
更重要的是人家在imagenet上訓練好的參數對於分類任務已經很不錯了,遇到一個新的分類問題直接套他們的參數,性能會有極大的提升。因為會被review說人家用vgg做出來的結果你為什麼用resnet,是不是藏著什麼不可告人的秘密。然後一個reject甩你一臉
有些文章是在卷積層結構上做文章,比如Min Lin的Network in Network,Kaiming He的Residual Learning。也有你說的在網路框架上做文章比如AlexNet,VggNet。
1.已經pretrain好的可以公開下載的model多,training代碼也多,這點非常重要!
2.簡單粗暴,調參經驗多。
3.因為都是拿過冠軍的模型,熱度當然要好一些了!
牛人領進門,調參靠個人。現在牛人把研究方向轉向其他更重要的方向了吧,刷imagenet就靠我們自己了,貌似1000類的task都刷暴了。
經典模型是很多實驗驗證過的,好使,穩定。不是專門研究新模型的直接拿來用,直接能解決實際問題。
推薦閱讀:
※隱馬爾可夫模型在金融領域應用前景如何?
※為什麼知乎上很少看到美國CS PhD找大學教職的?
※目前人臉識別技術的挑戰是什麼?
※研究者July在計算機和機器學習領域的水平怎麼樣?
※機器學習該怎麼入門?