怎麼看待現在一些論文提出的新點子就只在mnist或者cifar上跑跑實驗?

這些論文如果真的在其他數據集上效果會好嗎?


剛投了一篇基礎網路結構的文章,分享一下我個人的看法。

首先答案是否定的,在 cifar 和 mnist 上效果好的網路不一定在其他數據集上就好,有時候甚至連 imagenet 上效果好的,在實踐中也不一定奏效的。ResNet 後續作品中, ResNeXt, Wide-ResNet, ResNet-In-ResNet, FractcalNet ... 不乏有在 imagenet 上 performance 更好的,但在實踐中踩過坑後,大家仍會偏愛 ResNet。

那為什麼,很多論文的新點子只在 mnist 和 cifar 上跑跑實驗呢?原因有二,第一,很多實驗,尤其是涉及到 train from scratch 和 一些特殊優化方法(比如 bayesian optimization ),mnist 和 cifar 已經是不少的計算量了。譬如我弄的新結構,cifar 100 上 300 epoch 需要 8 ~ 12 小時才能訓練完,而一套完整的實驗大概需要跑 150 組實驗。為了趕上今年的會議,我給實驗室自費添置了 4 塊 1080 Ti,同時從隔壁組借了兩台 server 以及一個 cluster,方才在會議前夕趕完實驗。注意,這只是 cifar 這種級別的小資料庫,而 imagenet,四卡並行下需要 3 ~ 4 天方能訓一個模型。幾十組實驗下來,能負擔得起的實驗室怕是寥寥無幾。

第二,隨著 deep learning 的遍地開花,大家對於 performance 開始不那麼的關注 -- 因為凡是用了 deep 的分數基本不會太差。幾大會議紛紛都開始轉向關注論文本身的 insight,而不是在數值 上一兩點提升。譬如 understanding via influence function, VAE 和 GAN 的早期論文以及最近 hinton 的 capsule ,雖沒有在大規模數據集上跑,但人們絲毫不懷疑這些 idea 的價值。形式上的優美往往意味著理論上的正確,在工程師的努力下跑通大數據集只是時間的問題。而且即便這些 idea 本身真的大數據集上效果不好,那也無妨,因為他們往往能啟發後人設計出更好的演算法。研究本就是一場接力賽,學術界只要保證方向不偏,剩下的留給工業界就好啦。


因為科學的發展不是一蹴而就的。

很多新想法新模型並不是在原來的網路上加層加圈,而是帶進了新的insight。例如Capsule對Pooling的解決,例如VAE和GAN最早的文章,都是在MNIST之類的簡單數據集上做一個簡單的驗證,但都帶進了非常好的idea。一個優秀的idea並不一定要有好的performance才是優秀的idea,而是挖一個新的大坑讓大家往裡跳。所謂最牛的學者挖坑,優秀的學者填坑,進而才可能產生進一步革命性的進步。


我覺得這要看你到底想要做一個什麼的模型。

  1. 如果你做出的模型前無古人,屬於開創性工作,那我認為使用mnist和cifar-10完全沒有問題,因為這類工作主要是提思想,實驗其實是附屬產品,即使這類工作最後可能被驗證是死路,也是對後續工作有一定啟發的。比如DBN相較於當前的深度學習。我相信DBN作為深度學習鼻祖,現在遠不如CNNRNN使用的廣泛,但是誰也不能否認DBN的開創性貢獻。
  2. 如果你做出的論文模型非主流,那麼我認為也沒啥問題。比如我們組的師兄基於PCANet做了一個IOCANet,這種無監督式生成卷積核式而非訓練式的深度學習演算法很小眾。這種非主流決定了做的人很少,也就意味著優化的人也很少,現成的框架和理論也不多,因此面對ImageNet這樣的大規模數據集也很難做到全方位的在實驗效果上超過其餘CNN方法,何況是無監督的。
  3. 然而,假如論文提出的辦法是主流的深度學習演算法,那麼我感覺只跑MNIST和cifar-10就有點牽強了。因為,這類網路模型已經身經百戰,有著良好的實驗基礎和實踐探索,如果在此基礎上的改進反而用這些小數據來驗證,有點殺雞用牛刀之嫌。
  4. 最後,可能是最重要的原因,並不是每一個組的實驗設備都能夠支撐跑ImageNet這樣的數據集的,錢才是最大的致命傷。。。。


我編程的一點點小心得:

一個for循環:

