高效的機器學習研究者,應該具備這 6 個習慣

2020-02-18     AI科技評論

作者 | John Schulman編譯 | 叢末、蔣寶尚

一名優秀的機器學習研究員有哪些特質?是碼力超強?還是理論功底一騎絕塵?

碼力和理論固然重要,但是良好的習慣才應該是檢驗是否優秀的唯一標準。

緊跟Arxiv Sanity Preserver的最新研究,讓模型訓練不眠不休,最大限度的利用Stack Overflow.....除了這些,還有哪些是成為高效ML研究者必備的呢?

近日,一位網友在 Reddit 上發帖提問:「高效的機器學習研究者,都有什麼樣的習慣?」對此,不少網友紛紛留言支招,好不熱鬧。

而此前,Open AI 的創始成員之一和研究科學家 John Schulman也專門寫過一篇《機器學習研究指南》,從選擇研究問題的能力到研究驅動力,再到具體的研究方法上,提出了自己的獨到建議。我們先來看:

一、培養選擇正確的研究問題的能力

在機器學習研究中,具備正確選擇研究問題的能力,甚至比你本身擁有的技術能力更重要。而這種能力是通過長時間觀察哪些想法最終成功、哪些觀點最終被遺忘而培養出來的:那些成功的想法可能會發展成為一些領域內新觀點和新進展的基石,而那些最終被忽略的想法可能是因為它們太過複雜或太過脆弱,又或者是帶來的增量進展過小。

這種日積月累的觀察,能夠讓你學習到,哪些觀點是有長遠價值的,哪些觀點可能只能夠「曇花一現」。

對於這種能力的培養,大家可能也在探索一些捷徑,下面這幾種方法可為大家提供一些參考:

第一,閱讀大量的論文,並有批判性地對這些論文進行評價。如果有可能的話,儘可能邀請機器學習領域的出色研究者來共同探討這些論文。

第二,嘗試加入研究主題相似的研究小組,以此汲取他們的研究經驗,並培養良好的團隊協作能力。

第三,在研究問題的選擇上,可以向前輩研究者或其他有經驗的研究者尋求建議。需求他人的建議並不可恥,而當你最終決定好一個正確的研究問題時,你的技能潛力就會被激發出來,並能夠最大程度最好地進行研究。

第四,花點時間思考怎樣的研究才是有用的、能做出成果的,比如問問自己以下幾個問題:

  • 理論在什麼情況下是有用的?

  • 什麼情況下,經驗成果能夠遷移到研究中?

  • 是什麼讓一些觀點能夠被廣泛接受,而另一些卻最終被遺忘?

  • 機器學習領域的未來趨勢是什麼?哪些研究方向有可能會讓其他的研究方向望塵莫及?

其中,第一點至第三點,目的旨在優化你的研究環境以及從其他研究者那裡獲得一些建議、汲取一些經驗,而第四點則要求你自己進行獨立思考。

而第一點從第三點的重要性,想必可以從「幾乎所有帶有衝擊性的、有影響力的工作都是由一小部分的研究團隊和機構做出來的」這一事實得到驗證。這並不是因為這些研究團隊或機構的研究者比其他研究者要更聰明得多,而是因為他們站在「巨人的肩膀」上,擁有更高密度的專業知識和視角,從而能比社區中的其他研究者先行一步。

不過如果你很遺憾無法在這樣的環境中開展機器學習研究工作,也不要氣餒,你也可能通過額外的努力,培養自己的專業能力和獨特的視角,來走在別人的前面。

二、研究由觀點驅動還是目標驅動?

選擇好研究的問題後,一般而言,你可能會通過兩種方式來決定接下來做什麼:

第一,觀點驅動,遵照一些文獻的觀點來開展接下來的工作。如果你正好閱讀到觀點和思路與你接下來要開展的工作一致的論文,那自然是最好。接著你就可以開始一個項目來測試你的想法。

第二,目標驅動,目標是發展一些你希望獲得的新的 AI 技能,與此同時解決一些能夠讓你離最終目標更近一步的問題。在實驗環節,你可以嘗試測試一些文獻中現有的方法,之後基於這些方法提出自己的新的方法來進行優化完善。

當然,這兩種方法並不是互斥的,任何機器學習子領域的研究都不可避免地涉及到一些目標(比如說目標檢測),而所有「觀點驅動」的項目也代表著該子領域發展目標的進展情況,從這個意義上而言,「觀點驅動」的 研究實際上是「目標驅動」的研究的一種實例形式。

