如何評價今年的 ILSVRC 2014 結果 匿名使用者 1級 2015-01-19 回答

牛都從學術的高度解釋了今年ILSVRC 2014的結果,也就不偷懶地從Engineering的角度談一下。

GoogLeNet和VGG的Classification模型從原理上並沒有與傳統的CNN模型有太大不同。大家所用的Pipeline也都是:訓練時候:各種資料Augmentation(剪裁,不同大小,調亮度,飽和度,對比度,偏色),剪裁送入CNN模型,Softmax,Backprop。測試時候:儘量把測試資料又各種Augmenting(剪裁,不同大小),把測試資料各種Agumenting後在訓練的不同模型上的結果再繼續Averaging出最後的結果。

今年的結果看起來是越深的模型越好(VGG的結果在12月份Revised過的Paper上也是他們最深的模型效果最好)。但是越深的模型訓練所需要的時間越長。VGG的Mode D我在4個GPU上跑了三週多。GoogLeNet的訓練時間看起來會短一些,但是怎樣最佳化記憶體佔用還不是很清楚,所以現在還沒有重複出來的結果(沒有DistBelief啊喂!Princeton的結果看起來還沒有達到GoogLeNet的效果)。

就今年的結果而言,還有幾點在Engineering上不太清楚:

1)。 VGG的模型,如果直接訓練,不用Mode A來初始化,結果會好些嗎,可以用訓練好的幾個Mode E來Averaging嗎?(似乎最近的結果看起來Initialization對結果確實會有一些影響。

2)。 GoogLeNet模型中那些分叉出去的softmax layers到底有效果,還是為了工程實踐上的方便?

3)。 VGG模型前兩層的小reception fields到底有用嗎?還是和GoogLeNet一樣用Matt & Fergus的7x7,5x5在前幾層不影響?(大量的3x3 kernel convolution在前幾層很慢,記憶體佔用也大)。

4)。 從其他人的結果看起來,似乎更多的Data Augmentation是有幫助的,但是在sub-10%的Level,更多的Data Augmentation幫助到底有多大?

5)。 GoogLeNet的最後一層是Average Pooling,大大降低了引數數量,這樣對結果有負面影響嗎?

6)。 大家都用7、8個模型來Averaging,把這些模型distilling到一起的話有幫助嗎?

總結一下的話,今年大家的結果都很好,但是要實用起來還有一段路。

如何評價今年的 ILSVRC 2014 結果 聽雨品茗 1級 2015-01-19 回答

第一次回答此類問題,有不準確的地方敬請見諒。關於ilsvrc的背景知識, filestorm 有一篇很好的文章,值得一讀,我就不再贅敘了,免得我的文筆相形見絀:

從clarifai的估值聊聊深度學習 - 機器視覺x模式識別

今年我們在google提交的結果與去年相比有了很大的提高,並且在classification和detection兩個方向都獲得了最好的結果。不過,話說回來,大家也應該都估計到了今年的結果會比去年好:)個人覺得,更有意思的是“how to get the number“而不是“what the number is”。我從classification和detection兩個track分別聊一下個人的拙見。

classification:與alex在2012年提出的alexnet不同的一點是,我們這次的結果大大增加的網路的深度,並且去掉了最頂層的全連線層:因為全連線層(fully connected)幾乎佔據了cnn大概90%的引數,但是同時又可能帶來過擬合(overfitting)的效果。這樣的結果是,我們的模型比以前alexnet的模型大大縮小,並且減輕了過擬合帶來的副作用。另外,我們在每一個單獨的卷積層上也作了一些工作(“with intuitions gained from the hebbian principle”),使得在增加網路深度的情況下,依然可以控制引數的數量和計算量,這都是一些很有趣的方向。

detection:個人覺得,在detection上最有意思的工作應該是ilsvrc2013以後,jeff donahue和ross girshick(和我在berkeley同一個實驗室的phd學生和postdoc)所發表的r-cnn方法。r-cnn的具體想法是,將detection分為尋找object(不管具體類別,只管“那兒好像有個東西”)和識別object(識別每個“東西”到底是狗還是貓)兩個過程。在第一步,我們可以用很多底層特徵,比如說影象中的色塊,影象中的邊界資訊,等等。第二步就可以祭出cnn來做識別,網路越好,識別率也就越高。今年很多參與detection的組都借鑑了r-cnn的想法。

總的來說,cnn的效果還是很不錯的,但是還是有一些不足的地方:比如說,detection的正確率依然還沒有很高,並且很多時候我們的分類器其實並不一定知道具體的object,它只是學習到了一些場景資訊。比如下圖:

標註資訊是jeep(吉普車),而我們模型的判斷是snowplow(鏟雪車),究其原因,很可能是因為鏟雪車的圖片中有很多雪,而這張照片正好是雪天。所以,分析dnn的具體行為,具體瞭解這些網路中學習到的pattern,進一步糾正在學習過程中的偏差,並提出更加robust的演算法,應該是接下去幾年的方向。當然,從系統的角度說,如何更加迅速地學習這些模型(比如說gpu,大型的機群等等)也很有意思。

順便也要糾正一下在提到cnn的時候經常出現的錯誤:“cnn的引數太多,造成學習困難。”

其實cnn相比較於以前的模型,引數並不見得多:在cnn之前,nec labs採用sparse sift+pyramid pooling的方法取得過ilsvrc的冠軍,在這些模型中,最後線性svm的輸入特徵在160k到260k不等。因為一共有1000類,所以svm的總引數是160m-260m左右。alex 2012年的模型只有60m引數,而我們今年的模型大概只有7m。(補充編輯:這些影象特徵一般都是稀疏的,但是svm的引數並不稀疏。)

所以,其實我們應該說的是,cnn的最佳化是一個非凸(non-convex)的問題,所以才比較困難 :)

同時也要做一下廣告:一直以來我都很希望許多研究工作可以開放原始碼(好多phd應該都有同感吧,讀完一篇paper然後痛苦地實現文中的方法。。。然後老闆很奇怪為啥你花那麼久),去年用decaf/caffe參加比賽,主要也在於推廣一個開源的框架,方便大家做進一步的實驗。r-cnn發表以後,我們在github上公佈了完整的基於caffe的實現,今年很多組都提到使用了caffe或者r-cnn的研究成果,讓我們在berkeley的同事倍感欣慰。今後也希望看到caffe能支援更新的研究工作。

在eccv上我們應該會進一步討論方法細節,所以如果各位參加eccv的話,歡迎參加imagenet的workshop以及caffe的tutorial!很不幸,因為簽證的緣故我沒法去歐洲,痛失一次旅遊的機會 :( 希望各位玩得痛快。