1. 程式人生 > >一個博士(機器學習方向)的忠告

一個博士(機器學習方向)的忠告


一個博士(機器學習方向)的忠告

轉載於:https://blog.csdn.net/dengheCSDN/article/details/81877437

原轉載於知乎:https://www.zhihu.com/question/25157730

問題:讀機器學習方向。
發現機器學習演算法比較固定,演算法應用於文字和影象處理。
畢業要求發表級別較高的期刊論文,演算法都已經存在甚至被改進過,
怎麼能寫出自己的東西呢?沒有idea,也就沒有實驗。
怎麼能完成論文呢?
迷茫中。
求指導,謝謝。

謝邀,本來不想回答這個問題,因為作為一個並不成功,畢業捉急,論文扶不上牆的博士生,實在覺得太勉強了。不過這兩天轉念一想,即使是把自己的教訓寫出來,幫助哪怕一位同學少走一步彎路,也算是大功一件,所以拋磚引玉如下,有不妥之處請大家海涵。

題主似乎沒有明確自己是博士生,以下假設為博士生。

1、首先,請以一個局外人的理智角度,對你的導師進行如下分類: 
① 圈內大牛,高水平論文很多,目前自己仍在親力親為參與科研工作,請轉2 
② 簡歷裡面有一些高水平論文,但是似乎並不能算是大牛,請轉3 
③ 其他情況,請轉4

2、這一種情況是比較理想的,個人認為你的關於論文的疑惑,其實可以儘量多和你的導師交流。不說科研這麼大的話題,單單就寫論文來說,其實有很多的技巧和潛規則,與其自己去試錯,不如從導師那裡多取取經。

3、這種情況,自己需要多上心,導師可能因為忙於行政之類的原因不能對你進行直接的指導,那麼自己一定不要放任自流。國內的現實情況,導師手下學生實在太多,絕大多數的事情沒有可能幫你考慮。具體到

機器學習的研究,可以先和導師討論確定一個大致的方向,然後自己尋找一個具體的問題(如果導師一直不能幫你確認大致方向請轉4)。在擬定研究問題的時候,這幾個問題必須有肯定的回答: 
① 你是否可以獲取到最前沿論文中使用的實驗源資料(參照最新會議論文,機器學習領域請參照ICML NIPS AAAI CVPR等) 
② 對於這些實驗源資料,你的計算資源是否能有效承載(例如,只有五年前配置的機器的話,深度學習方向的搞起來會倍加困難) 
③ 對於研究問題本身,以及問題背後的抽象理念,你本人是否認同和喜愛(當你研究一類演算法,如果自己都覺得不喜歡,出idea的速度會明顯變慢) 
④ 該研究問題,近3年的會議和近5年的期刊文章中,是否還有持續出現 
上面這幾個問題,是有效開展一個研究課題的必要(但並非充分)條件。可以看出,和已有的回答一樣,要回答這些問題,要求你必須對這個小問題相關的研究有一個整體的把握,自己動手寫一個survey是比較好的途徑,參考文獻超過100的時候大概算是入門。到那個時候,你自己就會有各種各樣的想法等待實現,當然,這些想法裡面大概有40%不靠譜,有40%是別人做過的,有10%你沒能力做,會轉化成你的論文的就是剩下的10%,不過這些都比較簡單了。

4、【一流大學的同學,以及導師足夠靠譜的同學,就不用向下看了,意義不大】 
如果你發現落到了這樣的情況,自己就一定要警惕了。這種情況對於博士生是極端不利的,稍有不慎就會讓自己未來的幾年極端痛苦(親身經歷)。那麼,我有以下幾點建議: 
① 注意管理時間。即使你是一個努力和注意自我約束的人,你也一定要注意自己的日常科研時間是否被用在了與自己科研相關的事務上。幾個簡單的例子: 
a)大量時間用於做導師的橫向專案,橫向專案與研究課題基本無關或工程性質過強。 
b)在導師的要求下進行類似於資料採集/資料預處理相關的工作內容,並且沒有用到任何具有前沿性的技術。 
c)導師完全不管,自行尋找研究方向但不得其法。 
② 多動手,少學習。這裡所謂的“少學習”指的是,不要因為你要用到的工具包需要使用你從未接觸過的Python語言,就抱著一本python程式設計指南啃三星期。這種“學習”基本上是浪費時間,關於matlab、python、HadoopOpenCV、nltk……這些耳熟能詳工具的使用,請活用官方文件、百度以及google,按照你的需求,邊做邊學即可。 
③ 多和導師訴苦。俗話說會哭的孩子有奶吃,不要覺得自己很厲害很清高就悶著頭自己幹,你的導師也許科研能力不行,但是你要認清現實:只有他可以幫得上你。即使只是給你換一臺效能好的計算機或者大一點的桌子,對你的科研都是促進。 
④ 多寫論文。尤其是在讀博的初期,不要因為擔心論文水平不行就不敢動手寫,正確的做法是,在完成了survey過程後,應該保持持續的論文寫作,只要你超過10天沒有寫論文,就應該給自己亮紅燈。原因如下: 
a)論文是你畢業的籌碼,沒有籌碼,你就什麼都沒有。 
b)論文只要別太爛,寫出來總是能發的,也許被退好多次,也許投低檔次期刊,但都能發。 
c)寫論文是需要練習的,在寫出好論文之前,一般需要寫好多爛論文。 
d)除非你天賦秉異或者英語極好,否則無論你的創新多麼好,單就語言來說,你剛開始寫的英文論文基本上在外國審稿人看來就是狗屁不通。 
e)多被reject幾次,就知道論文該怎麼寫了。 
⑤ 關於題主說到的,感覺各種演算法都被改進過了,不知道從何下手的問題。其實主要還是源自對研究問題和相關方法的不熟悉,並不需要特別擔心坑已經被填完了的問題。你可以去瞄一眼這個論文:Manuel Fern andez-Delgado et.al. Do we Need Hundreds of Classi ers to Solve Real World Classi cation Problems? ,Journal of Machine Learning Research 15 (2014) 3133-3181。裡面對比了用於分類的179種演算法,這些演算法也都是發了論文的,可以說其中大多數在實際上並沒有非常好的應用價值。於是大家不要太緊張,任何一點點小的改進、想法在合理的包裝下都可以是一篇優質的論文。對於題主來說,可以多考慮一些idea的combining,比如有人用方法1解決問題A,有人用方法2解決問題B,那麼我用方法2的思路改進方法1從而更好地解決問題A,這就是能夠出論文的點。 
⑥ 工欲善其事必先利其器。從論文查閱和下載,文獻管理,筆記管理,資料收集和整理,實驗工具,論文寫作流程等各個方面,多優化自己的工作流程,省下來的時間哪怕用來睡覺都是好的。重複上面說過的,請活用百度和google,當然如果你有靠譜的師兄師姐也可以。 
⑦ 多學習。這和上面的②不衝突,這裡說的學習,指的是和你科研能力息息相關的基礎知識體系,而不是如何用python實現你的一個簡單想法。無論是經典的課本(PRML, MLAPP, ESL等)還是經典的公開課(Ng的機器學習,林軒田的機器學習基石+技法),都是需要花時間去學習的。否則你會發現,你以為讀懂了論文,其實你還是不懂,所以你也沒法做出自己的研究。