而這裡單獨列出的「目標驅動」,指的是個人的目標比機器學習某個子領域的發展目標更明確,強調的是「成為第一個吃螃蟹的人」,而不是基於某項研究進行優化和改善。

從長遠來看,「目標驅動」的研究對大多數研究者而言更具有價值。

「觀點驅動」的研究存在一個很高的風險就是:可能會重複其他研究者的研究工作。世界各地的研究者閱讀的文獻材料都差不多,這讓他們很容易產生相似的想法。而如果想通過「觀點驅動」的研究來做出突破性的工作,就需要對你自己的研究課題建立獨一無二的深度認知,並且能夠以與社區其他研究者不同的視覺來開展研究,有些人可能能做到這樣,但是做到的難度很高。

而另一方面,「目標驅動」的研究下,你的目標本身就能夠給予你區別於其他研究者的獨特視角,並引導你提出別人未曾提出的問題,讓你獲得更大的進展。不僅如此,這種研究方法也會讓你變得更有動力:每天清晨都能夠帶著對實現目標的憧憬起床。這會讓你在起起伏伏的研究持久戰中,更易於堅持下去。

在團隊協作方面,「目標驅動」的研究有助於團隊研究者的協作研究並從問題的不同方面來開展研究工作。而「觀點驅動」的研究由1到2人組成的「團隊」開展,是最有效的。

三、高瞻遠矚,一步一步向目標高峰攀登

有些既聰明又勤奮的人為什麼無法做出好的研究?其中一個重要原因就是,他們研究的問題並不是重大的問題。

當你開始一個研究項目前,你不妨問下你自己:這個問題研究下去的前景有多大?將帶來10%的改進還是10倍的改進?不少研究者常遇到的一大瓶頸便是:正在開展的項目看上去有意義,然而結果卻只能在一些指標上實現小小的提高。

在試圖實現一個更大目標的過程中,增量性的工作(實現10%的改進)是非常有用的。例如,Krizhevsky、Sutskever和Hinton 2012年發表的一篇關於使用卷積神經網絡來分類ImageNet 的開創性論文中,沒有提出任何全新的算法部分,而是在很多方面實現了小的改進,結果實現了前所未有的結果,這在當時讓幾乎每一個人都倍感驚訝(雖然在現在看來,我們認為這沒有什麼)。

在日復一日的工作中,你可能在性能或理解上只取得了一些增量改進,但是不積跬步無以至千里,這些小的改進會推動你朝著更大的目標前進。

如果你打算就一些增量觀點開展研究,需要意識到這些研究工作的有用性取決於它們的複雜度。對基準稍加改進的方法最好是非常簡單,否則幾乎沒有人會願意使用它,甚至你自己都不想使用。舉例來說,如果可以實現10%的改進,最好2行代碼就能做到,而如果能夠實現50%的改進,可以再增加10行代碼。

現在大家不妨回去看看自己的機器學習成果表,你制定的長期研究規劃是否足以實現這些成果呢,如果你還看不到一條通往最終目標的道路,就應該嘗試調整下你自己的規劃了。

四、合理使用筆記本

一旦打算開發機器學習新算法,就必須長期將精力集中在一個問題。強烈建議研究人員有一本專用的筆記本,紙質版的也好,電子版的也可,然後用來記錄每天的想法和實驗。

如果是電子版的筆記本,建議每天創建一個條目,在這個條目中寫下「你正在做什麼「,有什麼樣的想法,以及實驗結果。每隔一兩周做一些回顧,回顧內容包括閱讀所有的日常記錄,包括想法見解、代碼進度、下一步的打算等等。另外需要將這些日常記錄濃縮成一個簡單的摘要。

一些細節也不容忽視,例如在複習過程中隨時補充遺漏的內容,將實驗結果保存在一個統一的位置,便於迅速查看結果。

讓筆記讓更好的監控時間使用,避免因為對想法、線索在時間上的安排不足而使得研究半途而廢。

五、有舍有得,切勿「戀戰」

在機器學習研究中,不可避免的會遇到極具挑戰性的問題,不拋棄,不放棄的精神往往讓你投入過多的時間。但是經驗表明有些問題不管你如何都努力,註定會走向失敗。聰明的做法是適可而止,為自己設定一個「限度」,超過限度就放棄吧。

另外,過於頻繁的切換所研究的問題也會常常導致失敗。典型的表現是:正在為一個想法的實現苦苦掙扎,另一個有希望的突然出現在腦中,然後就轉而「掙扎」這個新想法。

