MIT在讀博士心得:做好AI科研,你需要注意什麼?
AI 研究這麼火熱,為什麼我卻只能面對滿天的公式不知所云?書海茫茫,這麼多領域,我該從哪裡開始,又該學些什麼?那些大佬讀本科的時候,論文就可以發頂會,為什麼我現在都讀了一年碩士/博士了,連個科研的邊都沒摸到?我怎麼才能找到適合自己的科研之路?不用擔心,哪怕是 MIT 的博士也會和你有過同樣的心路歷程。
下面這篇文章就是 MIT 博士二年級在讀學生 Tom Silver 的科研經驗談。Tom Silver 是哈佛大學計算機和數學專業本科畢業生,曾有過 Sabeti Lab、Google、Vicarious 等多家知名 AI 實驗室或公司的實習經歷。相信他的科研心得一定能給你一些啟發。
以下內容由人工智慧頭條翻譯:
我朋友馬上就要開始 AI 方面的研究,而我恰好要比他早兩年入坑,所以他最近一直在向我詢問相關的研究經驗。這篇文章就是我對自己兩年研究經驗的總結,其中既有平常的生活感悟,也有研究技巧,希望對讀者朋友有一點幫助。
入門
找一個合適的人問「笨問題」
我最開始做研究的時候常常不敢向同事們請教,害怕提的問題聽起來太不專業,被他們看不起。這種情況一直持續了好幾個月才有所緩解,但我依然非常謹慎,生怕漏了怯。不過現在我已經有了幾個知心夥伴,可以直接和他們討論問題。真希望我可以早一點認識他們!
以前我碰到問題都是直接 Google,滿屏幕的鏈接和資料常常讓我十分迷茫;但現在每當我碰到問題的時候,我就可以直接提出來和大家討論,而不是自己一個人悶頭解決。
在不同的地方尋找研究靈感
決定自己下一步要做什麼可能常常是很多人科研生涯中最困難的一部分。我這裡有幾個科研人員常用的策略:
與不同研究領域的人交流。多詢問他們感興趣的問題,並試著用計算機領域的專業術語來重述這些問題。多詢問他們有沒有想要分析但是用現有技術難以解決的數據集。機器學習中最有影響力的工作很多來自於計算機與生物/化學/物理學、社會科學或純數學之間的碰撞。例如 Matthew Johnson 等人在 NIPS 2016 上發表的論文(Composing graphical models with neural networksfor structured representations and fast inference,https://arxiv.org/pdf/1603.06277.pdf ),就是受一個小鼠行為數據集啟發的結果;再比如 Justin Gilmer 等人在 ICML 2017 會議上的論文(Neural Message Passing for Quantum Chemistry,https://arxiv.org/pdf/1704.01212.pdf ),該工作將機器學習方法應用在了量子化學的研究中。
編寫一份簡單的 baseline 代碼來感受這個問題。例如,嘗試編寫一些控制倒立擺的代碼,並進行仔細地校準,或者試試看能不能在自然語言數據集上實現一個詞袋模型。編寫 baseline 時,我常常遇到一些出乎意料的情況——心智模型(mental model)或代碼中存在錯誤。就算我的 baseline 代碼可以運行了,我通常還會嘗試一些其他的想法,以此對問題有更深的理解。
擴展你喜歡的論文的實驗部分。仔細閱讀那些論文的方法和結果。嘗試找到其中最有價值的部分。首先我們可以考慮一些最簡單的擴展,問問自己:論文中的方法是否適用。然後可以考慮一下文章沒有討論過的 baseline 方法,並想一下這些方法可能會在哪裡失敗。
掌握可視化工具和技能
在寫代碼時,我通常採用的策略是先從創建可視化腳本開始。當寫完其他代碼後,可視化腳本可以幫助我快速驗證代碼是否和心智模型相匹配。更重要的是,和其他方法相比,良好的可視化常常可以讓我更容易發現思維或代碼中的錯誤。還有一點原因就是自我激勵:每當我完成一份代碼時,我都可以拿出一份漂亮的圖表或視頻來向大家炫耀!
當然,針對手頭的問題進行正確的可視化可能還需要一些技巧。如果是迭代優化模型(如深度學習),可以先從繪製損失函數曲線開始。此外還有很多技術也可以用來進行(特別是卷積)神經網路的習得權重的可視化以及解釋,例如導向反向傳播(https://arxiv.org/pdf/1412.6806.pdf )。
在強化學習和規劃中,需要可視化的事情則顯而易見,就是智能體在環境中的行為,比如 Atari 遊戲,機器人任務或簡單的 Grid World(例如 OpenAI Gym 中的環境)。通過不同的設置,我們還可以將價值函數及其在訓練過程中的變化(如下所示)進行可視化,或可視化已遍歷的狀態樹。
在處理圖模型時,對一維或二維變數在推理時分布的變化進行可視化,可以獲得很多的信息(如下所示)。衡量可視化技術有效性的一種方法就是,估計你每次分析可視化時腦海中需要提前掌握的信息量。糟糕的可視化結果會需要你對寫過的代碼進行詳細的回顧,而一個好的可視化結果則會讓結論呼之欲出。
Tensorboard是一個用於Tensorflow深度學習模型可視化的流行GUI
將分布繪製出來作為證據累積,可以使圖模型的調試更容易(來自Wikimedia)。
通過Q-learning習得的價值函數可以在它所代表的Grid World中可視化(by Andy Zeng)。
學會找出研究人員和論文的基本出發點
雖然很多研究人員會在相同的會議上發表文章,使用相同的術語,並都聲稱自己的研究領域是人工智慧,但他們研究的出發點(motivations)卻很可能截然相反。一些人甚至想為這個領域更名來解決問題(Michael Jordan 就在最近的一篇文章中呼籲大家為這個領域更名https://medium.com/@mijordan3/artificial-intelligence-the-revolution-hasnt-happened-yet-5e1d5812e1e7 )。在這個領域,至少可以從三種主要的角度出發,分別是「數學」、「工程」和「認知」。
從「數學」角度出發:智能系統的基本屬性和限制是什麼?
從「工程」角度出發:我們如何才能開發出可以更好地解決實際問題的智能系統?
從「認知」角度出發:我們應該如何對人類和其他動物中發現的自然智能進行建模?
這些出發點並不衝突,AI 領域許多有趣的不管從哪個角度看都非常有意思。此外,個人研究者也常常會受到不同角度的觸動,這有助於 AI 領域的交融。
當然,出發點也可能不一致。我有一些朋友和同事,他們明顯專註於「工程」角度,而另一些人則主要對「生物學」感興趣。如果有一篇文章顯示現有技術的某些巧妙組合可以在 baseline 上超越目前的最優水平,那工程師們就很有可能對這篇文章感興趣,而認知科學家則可能絲毫不感興趣,甚至對其嗤之以鼻。而一篇闡釋了生物可解釋性(biological plausibility)或認知聯繫卻只停留在理論或者沒有嚴肅結果的文章,在這兩種研究者中收到的反響可能就截然相反。
優秀的論文和研究人員會在一開始就說明他們的出發點,但其背後的根本動機則可能隱藏的很深。如果出發點不明顯,我們可以從多個角度對文章進行分析,這會很有幫助。
從研究社區中汲取營養
找論文
在 arXiv 上有大量的 AI 論文,而且可以免費查看。除了論文數量飛速增長,社區中大量的活躍用戶也降低了尋找高質量文章的難度。李飛飛的學生 Andrej Karpathy 建立了arXiv sanity preserver,可以幫助我們對相關文章進行排序,搜索和過濾。Miles Brundage 常常每天晚上在 Twitter 上發布經過精心挑選的 arXiv 論文清單;這項任務大部分都是由Brundage Bot 完成的。很多其他 Twitter 用戶也時不時分享很多有趣的參考資料——我建議大家可以在 Twitter 上關注一些自己感興趣的研究人員。
如果你喜歡用Reddit,那麼可以考慮使用 r/MachineLearning(https://www.reddit.com/r/MachineLearning/ ),但這些帖子往往更適合機器學習工程師而不是學術研究人員。Jack Clark 每周會發布一個名為"Import AI"(https://jack-clark.net/ )的社區新聞簡報,Denny Britz 則有一個名為"The Wild Week in AI(https://www.getrevue.co/profile/wildml)"的專欄。
一些 AI 大會的論文集錦也值得關注。機器學習領域的三大最頂級會議是 NIPS,ICML 和 ICLR。其他會議還包括 AAAI,IJCAI 和 UAI。具體到這個領域的每個子學科,還會有更具體的會議。計算機視覺領域的會議包括 CVPR,ECCV 和 ICCV;自然語言處理領域的會議有 ACL,EMNLP 和 NAACL;機器人領域的會議包括 CoRL,ICAPS,ICRA,IROS 和 RSS;對於更加理論性的工作,可以關注 AISTATS,COLT 和 KDD 這些會議。這些會議是目前 AI 論文發表的主要渠道,當然也有一些期刊。JAIR 和 JMLR 是該領域兩個最重要的期刊。偶爾再高級些的文章也會出現在如 Nature 和 Science 上這樣的科學類期刊上。
查閱經典論文同樣也很重要,但這也更難。那些經典論文的名字常常在很多文章的參考文獻中,或者研究生課程的推薦閱讀書單里。另一種發現經典論文的方法是從該領域的資深教授開始,尋找他們早期的工作,即他們的研究軌跡,也可以通過電子郵件向這些教授請求更多的參考資料(當然,如果他們太忙而沒有回復,也不要介意)。而至於更舊些的文章,谷歌學術搜索關鍵字是一個好辦法。
應該花多少時間來讀論文?
關於人們要在了解以前的研究工作上花費多少時間這個問題,我經常聽到的建議有兩種。第一種,如果你剛剛開始,那麼請閱讀所有論文!人們經常說研究生的第一個學期或第一年應該只讀論文。而第二種建議則是,在對研究領域有了最初的了解之後,不要花太多時間閱讀論文!後者的出發點在於,如果沒有受到以前的方法影響,研究者就更容易用創造性的方式構造和解決問題。
我個人是同意第一點建議,不同意第二點建議。我認為,在確保原創研究時間的前提下,科研人員應該儘可能多的閱讀論文。「如果我不熟悉別人嘗試過的方法,那我更容易設計出一種更加新穎,優秀的方法來解決困難問題。」——這種事情似乎不太可能,而且有些太過傲慢自大。沒錯,用全新的觀點來看待問題是很重要,那些業餘愛好者的故事很多也都是因為他們跳出傳統思維的視角。但身為職業研究人員,我們不能只依賴這種運氣性的成分而不深思熟慮來得到一個問題的解決方案。在研究生涯的絕大多數時間裡,我們都是在耐心地、一步一步地、有條不紊地解決問題。閱讀相關論文則是一種讓我們明白自己所處的研究位置以及接下來要嘗試的方法的高效方式。
當然,在儘可能多的讀論文這件事情上,我需要提醒一下:花時間消化論文與閱讀論文一樣重要。最好是可以先閱讀一些論文,然後仔細記錄並反思每一篇文章,而不是一篇一篇的囫圇吞棗式的閱讀。
交流>> 視頻 > 論文 > 會議演講
想要理解一個陌生的研究歷年,那麼閱讀論文當然是最容易的途徑,但是最高效的途徑呢?不同的人可能會有不同的答案,對我而言,和他人交流(理想情況下,和已經了解自己相關想法的人交流)是到目前最快而且最有效的理解途徑。如果身邊沒有這樣的人,那麼觀看和這個主題相關的視頻——例如這篇論文的作者受邀進行的演講——也是一種非常好的理解方式。當演講者對著現場觀眾進行演講時,他們會優先考慮表達是否清晰易懂,而不是表達的準確性。但在大多數論文寫作中,這兩者的優先順序是相反的。在論文中,字數非常重要(作者不能為了講清楚一個概念而佔用太大篇幅),不準確的背景介紹還有可能讓人認為作者對該領域缺乏了解。最後,簡短的會議演講則通常形式大於意義。當然,演講之後與主講人的交流也是非常有價值的。
謹防炒作
人工智慧領域的成功引起了公眾的關注,也吸引了更多的人進入該領域,這個循環的影響主要是良性的,但也有一個有害的副作用——炒作。媒體總是想得到更多的點擊率;科技公司則希望獲得投資者的青睞,並招到更多的員工;同樣地,研究人員則希望提高自己論文的知名度和引用量,這些都導致了越來越嚴重的炒作現象。所以當我們看到媒體報道或者論文的標題時,要多想一想這些背後的因素,提防標題黨。
在 2017 的 NIPS 會議的一場論文問答環節中,數百名觀眾聽到了一位相當著名的教授(為了反對炒作)拿著麥克風對論文作者的勸告,教授勸告論文作者在標題中謹慎使用「imagination」這個單詞。我對這類近乎公開的反對有著複雜的感受,而且還碰巧很喜歡這篇特別的論文,但我相當理解那位教授的不滿。人工智慧研究中最常見和但也最令人厭惡的宣傳套路之一就是對舊觀念改頭換面,用一個新術語。一定要小心這些流行語——作為一名嚴謹的科研人員,還是應該主要根據其實驗和結果來判斷論文。
科研是一場馬拉松
制定可量化的目標
在早期尋找研究項目時,我曾花費大量時間來進行頭腦風暴。對我來說,那個時候進行頭腦風暴就是把腦袋擱在辦公桌上,獃獃地希望有些模糊的直覺能夠變成具體的見解。結束了一天的頭腦風暴後,我常常會感到疲倦和沮喪。這種生活難道就是科研嗎?
當然,現實中並不存在能讓人立即取得研究進展的秘訣,在黑暗中苦苦摸索是大部分人研究生涯的一部分。但是,現在我發現通過制定可量化的目標,然後規劃工作,可以讓我的科研生活變得更容易並且更充實。在我不知道接下來要做什麼的時候,我經常會儘可能詳細地把自己模糊的想法寫下來;如果在寫下這個想法的過程中,覺得它並不合適,那麼寫下排除該想法的理由(而不是完全廢除這個想法並不再衡量自己的進展)。在沒有任何想法的情況下,我們可以採取閱讀文章或與同事交流。在每一天結束的時候,我的工作終於有了些實實在在的痕迹。即使這些想法從未被使用過,也在很大程度上提高了我的自信。我不用再擔心以後會在相同的想法上浪費時間。
學會認識並避開死胡同
優秀的研究人員會花更多的時間在好的想法上,因為他們在壞主意上花的時間更少。有能力分辨好想法和壞想法似乎主要是經驗的問題。儘管如此,無論什麼水平的研究人員也都經常遇到下面這樣的抉擇。我的研究思路有缺陷或不確定,那麼我應該試著選擇A):進一步挽救或者說繼續這個想法,還是選擇B):完全放棄這個想法呢?我個人後悔把本應該花在B)上的時間花在A)上。特別是剛開始的時候,我曾經很多次陷入死胡同中,並且在那花了很長時間。我不願意放棄的根源可能是由於沉沒成本誤區——如果我放棄這條死胡同,就會白白浪費自己已經花費的時間。
現在我每次放棄一條死胡同時,仍然會感到失望。但我一直在努力告訴自己回溯也是前進的其中一步,這雖然有點反直覺,但我一直在內化這種意識。已經付出的成本是值得的,並沒有沉沒。如果我今天沒有探索這個死胡同,明天就可能會再次鑽進去。死胡同不是結束,他們也是正常的科研生活的一部分。希望這些想法中有一個能被我堅持下去。如果沒有,還有費曼的名言:我們試圖儘快證明自己的錯誤,因為只有這樣我們才能進步。
We are trying to prove ourselves wrong as quickly as possible, because only in that way can we find progress 。―Richard Feynman
動筆!
我曾經有機會向一位非常著名的 AI 研究人員諮詢職業生涯早期的建議。他的建議很簡單:動筆!除了動筆寫博客和論文,更重要的是,每天都要寫下自己的想法。自從聽取了他的建議之後,我就注意到每當我積極寫作而不僅僅是簡單思考的時候,我所取得的進展就會有明顯的不同。
身心健康是做好科研的前提
科研人員在醉心科研時常常廢寢忘食,這是十分危險的表現。我以前常常以這種狀態為目標,並常為自己沒有達到這種狀態而羞愧。我現在明白了(至少在理性層面上),鍛煉和精神休息都是投資,而不是分心。如果我花 8 個小時睡覺和 4 個小時工作,我的工作效率反而會比花費 4 個小時睡眠和 8 個小時工作高。
當然,在一個棘手的問題面前中斷工作可能仍然非常困難。即使當我已經超過疲憊或沮喪的臨界點,並且沒有取得任何實質性的進展時,我也不會休息,而是繼續鑽研。當我終於能夠前進一點,並且可以停下來深呼吸一口氣時,我就總會為我的堅持感到由衷的高興。希望我可以在進入研究生涯下一階段的過程中繼續保持這種幹勁。
原作者:Tom Silver
推薦閱讀:
※怎麼找到男博士做男朋友?
※你對科研菜鳥有什麼發自肺腑的建議?
※有哪些東西是你讀研究生以後才懂的?
※鍾茂森博士:《孝經》研習報告(第七集)
※我要去美國讀公共管理類(公共政策)博士,需要做什麼?