如何評價深度學習相關頂級期刊論文難復現的問題?

在本人的研究動作識別過程中,曾多次復現該領域頂級期刊的論文,有些提供了部分代碼,有些則沒有,提供了代碼的,發現有很多過程和論文中描述的相差甚遠,有一些論文和代碼一致了,但是結果也和論文的不一致,請問這在您的研究生涯中是否也曾遇到過?您是如何看待的?怎樣採取有效的措施,提前做出判斷,不浪費更多時間在這些論文上面?


做為入坑強化學習的人,是時候祭出神文: deep reinforcement learning that matters了:https://arxiv.org/abs/1709.06560。復現不出來才是正常的,裡面有一幅圖,表現出同一作者不同時期實現的同一演算法效果差別巨大(而且後寫的是效果差那個哦)。其他方向的類似文章也有很多,知乎有一篇文章總結了各種深度學習勸退文。

曾和一個機械專業的人討論,對方也是要用強化學習應用到機器人控制,並且自己用tebsorflow的c++版本把各種演算法實現了一遍(聽完這些我膝蓋已碎)。和他討論到我無法復現的問題,他給我的建議是把random seed定死,一步一步的跑自己復現的版本和作者公布的版本,一定要讓每一步輸出都一樣。可惜自己太懶了,最後做到效果差不多就算了。


同做視頻裡面的動作識別…

第一次就是去復現tensorflow版本的TSN,因為yuanjun xiong他們開源了caffe的實現,而且文檔寫的很詳細,以為可以很輕鬆實現,結果還是too young,實現了一個多月,結果就是差一點,裡面的trick不深究真的不知道,特別是預處理和data balance,差一點都會影響1-2個百分點的準確率,最後調參調了一個月,在RGB上已經達到caffe的準確率了,但是flow始終差2個百分點,試了很多方法,都沒能復現結果。

後面去復現3D的模型和non-local 順利了很多,直接拿了deepmind的pretrain model轉了checkpoint,很快就復現了結果。non local比較曲折,後面也看到了穩步提升,雖然離原文還是有差距…

大家都知道,模型復現應該是論文復現最簡單的一關,各種各樣的trick才是復現的難點…所以如果作者開源了代碼,就按著改就行,如果沒有,就發郵件問唄,不要臉就行…


先認可這個問題。據一個在BAT實習的同學說,他的主要任務是實現CVPR裡面自己感興趣的工作,結果是大部分工作是重複不出來。尤其在醫學圖像處理領域,大家都以數據保密為由,不公開代碼,而其中的水分可想而知。不過CV裡面一些group的論文是很良心的,在GitHub上面公開的代碼完全可以複習原論文的結果,比如RCNN系列。

再說導致這個問題的原因。根本原因恐怕是科研的方向跑偏了,大家為了發論文而做科研,然後就有了好的就業,funding。如果愛因斯坦,圖靈他們是為了畢業論文要求、為了發論文才去搞研究,恐怕就沒有什麼相對論,圖靈測試了。

最後說如何看待和措施。平常心看待,做科研的水軍越來越多,大家為了畢業、什麼青千等各種計劃。保證自己不這樣做就好了,自己問心無愧,多看提供源碼的文章吧。尤其在DL領域,我實在是絞盡腦汁也想不出來還能編出來什麼花樣來,創新越來越難了。

有了新的體會再來補充。


謝邀。一般關於模型的論文復現還是沒有太大問題的。最近關注CNN壓縮較多,測試了一些方法。由於水平low,復現成功的不多。大致原因就是兩類,一是方法中有些超參數需要微調,可能是沒有get作者的trick;二是可能實現方法就有錯?I really don"t know

(1) low rank approximation