如果機器學習想法很快就能上手嘗試,那就去試一試,初步受挫也不要失望,合理的堅持說不定就能見到曙光。

如何做到合理「捨得」,經驗的做法是藉助筆記本及時回顧項目細節,可能會發現,大部分時間都花在了「產生可交付成果」的項目上,還有一部分時間是花在了半途而廢的項目上。所以,及時複習,清醒的保持研究的一致性和貫徹到底。

另外一個比較有效的策略是:花一些固定的時間預算嘗試那些與工作主線不同的新想法。比方說,每周花一天時間做一些與你的主要項目完全不同的事情。這在滿足「貪婪」的同時,也有助於拓寬知識面。

六、多讀、多寫,教科書是最好的老師

機器學習的每個項目都會帶來新的挑戰,聰明的人都是在做項目的過程中邊學技能邊補充個人背景。為個人發展留出時間,從長遠來看,可以顯著提高進階機會。

具體而言,機器學習研究者都應該分配一部分時間來提高機器學習素養,如果僅僅是謀劃當前的項目,不願花精力提升,那麼在了解了日常工作所需的基礎知識之後,研究者很可能會停滯不前。

當然,待在舒適區很愜意,「站」著不動也花費不了什麼精力。所以,在職業生涯的早期應該盡最大的努力擴大舒適區。閱讀你感興趣的教科書、論文以及復現相關算法。給自己制定合適的進階規劃,通過閱讀一小套的相關論文和教科書逐步提升。

大多數機器學習專業的在校學生在畢業之後很少會花時間閱讀教科書,這是非常不好的習慣,相比論文,教科書的知識更加密集,也更能擴展基礎知識面。一本優秀的教科書往往涵蓋了先關領域近幾十年的思想,並且書中所使用的符號和術語也都比較正規,敘事方式也是徐徐漸進,由淺入深。

除了教科書,相關研究人員的博士論文也是非常棒的學習材料。一般來說ML研究員的博士論文的撰文都有固定的格式:1.研究背景以及前沿問題;2.之前發表的論文(有一種說法是,把之前發表的論文「裝訂」在一起就能寫博士論文了);3.結論和展望。從上面你可以看出,在第一部分和第三部分能夠獲益最多,因為他們包含了對該領域的過去、未來的統一觀察。

課本和博士論文幫你建立了基礎知識,但是要想當時代的弄潮兒,還得讀論文,一篇論文往往集中於最新的一個點,並且具有創新性。通過閱讀摘要,觀察實驗對比,豐富你的創新思維。

如果你是剛開始入坑的研究員,應該多花時間復現論文中的想法,並與自己的實驗方法對比。因為這與被動的閱讀相比,能夠獲得對問題的更深理解,另外,一旦你將最先進的技術復現出來,那麼離超越他可能就只有一步之遙。

除了閱讀開創性的論文並復現它們之外,還應該關注冷門論文。用批判的眼光閱讀,並找到能夠幫助你的點,為你的其他想法打開大門。

Reddit網友支招

https://www.reddit.com/r/MachineLearning/comments/f4oxuj/discussion_what_are_some_habits_of_highly/

關於此類問題的討論,Reddit機器版塊從來都是不甘落後,18個小時熱度已經達到265。在回複評論中很多網友分點評論給出了建議!總的來說有以下幾條:

1. 從早期的試點實驗中獲得洞察力,不要把時間浪費在可能、大概、差不多的想法上。

2. 不要老是懷疑你選擇的損失函數。

3. 和同事多多交流,解釋不清楚的原理直接上手板書介紹。

4. 大多數人都喜歡談論他們的工作。

5. 為感興趣的項目創建代碼項目文件夾,並按照功能進行排序。

6. 學著構建數據集,會清理和排序以及收集。

7. 保持數據分類良好

8. 明白「設計汽車發動機的人往往不是賽車手」,完美才是完善最大的敵人。

9. 在處理棘手問題的時候,可以將其一分為二。

10. 知道什麼時候該偷工減料,什麼時候該堅持到底。

11. 和名人合作,讓名人更加知名,然後讓你也成名。

12. 運氣很重要!

參考來源:

https://www.reddit.com/r/MachineLearning/comments/f4oxuj/discussion_what_are_some_habits_of_highly/

http://joschu.net/blog/opinionated-guide-ml-research.html

文章來源: https://twgreatdaily.com/zh-cn/fc70WHAB3uTiws8Kt8MY.html