機器學習研究者需要能夠在多久之內復現出一篇paper?
那也得看這個模型本身有多大,訓一次要多久啊。。。
之前還在Face++的時候,由於一直在做一些RNN的工作,然後Gated CNN這篇文章剛一出來,那天早上在公司的郵件組裡面就看到孫劍老師和一眾其他大佬在說這篇文章,然後我突然就被我老闆欽點了去重現這個東西。。。
哇你當著孫劍老師的面就這樣搞我,這不是故意把我往上趕。
然後我就可能花了兩三天的時間來寫這個。One Billion Word數據集太大了訓一次太慢,所以我先拿了一些小的數據集來做,感受到了論文里說的提速效果。後來又去稍微嘗試了一下Billion Word,但是沒有仔細調,沒有達到論文里說的數字。
然後,很可惜,沒有代碼。因為是在公司內部框架里做的。。。後來也沒有時間用Tensorflow或者Pytorch重寫。
後來跟 @岳大禹 交流說到了這個,然後這貨自己用著我的思路去復現了一個,在Github上撈了好多贊。。。
我真是,虧了。
感覺這事有點看運氣,我第一次實現一篇對話系統的論文花了至少一個月,後來就越來越快了,看了論文能馬上抓住重點,不難的話半天可以實現,不過也有碰到打死都實現不了的。比較幸運的是第一次實現的是 msra 的一篇很棒的論文,作者還提供了 theano 的實現,然後我自己實現了 tensorflow 版本的,然後做了各種實驗慢慢地對於模型才有深入的了解。
Neural architecture search, 給你一百年復現去。一邊抄舊版本/相似idea/同類問題下用了同樣結構的開源(工程化實現會修改成自己喜歡的結構),一邊添加新的調味料(新版本的trick)還是很快的,按照這種修改方式我可以在3*12內復現一篇paper(
舊版本的公式基本是直接複製過來,可能是修改一些傳參之類的地方;只對改進的部分有粗略理解;有keras的話以layer的級別在Tensorflow里寫代碼還是很快的;比較費勁的是看懂別人的代碼然後做出適應我們用的版本的tensorflow的修改,要查很多文檔(其實我個人是傾向從零開始寫的,但是那樣太慢了)
一共做過四次這樣的事情:
Mask RCNN -&> Mask^x RCNN(在一個用了Jupyter的opensource的基礎上修改的,大概了解原理,細節沒有深入思考)(3天)
Deeplab v2 -&> v3+(在一個tensorflow 1.4的版本上做的修改,因為ASPP結構,基礎結構和整體結構都發生了較大變化,這個原理比較清楚,公式抄的paper和別的opensource)(3天半)
Encoder-Decoder(起初是為了去提image embedding,直接上keras,輕鬆愉快,調整了一下層數和採樣率)(半天)
Re-ranking Person Re-identification with k-reciprocalEncoding(大概說的是馬氏距離和傑卡德距離做加權求和,得到最終的距離,用來做物品相似性的排序。)(其實後來面試問到我的時候我也不記得這個方法,因為印象不深,當時給我提供的是一些多維向量,然後給了我這個文章讓我寫,我甚至一度沒有明白是幹啥的(甚至整個項目都是我被面試後才逐漸一點點串起來))(半天)
(我認為自己具備了抄代碼和理解簡單原理的能力,但不理解以前沒接觸過的東西……這就是我抄完代碼都不知道原理的借口么QWQ)
。。。怎麼說,這都能跑起來,還能跑出不錯的效果... 我也是.. 囧 運氣好????
第一次復現,搞了接近一個月,實驗結果很差,後來發現文章中描述的方法和他們實驗中使用的方法不一樣,不一樣,崩潰,有這麼寫文章的嗎?第二次復現,發現文章中的實驗結果是在無數次重複實驗中可能出現的最好結果,小概率事件,方差極大,作者們的運氣是有多好...個人的一些看法…
首先現在的文章質量大家都懂,水文章不乏取一次最好的performance就拿來發文章的…甚者編數據不談了…
所以前提是這個文章真的能夠復現(感覺大概一半文章吧
然後題主問到機器學習,個人看法是如果是ML,數學底子好幾天一周是沒問題的。不好的話可能得幾周一個月。
至於深度學習…個人看法不談及特別大的dataset最多兩周差不多了,畢竟很多現在的paper大部分都可以拿現成的framework來做,只要能看懂paper里對原東西改了什麼部分就好
當然談及完美復現出試驗結果…
還是就想想吧(逃
推薦閱讀:
※怎麼撩一個口腔醫學生(醫生)做男朋友?
※鄭博士:大門越寬越招財
※CFD專業博士二年級退學, 有什麼可以選擇的專業可以從事?
※鄭博士:什麼面相的老公最不中用