for(int i=0; i&<1000000000; i++) { // 很複雜的邏輯,比較耗時間 }

但是for循環里的邏輯是不是正確不太有把握,那麼就把次數降低點,先迅速跑一次。

for(int i=0; i&<10; i++) { // 很複雜的邏輯,比較耗時間 }


要是都必須在ImageNet上跑,那怕是深度學習就是大公司壟斷了。


不錯了

我還見過跑雙月上面跑resnet的呢【苦笑臉


這說明在ImageNet上效果根本就不好,或者根本不敢做,所以只敢貼在這些簡單數據集上比其他方法提高0.1%的結果,其實所做的工作毫無意義。


其實對於研究者自身來說,在完成一個數據集上的模型的調優後,多跑幾個數據集問題不大,特別是在MNIST, CIFAR-10/100等圖像尺寸差別不大的數據集上,比如Network in Network 在不同的數據集上用的模型僅有參數上的差別。但為什麼不多跑一些呢?我認為有幾種可能:

1.文章本身很水,只是粗暴地改了一下之前的工作,而這些改動本身不會帶來本質上的提升,可能只在一些特定的數據集上有優勢,發論文就只能談這些數據集。

2.趕deadline,有些沒那麼水的論文,由於時間緊,跑完一個數據集差不多就要提交了,自然就只展示一個數據集。

3.設備渣,很多研究生不可能有大實驗室那樣的設施,可能導師買的一塊二手GTX1060就拿來跑了,跑一個數據集都吃力,更別說更多的了。


您在黑hinton的膠囊網路嗎。


我想主要還是因為簡單,換成其他數據集可能就要拋棄這個點子了。。


沒卡,imagenet跑不起


既然提出了新點子,還要聲稱有價值,論文中就要自己給出足夠的證據,這是科學發表起碼的準則。否則,和在知乎發個貼子有什麼區別。當然,如果只是探索性研究,還不能證明點子的價值,可以在討論環節坦率地說明白,也是可以的。像hinton那樣滿世界鼓吹要放棄BP演算法另闢蹊徑,卻搞了那麼一個簡陋的capsule,實在是學界笑柄。就好比聲稱要攀登珠穆朗瑪峰,卻連香山的頂都沒看著,然後說:你們就這樣爬吧,肯定能登上珠峰的。

想個新點子是很廉價的行為,所謂頂會上充滿了各種新點子的水文。難的是提出有價值的新點子。為什麼有人可笑的就認定hinton那個毫無說服力的點子就有價值呢?科學面前大家都是平等的。

新入行的小朋友尤其不要迷信盲從名人,其實你並不比他差,很可能比他強,只是你還沒找到機會向大家證明自己。迷信盲從讓你失掉了客觀判斷和獨立思考的機會,無異於學術自殺。


因為硬體和時間,所以先用cifar之類的小數據集驗證演算法是否work,而且在這類數據集上的做的paper也多,有大量可對比的對象。當然能在imagenet上驗證是更好的。我之前用一張GTX1080強行跑imagenet,一個十八層的模型跑了近三個星期,然後再大的模型也沒法跑。。羨慕那些有好機器的實驗室。


真的很可能是時間不夠了……


主要還是提高把握性吧,畢竟平台越多,潛在問題、漏洞就會越多。


  1. 時間緊迫。發論文,然後畢業,實習,工作
  2. 數據有限,資源有限。
  3. 缺乏思考問題,解決問題的想法。學校裡面的學生,沒有經過實際項目歷練,風格比較學術化,思路局限。

模型跟數據集相關性是很強的。


無非三點,1,時間寶貴。2,論文有思想,但不完善。3,水。


數據集規模小,輸入圖片解析度不高,方便驗證idea。畢竟是挖坑么,要求不要那麼高。不一定都得224x224。不一定都有那麼好的硬體。還有deadline就在那裡,沒時間跑那麼多epoch啊啊啊!

另外很有可能相關演算法都是在這些數據集上做的,這樣就可以偷懶不用復現別人的方法,畢竟不是所有作者都提供可運行的源代碼。

以上就僅限於在學校,如果是在公司那就另當別論了。


因為,從寫的角度說,在有限的時間和精力下,paper在這些dataset上有最好的結果 能看 ,我想這是最直接的邏輯關係。至於方法方案成熟程度、適用性、泛化性、survey程度、未發現的結果和原因等等太複雜要具體分析。贊同不以「難易」區分數據集,不看二元看分布~


前段時間趕會議,由於時間設備有限,都沒用原始ImageNet,而是用官網剛放出來的downsample過的小尺寸版本,

貧窮使我絕望


第一如果在所有數據集上都更好,那很多人就沒飯吃了,可能不是每一個新點子的表現都能達到這樣的表現,但是它是一個新的思考或者說理論集合,未來是會有提升空間的。第二一個新的idea重點是看他的創新性以及對已有問題的解決,不能完全用performance來評判。


首先不一定,這些演算法在小數據集上跑一下證明work 不一定代表在大數據集上也work, 最好是在Imagenet 上證明下,這樣肯定說服力大大提高,paper中的可能性也大

————————————————————————————————————————

但是,誰又有足夠的GPU在ImageNet上跑呢,反正我們組是沒有這個能力,6,7個博士還有6.7個碩士共用4塊K80, 我要說要跑個ImageNet,組會的時候估計別人會打我。。。。。。

so, 首先硬體,也只能在小數據集上跑啦


已經可以普遍代表這一系列的網路了,類比與醫學上用小白鼠做實驗就足夠了


推薦閱讀:

如何評價CVPR best paper simGAN?
如何解讀論文《Generalization in Deep Learning》?
如何開發一個特定領域的自動問答機器人(Chat Bot)?
在人工智慧這麼火的情況下,做程序開發一定要學習機器學習演算法嗎?
機器學習(machine learning)在心理學上可能有哪些運用?

TAG:人工智慧 | 機器學習 | 計算機視覺 | 神經網路 | 深度學習DeepLearning |