「科研」機器學習研究者的養成指南,吳恩達建議這麼讀論文

來源 | 機器之心

作者 | Synced


如何成為一名高效的機器學習研究者,然後在這個領域取得一些成就?在此之前,我們需要養成什麼樣的習慣?近日,一篇發佈在 Reddit 機器學習版塊的帖子引發了眾人的討論。

「科研」機器學習研究者的養成指南,吳恩達建議這麼讀論文

近日,一位網友在 Reddit 上發帖提問:「那些高效的機器學習研究者,都有什麼樣的習慣?」

比如,在 Arxiv 上時時跟進最新的研究,利用睡覺時間訓練模型,以及充分利用 Stack Overflow。其他的呢?

其實,世界上從不缺少優秀的機器學習研究者,也不缺乏好的建議和指南。想要成為一名高效的機器學習研究者,最重要的是要有徹底的自我管理能力和一點堅持到底的決心。

Open AI 的研究科學家和創始成員之一 John Schulman 曾撰寫過一篇《機器學習研究指南》,提供了選擇問題和時間管理方面的諸多建議。在 John Schulman 看來,成功的關鍵在於解決正確的問題,並在這些問題上不斷取得進步,實現持續的個人成長。

「科研」機器學習研究者的養成指南,吳恩達建議這麼讀論文

此外其它很多研究者也有自己獨特的見解,吳恩達在斯坦福 CS230 課程中專門開了一課介紹論文怎麼看、研究怎麼做;Reddit 社區資深研究者對於快速做 ML 產品、高效做 ML 研究都有獨門秘籍。

挑選研究問題

挑選研究問題是需要品味的,可能選擇正確問題的能力比技術技能更重要。隨著研究的深入,我們會慢慢發現研究問題的各種滋味,能快速品味到哪些方法是有潛力的,哪些方法又是根本行不通的。

實際上,對於研究問題的品味,我們有好幾種提升方法:

  • 閱讀大量論文,並認真評論與探討;
  • 成立研究小組,吸收他人研究經驗;
  • 找自身研究者提建議,吸收他人的看法;
  • 花時間思考哪些研究能夠產出成果;

對於最後一點,我們可以自問「理論在什麼時候是有用的」、「實驗結果普遍嗎」、「為什麼一些方法廣泛被採納,其它又被遺忘」。前面三點都是從其它研究者獲得信息,最後則是你自己的思考。

想法與目標,研究的原動力

一般來說,我們有兩種方式來決定下一步研究工作:

想法驅動:如果你看文獻時發現對於「如何處理 X」這個問題有想法,那麼就可以開啟一個項目來測試新想法;

目標驅動:如要想要實現某些 AI 功能,那就要解決實現過程中的各種問題。

這兩種方法並不是相互排斥的,任何領域的機器學習的新想法都與某些目標有關。從某種意義上來說,想法驅動的研究就是目標驅動的一部分。在博客文章中,John Schulman 以目標驅動為例,這意味著你的研究比整個子領域的目標更為具體。John 更推薦這種研究模式,他本人也一直遵循這種目標導向的研究。

值得注意的是,想法驅動的研究有一個缺點,

存在被竊取或竊取其它研究工作的風險。因為各地研究者都在閱讀相同的文獻,很可能我們會產生相似的想法。如果我們想在想法驅動的研究中獲得更多突破,那麼首先需要對研究主題有深刻的理解,並且觀點和其它研究者明顯不同,這是非常難做到的。

目標驅動的研究案例

在博士階段前半部分,目標是讓機器人能夠操作可變形的物體,如嘗試打結的手術機器人以及摺疊衣服的家用機器人。為了實現目標最初的想法是基於從人類示範中學習,於是打算從 RP2 打結的問題開始,而隨之而來的就是各種子問題,其中之一就是軌跡優化,然而我在這個子問題上的工作最終成為這個項目裡最重要以及最有影響力的產物。

