本菜雞的科研之路已經開始兩三個月了,期間遇到了很多問題,現在想在這里總結一下。
- 在閱讀深度學習論文的時候,首先需要看看代碼是否開源,如果沒有開源應該向作者索要源碼,然后在本地運行這些代碼。這樣做是很有必要的,因為深度學習就是一個玄學,論文里故事編的再漂亮也不能work,因此你需要用代碼來進行驗證論文的正確性。本人在閱讀論文的過程中,發現了一些造假明顯的文章,實驗數據異常,idea不work,向作者索要代碼也不給。
- 在開始學習深度學習的時候,代碼需要自己一行一行的扣,熟悉各種API,這樣才能打好基礎。千萬不要直接拿人家現成的模型就去跑,很多時候是看着簡單,但是很多細節精髓都沒有學到。
- 打好基礎后,我們就需要自己進行相應的實驗了。首先,我們需要確定baseline,首先拿一些基本模型來跑實驗,看看效果。然后挑選相應的模型作為基礎,再來做實驗。注意,這個時候不要自己重頭開始構建代碼,重新開始構建代碼是一個非常耗時間的過程(因為要保證代碼一定正確,不然后續的實驗分析都是錯的),並且最終模型的效果也往往不會有論文中的效果好,有過模型復現經驗的同學,一定知道這點。
- 學會跑人家開源的代碼,這個不是一個簡單的活。第一,github上開源的代碼,不一定是對的,很多時候都有錯誤,這個時候需要自己檢查,一些水文和他人復現的代碼都有bug,這個時候就應該用一些頂會論文的開源代碼,這樣的代碼質量有保證(頂會論文的代碼也不一定是完全正確的,手動滑稽,但學習別人高質量的代碼能夠學到很多東西)。第二,由於深度學習的模型很多,我們需要根據不同框架的代碼安裝不同的環境,這一點很麻煩。並且跑別人的代碼,需要快速找到數據的入口,並且進行相應的修改,這都是有技巧的。
- 在我們跑對比實驗的時候,也需要跑別人的代碼,把數據送入,然后看結果。如果沒有開源,可能還需要自己復現,這個過程耗時且無聊。
- NLP 的風氣很差,很多論文都不開源,這一點上CV要好的多。
- NLP可以進行錯誤樣例分析,這可以說是NLP的優勢之一(滑稽),可以通過人工來看哪些文本分錯了,但是像生物信息和CV就不能這樣做,因為分錯了,人也不能找到原因。