目前實現最好用的就是"Exploiting Linear Structure Within Convolutional Networks for Efficient Evaluation","speeding up convolutional neural networks with low rank expansions"測試VGG的基礎網路做分類、檢測、分割網路壓縮均達到了預期效果。"speeding"這篇文章提出用交替共軛梯度解目標方程,隨後有篇改進的方法"Convolutional neural networks with low-rank regularization"提出了一種閉式解來替代共軛梯度,用了他們開源的代碼,雖然在矩陣分解時用H、V替換W時誤差範數與共軛梯度迭代30個epoch差不多,但是測分類等CNN前向時分解後的精度下降遠比用共軛梯度得到的精度下降高,不知道為啥。之後也試過了tucker-2分解、CP分解等方法,同等壓縮比下精度下降均較大,原因折騰了幾天也沒找到放棄了。

另也實現了孫劍、何凱明大神的一篇文章"Accelerating Very Deep ConvolutionalNetworks for Classification and Detection",方法在cifar10的效果確實不錯。但是用在我們的檢測和分割數據集上效果較差,而且改變對樣本的採樣方式對效果影響較大。還有一個問題,,處理非線性時GSVD在高維情況下不一定有實數解??

(2) quantization

這類方法注意訓練方式一般還是可以達到預期效果的,但是工程量較decomposition較大

(3) pruning

目前只測試了SSL,開源,但是超參數太多,group L1的係數沒找到規則,感覺要調很久。不過structured bayesian pruning貌似不錯

時間有限,後續會嘗試更多的方法。。。


好巧,樓下有同學提到了TSN,恰好我這兩天也在復現TSN和SSN。這兩篇論文的代碼都開源,但是我光是配置環境讓它跑起來就用了好幾天,調參還不知道要多少天。

所以之前有學長告知,寫論文是有周期的,不是說上午有個想法,下午做個實驗,晚上就能發論文的。首先尤其是視頻這塊,主流的雙流網路,你提取光流就得十幾個小時甚至好幾天吧,然後效果可能很差,那麼是idea本身的問題呢還是參數問題啊,從此開始了長達數月的調參。。。不過跑程序的時候可以繼續做別的是,看看論文,水水知乎。

至於樓主提到的復現結果和論文不一致:很正常。。。所以作者一般會提供訓練好的模型,免得你說人家演算法有問題。


在深度學習領域,上來就像重現作者的結果還是很難的。不是因為深度學習理論有多難,而在於深度學習真的是「黑」科技。很多的深層網路設計者 自己也戲稱(自詡)自己是煉丹師(alchemist),而不是化學家。科學是需要實證的,很強調可重現性。這也是深度學習大家詬病的原因。

Anyway,我還是不否定深度學習的魅力的。但是個人認為,要做好深度學習研究工作的重現。你需要「經驗」(老中醫那種)。:)

1、你必須從失敗中學習,不斷摸索。要有這個心態和準備。因為該項黑科技,有太多難以道明的真知灼見。要不斷調整方案重複實驗,不能一撮而就。

2、要有對基礎的深度學習機理有深刻的理解。比如 卷積、池化、記憶、注意等機理,以及深刻理解各類激活函數。從而理解模型設計的精要所在。

3、懂得深度學習在學習和訓練室的很多常用tricks,例如 dropout,初始化技巧,batch normalization 等等。注意梯度消散等問題。對很大數據量,計算設備一定要好,怎麼說也要有一個gpu吧。數據量不夠的時候,複雜度很高的深度模型是出不來效果的。

4、要對基本的統計及其學習理論有很深刻的理解,比如正則化技術等防止過擬合的問題。比如early-stopping為什麼會防止過擬合呢?

5、友情送上最重要的一個訣竅:聯繫原作者,請求經驗!其次,有些東西貌相上就不是好東西。


不是深度學習這個行當的,就是個小透明不知道為啥會被邀。雖然其實我也算做視覺演算法的,論文也會看一些……

這種情況還算蠻常見的吧,寫在論文上的一般來說是理想情況或者說是最終目標,給出的代碼很可能比較初步或者偏想法,有些也是為了一定程度上保密,畢竟自己辛苦研究的東西免費和盤托出這麼美的事兒不是總有嘛。更有意思的是我遇見過有些代碼加了點小竅門,論文上並沒有提卻很管用的情況(實現代碼還不是作者本人寫得哈哈哈)。