在博士階段後半段,我開始對強化學習感興趣,並決定將重點放在機器人運動上,因為目標非常具體所以結果非常令我感到興奮。為了讓 3D 機器人能學習跑步,我將重點放在策略梯度方法上,因為此方法最適合理解以及數學分析,並且可以用上之前做優化的經驗。在次期間,我開發了 TRPO 以及 GAE,併成功實現了 3D 機器人運動的初始目標。

當我正在研究如何使機器人進行運動,並使用策略梯度方法得到了第一個反饋結果時,DeepMind 的團隊在 Atari 上使用 DQN 得出了結果。並且,在得出結果之後很多人便趕潮流,試圖在此之上開發更好的 Q-learning 版本並應用至 Atari 領域。然而,經過對 Q-learning 瞭解之後,我判斷這對我的目標來說並不是一個好方法,所以繼續使用策略梯度,這一堅持使得我做出了 TRPO,GAE 以及後來的 ppo。

目標驅動的研究:將自己定義在通用解決方案中

以目標導向的研究會存在一個陷阱,就是將目標看得太完全化,比如在你擁有相匹配的能力時,你會以最直接甚至無趣的方式去實現該目標,但是這種模式的研究並不能推進你自己在機器學習領域中的發展。你應該將你的研究定義為可以具有通用性以及泛化性並可以嘗試應用在其他問題的解決方案上。

例如,在研究機器人運動時,我儘量避免了將領域信息過度整合到解決方案中,而將問題聚焦在最本質的問題上——目標是在模擬中實現運動,這種方式是通用的並且之後可以實現於其他問題上。再做了一系列特徵工程和獎勵形成後,我小心地在做一些改變及優化,使得這些改變不會較大程度上影響到我正在開發的算法。而現在我正在用遊戲作為實驗平臺,同時確保算法核心思想不是針對特定的設置,以便它同樣也可以很好的應用至機器人技術上去。

志存高遠,一步一步走

在機器學習領域,有時候既聰明又勤奮的人卻無法做出優秀的成果。其主要原因在於,本身研究問題的潛力就不大:到底該任務能有 10% 的改善還是 10 倍的提升?經常會有研究者做看起來很合理,但卻只能小幅度提升某項指標的工作。

在更大的目標下做增量研究(10% 的提升)是最有效的。例如 ImageNet 數據集上的開創性模型 AlexNet,它在 2012 年提出時沒包含任何全新的組件,只是堆積了大量小修正,但它獲得了前所未有的新結果。在日常研究工作中,性能會逐步提升,但所有步驟都應該朝著一個更大的目標前進。

如果想要做增量研究,它們的用處就決定了它們的複雜性。例如提升 10% 的效果,那麼最好只有兩行代碼,如果提升 50%,那麼可以新增 10 行代碼。增量研究的性能提升決定了它能增加的複雜性,不然沒有誰會用你的新方法。

研究是條旅途

研究是一條漫漫長路,在這條路上可能發現新算法、發篇新論文,也可能是直到最後才能知道一個結果。為了在這條旅途中開發新的算法和見解,你需要在很長一段時間內把精力集中在一個問題上。

然而我們並不知道旅途的終點是什麼樣的,因此這個長期的問題解決過程需要培養有效的習慣,從而使你能夠不斷地朝著更好的結果前進。

保持寫筆記的習慣

養成做筆記的習慣非常重要。比如你可以每天創建一個條目,然後記下你這一天在做什麼,有什麼想法,以及有什麼實驗結果。

在每日總結的基礎上,每過一兩週再進行一次回顧性的總結,做好批註:比如實驗結果的分析、一些有價值的見解(可以是自身的靈感,也可以是來自同事和朋友的金句)、代碼進度以及下一步的工作規劃。

這樣做有什麼價值?

一方面,筆記本是幫助你及時記下想法的工具,而且會提醒你在回顧的過程中去補全這個想法,鞭策你去重新思考一些本可能會被遺忘在角落的問題。

另一方面,筆記本就像是一個收納箱

,幫你把實驗結果整理到一起。有些結論很容易忘記,比如哪些超參數很有價值,這時你就可以參考筆記內容。

還有,筆記本能幫你梳理時間利用方面的問題。有時候你可能想「上週我都幹了什麼」,翻翻筆記就能找到答案了。你可能意識到自己需要提升時間管理能力,也可能發現自己過去幾個月裡太過頻繁地轉換不同想法,很容易半途而廢。

關於「換坑」問題

說到這裡,繼續分析一下「切換想法」的問題。一般來說,想要解決一個具有挑戰性的問題,需要花費足夠多的時間和精力。但有時候則很難判定:我是否已經付出了足夠的努力?我該不該換條路去走?

根據經驗來說,過於頻繁地切換想法比呆在原地不動的故障概率更高。不排除會存在具備超強潛力的新想法,但更常見的是失望。如果你回顧筆記內容時,發現自己過去一段時間有相當多的精力都花在完成了一半的項目上,這樣的項目既不能說完全失敗了,但又暫無確定的成果產出。

所以可以採取一種策略,設置固定的時間去嘗試那些新想法,比如每週花一天時間去探索和自己現在所從事項目完全不同的想法,這樣也有利於拓寬知識面。

個人發展

在研究生涯中,無論如何分配時間,你都必須學習很多東西。但從長遠來看,如果你有規律地留出時間專注於個人發展,則能夠更有機會完成出色的工作。具體來說,在從事現有項目的同時,你應該撥出一部分時間來繼續充實機器學習領域的一般性知識。這樣以來,你學到的知識除滿足日常工作所需之外,才不會停滯不前,也不會陷入到所謂的舒適區域。

充實機器學習領域知識的方法很多,主要有閱讀教材書、學位論文和其他論文,並從這些源材料中復現算法。在研究生涯初期,作者建議把時間重新分配在教材書和論文上,重點選擇一部分來消化貫通,同時基於自己感興趣的論文來複現模型和算法。

大多數學生會在結束學校課程之後不再花時間閱讀教材書,作者認為這種做法是錯誤的。與論文相比,

教材書一般以一種更集中的方式來吸取知識。會議論文通常會包含一個主要的新觀點,以及過於簡潔的背景知識部分。此外,在閱讀論文過程中,除了論文觀點本身,你還需要花費更多時間來理解複雜的符號和術語。與論文不同,好的教材書融合了幾十年的思想,並以循序漸進的方式將複雜符號展示出來。此外,除了閱讀引導性的機器學習教材書,你也可以選擇自己感興趣的其他領域書籍。

除了教材書之外,學位論文的閱讀也是必不可少的。對於一些你感興趣的研究工作,你可以閱讀這些研究者的博士論文。機器學習領域的博士論文一般包括介紹性和背景材料、一些過去發表在頂會上的論文以及結論和展望。其中論文的背景材料和結論展望部分通常凝聚了專家編寫的該領域過去和未來的一些統一性觀點,你可能會從中受益。

閱讀教材書和學位論文固然能夠鞏固你的基礎知識,但也需要大量閱讀其他論文來拓展知識前沿。在研究生涯早期,作者建議花大量時間來複現論文中的觀點,並對自己的實現結果與已發表的進行對比

。這樣以來,你不僅會更深刻地理解論文主題,獲得運行實驗的經驗,而且復現已有研究的做法會比進行原始研究更快地獲得反饋。一旦你可以輕鬆復現 SOTA 方法,就有可能超越它。

除了閱讀那些富有創造性的論文並進行復現之外,你也應該關注領域內不那麼突出的論文。以批判的眼光瀏覽閱讀即將發表的論文有助於你時刻跟上領域內的發展趨勢。此外,對於一些廣泛使用併為其他觀點打開大門的觀點,觀察它們之間的依賴圖也有助於你培養自己的閱讀品味。

吳恩達的讀論文建議

在 CS230 課程中,吳恩達對於研究規劃與如何讀論文也提出了他的一些建議。