如果說是公司做項目,我個人感覺還是要慎用前沿演算法,尤其涉及隨機過程的(因為我個人做工業應用,給出的結果要確定性高,不是說網易雲音樂給你推薦三十首,不對胃口問題也不大的那種……),很可能人家運行和你運行就是不一樣的有出入。如果做研究,那你就得接受這種情況,並且嘗試去解決去探究,甚至發郵件和文章、代碼作者進行探討,或許會有很多新發現也說不定,真的。

至於提前判斷,我想開地圖炮但是忍住了,沒什麼好辦法吧,也不能讓個人成見抹殺了看見好東西的機會啊,只能拿出刷微博刷知乎的勁頭刷論文了。

以上胡言亂語,純探討……


一些可能存在潛在的trick引起的難復現問題肯定是存在的,在另一個角度來看,我覺得可能跟作者風格也有關係。

由於深度學習的結果本來就會出現不同程度的浮動,有些作者比較良心,一個實驗跑了幾十次取了個中值,放在論文上。一般來說,如果論文上給的參數比較詳細的話,這樣我們復現結果不會差很多。

但有些作者,一個實驗也跑了幾十次但是取個最優的放在論文上,這樣我們要想實現出跟他差不多結果甚至比他好的,基本就比較難了,畢竟我們不會為了復現一個東西,向作者那般細心調參。


目前我讀的頂會論文中,只復現了已經給出具體網路結構的論文,都是CNN的,所以包括層數,kernel size,卷積擴張率,輸入輸出數據都給出了。

不過現在大多數頂會論文都在Github上面有代碼給出,不過都是給出的預訓練模型和測試集...

總之,文章給的越具體越能復現。


圈外人有個疑問,為啥偽化生不能復現往往被定義為造假,而這裡沒人懷疑呢


個別paper,一個文章,n份代碼,每份結果不同,運氣好其中一個版本可行,運氣不好自己組裝發現新本,有時運氣更好,改出了超越原版


難復現一般就是因為某些方法真的就是領域相關或大量trick或論文造假。

總之,深度學習越來越變成生物化學一樣的實驗科學了,這也說明我們確實是缺少理論。


感覺問題是 即使是因為超參原因導致的無法復現,也會導致很難評價各種模型及演算法的優劣啊...


深度學習這個領域既要求你有科學思維能力,又要求你有很強的工程能力,所以一般人很難玩得轉。復現的成本較大。。。直接找原作者看看人家給不給你源代碼,一般人家願意給你的就很自信了,復現結果應該沒問題。不願意給的,除非有正當隱私理由,其他就別浪費時間了。。。^_^


所以要看在工程上踩的坑多不多了,很多論文一看思想很容易理解,等到自己工程實現的時候各種坑需要填,比如預處理,調參等等,僅僅是代碼相同還不夠。沒什麼辦法,很多論文的準確率提升也是佔了一部分工程順利的光,不像alexnet這種,屬於框架創新,哪怕你工程能力沒那麼強,也會看到相比傳統辦法的巨大提升


感覺復現頂會的方法還不錯啊。作為菜鳥,其實能復現出來是不錯的。一邊看論文,一邊思考,一邊練馬代碼。。。。。(作為一個小白的觀點哈)


實話的話,

1.復現不出來也要引用人家報告的結果。

2.盡量選大組的工作。

3.可寫郵件問作者。

4.如果是吸引人的工作,大家都會關注以及嘗試復現的,持續追蹤吧。

搞科研的話,不要太在意效果去看工作本身的價值。在工業界的話,還是關注時間沉澱,去粗取精之後的工作吧。


推薦閱讀:

AFM: Learning the Weight of Feature Interactions via Attention Networks, IJCAI 2017
Factorization Meets the Item Embedding: Regularizing MF with Item Co-occurrence, RecSys 2016
論文投稿系列之Cover Letter寫法(一)
蘭德公司推薦的經典論文
ACM CCS 2017 會議每日報道:Day 3 & 4

TAG:人工智慧 | Kinect | 模式識別 | 學術論文 | 深度學習DeepLearning |