如果要高效地閱讀論文,吳恩達表示我們想要知道論文的來源,例如 arXiv 或個人博客等。下面,如果我們列出 5 篇待讀論文,那麼吳恩達的習慣是每一篇列一行,表示從 0 到 100 的閱讀進度。最開始我們只需要閱讀每一篇的 10% 左右,如果發現論文 2 不是我們想要的,就終結它。如果論文 3 是重要的,那麼仔細閱讀到進度 100%。

由論文 3,我們可以發現其它相關研究,因此也可以加到論文列表中,例如第 6、7 篇。讀完論文 3 也許會發現論文 4 也非常有意思,那麼結合 4、6、7 繼續閱讀,並記錄閱讀進度。

「科研」機器學習研究者的養成指南,吳恩達建議這麼讀論文

最後,如果閱讀 5-20 篇論文,差不多我們對該領域就有一定的瞭解了。如果高效閱讀 50 到 100 篇論文,那麼對該領域的理解就比較完整了。Ng 的揹包內每天都會帶一個文本夾,裡面的紙質打印論文就是他的論文列表。

那麼具體如何閱讀一篇論文呢,吳恩達表示,從第一個詞瀏覽到最後一個詞,這是最差的方式。一般而言,

我們要多次瀏覽論文,且每一次的目的都不相同。

「科研」機器學習研究者的養成指南,吳恩達建議這麼讀論文

首先第一遍應該只看標題、摘要和圖表,摘要能告訴我們論文講了什麼,而對於深度學習研究工作,很多都能總結成一兩張圖表。第二遍應該繼續看前言、結語和圖表,其它的內容我們可以暫時不管。注意在看前言時,相關研究部分也可以不管,雖然該部分對於理解研究脈絡很有幫助,但第二遍應該需要抓住主要思想。

第三遍閱讀就要縱覽論文主體了,但同時那些耗費時間的數學與推導部分可以暫時跳過,我們掌握整體脈絡與框架就行。第四遍需要閱讀所有的內容,但這時候肯定還會有一些部分不能理解,那麼暫時跳過它們以後再攻堅。

讀論文是做研究的基礎,高效地讀高質量論文又是重中之重。在課程中,Ng 還分享了很多讀論文、追蹤論文的技巧,感興趣的讀者可查看課程視頻:

CS230 Lecture 8: Career advice / Reading papers:https://www.youtube.com/watch?v=733m6qBH-jI

團隊合作也很重要

除了以上 Open AI 研究科學家 John Schulman 提出的一些建議,Reddit 網友也發表了自己關於如何成為高效 ML 研究者的觀點。

一些網友認為團隊合作也很重要,所以應該多與同事進行交流,向他們解釋不理解的觀點或算法,並說明自己嘗試做的東西。這樣以來,你通常會更容易地發現錯誤和潛在問題,你的同事也能提出一些自己的想法。

「科研」機器學習研究者的養成指南,吳恩達建議這麼讀論文

除了學術領域之外,另有網友分享了自己在工業界交付產品時的一些實用方法和建議

  • 為自己感興趣的任何項目創建一個工作代碼項目文件夾;
  • 如果發現一些有趣或類似於你正在研究的東西,嘗試任何已發表的代碼;
  • 在運行 Python 的過程中,你可以利用 pyenv 來輕鬆地避開不同的需求;
  • 如果 repo 起作用,則創建一個標有「起作用」的文件菜單,以方便下次找到;
「科研」機器學習研究者的養成指南,吳恩達建議這麼讀論文

  • 讓自己擅長創建數據集並進行預處理和分類;
  • 收集一些與自己研究類似的數據集;
  • 當更好的代碼出現時,要嘗試使用;當意識到觀點需要改進時,使用已有方法來打磨優化自己的數據集。
「科研」機器學習研究者的養成指南,吳恩達建議這麼讀論文

在機器學習領域,每個人都會有自己的一套研究方法,一些好的建議和做法也並不一定適用於所有人。所以,如果想要成為一個高效的機器學習學習者,認清自己進而摸索出適合自己的道路至關重要。

參考鏈接:

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

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

The End


分享到:


相關文章: