萌新誤入AI歧途怎麼辦?MIT博士小哥哥給你指條明路
原作 Tom Silver
栗子 & Root 編譯自 MIT Blog量子位 出品 | 公眾號 QbitAI
做研究,特別是在AI領域做研究,時常挑戰人類的智力極限和心理極限。來自MIT的湯姆,入坑已有兩年,並在坑裡向廣大准同行們發來了傾心打造的攻略,幫助大家在漫漫夜路上,不要迷失自己的方向。
以下為湯姆第一人稱——
我的一個小夥伴啊,終於也要踏上AI研究的不歸路了。他惶惶地問我,兩年前剛入行的時候,有沒有過一些,「如果我懂這個就好了」的東西。
回想這兩年走過的路,我不禁……
為自己感到驕傲。畢竟,身邊的渣渣都已經改行了。
所以,由我來總結一套攻略也是非常合適。大到人生指南,小到技術細節,本篇總有各位需要的章節。
閑言少敘,我要開始bb了,可能停不下來。
菜雞不要方
- 用來回答菜比問題的美妙物種
一開始,我被同事們強大的氣場震懾了,就怕不小心問出什麼暴露智商的問題。過了好一段時間才發現,有那麼幾個人,我在他們面前發問感覺蠻舒服的,不過那時候的問題還是自己精心組織過的。現在,我的「不會就找他」名單里,已經有三四個人了。我只要有問題,就立刻問,困惑才不會積壓。
- 研究靈感需要四處搜刮
想好自己要做什麼,這可能是研究中最困難的一步。你可能需要以下策略:
1. 和其他領域的研究人員面基
看他們對什麼問題感興趣,再用計算機語言重述那些問題。再問他們有沒有需要分析的數據集,傳統方法分析起來費勁的那些。
機器學習領域,許多有影響力的研究都是學科之間碰撞出來的。物化生,社會科學,或者純數學,都可以去試試。
比如,Matthew Johnson和他的基友們發表在NIPS 2016的那篇論文,受到了小鼠行為的啟發。再比如,Justin Gilmer他們在ICML 2017發表的成果,就是機器學習在量子化學裡的應用。
2. 寫個簡單的baseline找找感覺
比如,寫寫用來操控倒立擺的、仔細校準了的代碼,或者看看你能用一個自然語言數據集、把詞袋 (BOW) 模型玩成什麼樣。
我寫基線的時候,就經常出bug。Bug修復的時候,我的腦子裡就有了一些新想法可以去試,對問題的理解也更深刻了。
3. 幫喜歡的論文擴展實驗部分
仔細讀實驗方法和結果的部分。先考慮最簡單的擴展方法,看看論文里的方法夠不夠用。想下文中沒討論過的基線方法,看看它們哪裡不好。
- 可視化工具和技能
我做研究的時候,一個重要的策略,就是從可視化腳本開始。其他部分的代碼都寫完之後,跑一下可視化腳本,我就能迅速看到代碼和我想像的一不一樣。
有了好的可視化,代碼中的問題,和思路的問題,都會更加清楚的顯現,也更好理解。當然,這樣做有一個最直接的好處,就是有視頻可以拿出去秀了。
不過,為自己要處理的問題,找到合適的可視化方法,可能並不容易。如果你正在不斷的迭代中優化模型,繪製損失曲線大概是個不錯的選擇。
還有很多技術,適合給神經網路 (特別是CNN) 中的學習權重做可視化——比如有導向的反向傳播 (guided backpropagation) 。
在強化學習和規劃中,最需要可視化的就是智能體在環境里的表現,不管是雅達利,機器人人物,還是簡單的網格世界。
根據設定的不同,我們或許也可以把價值函數可視化,看它在訓練過程中會發生怎樣的變化。當處理圖形模型的時候,把一維或二維變數的分布可視化,可以獲得許多的信息。
可視化技術有沒有效果,就要看你從裡面能獲得多少有效信息了。如果可視化做的不好,就要回頭去看代碼。優秀的可視化,可以給人直擊靈魂的結論。
- 看出論文和研究人員的原始動機
即便是參加同一個會議,用著同一套術語,並且同樣以「人工智慧」一詞來表述自己的領域,兩個研究人員的出發點可能完全不同。
喬丹甚至提議,可以多起幾個名字,來把這個混沌的領域變得更加清晰。但情況好像也沒有到完全無法理解的地步,AI領域至少還有三個主要的方向——數學,工程,以及認知。
· 「數學」方向研究的是:某個智能系統,它的基本屬性和限制是什麼?
· 「工程」方向討論的是:怎樣開發一些智能系統來解決現實問題,還比其他方法好用?
· 「認知」方向關心的是:怎樣用機器來模擬人類或其他動物的智能?
這些動機是可以和諧共生的,許多AI論文也是包含多重視角的。而且,許多研究人員也不只有一種動機,可能大家原本就是一家人。
不過,就算是一家人,也還是會有分歧。我有一些純「工程」方向的小夥伴,還有一群兄弟對「生物」情有獨鍾。
有一篇論文的結論說,在某個benchmark上,一些現有技術的某種巧妙結合,足以打敗最前沿的技術。
攻城獅可能會為這樣的研究成果而感動,但認知科學家們可能就洗洗睡了。如果是一篇純理論論文,他們的態度就會反過來。
一些優秀的論文和優秀的研究人員,一開始就會表明立場,但多數情況下動機還是被埋沒的。我發現,在論文動機不明顯的時候,站在不同的角度多讀幾遍還是有用的。
坐在巨人的大腿上
- 找論文
AI領域的論文大多都在arXiv,很容易找到。大量的論文排山倒海,讓人在興奮的同時,也有點喘不過氣。於是,有些善良的業內人士,提供了披沙揀金的有效途徑——
Andrej Karpathy建起了」arXiv Sanity Preserver」,幫助大家對論文進行分類篩選,搜索,以及特徵過濾。Miles Brundage以前也經常在推特上,發一些經過輕度炮製的arXiv論文清單,單子大概率是AI列的。
還有很多其他推友,非常樂於分享他們看到的有趣論文。這裡是我可愛的關注列表:
https://twitter.com/tomssilver/following
如果喜歡Reddit的話,當然要關注r/MachineLearning。不過,上面的內容還是更適合吃瓜群眾動手實踐,對於學術研究的幫助可能小一些。
另外,大會上發表的論文是有必要看看的。NIPS、ICML以及ICLR是重中之重,其他有名的大會還包括AAAI、IJCAI和UAI等等。
分方向來說,計算機視覺會議有CVPR、ECCV和ICCV;自然語言會議有ACL、EMNLP以及NAACL;說到機器人,就是CoRL、ICAPS、ICRA、IROS和RSS。要看理論研究的話,AISTATS、COLT和KDD都是不錯的選擇。
目前,參加各大會議是論文發表的主要途徑,不過期刊也是有的。JAIR和JMLR這兩個是AI領域的主流期刊。偶爾也有厲害的論文,登上Nature和Science。
比起新論文,老論文比較難找,但是同樣不可忽視。許多「經典」一直被人們翻出來看,除了出現在引用列表裡,也會出現在研究生課程的閱讀清單里。
還有一個搜尋舊論文的方法,就是從業內某個知名老教授開始,找他過往的研究成果,比如評上教授職稱的時候用到的論文。也可以發郵件給教授,問他們還有沒有更多資料可以參考。不過,要從Google Scholar上找老論文,我還沒有發現太好的搜索方式。
泡在Paper的海洋里
關於花多少時間在讀paper上,常見的兩種觀點是:
1)剛開始,什麼都讀,別挑。很多人都說研一就是讀Paper,其餘啥也別干;2)但過了這個階段,就不要再花那麼多時間在論文上了。
後者的邏輯,是在提出解決問題階段很需要創新的思維,如果這個時候還讀太多Paper容易被帶偏。
我個人覺得,第一個說得,非常有道理。只要有時間,就應該儘可能地多讀paper。
但我diss第二個。
那些認為不必了解其他同行的研究工作,可以閉門自己憋出好方法的人,有點拿衣服。雖然我們時不時會聽到,有些業餘的外行可以想出不錯的辦法,也確實解決了長久以來的問題。
不過我們作為長期從事AI研究的人,不能寄希望於那個「靈光乍現」的瞬間。大部分的時候,問題的解決過程都是非常漫長的。
要搞清楚我們的研究目前處於什麼階段,下一步該怎麼做,閱讀相關的文獻是一個更高效的方法。
這裡推薦閱讀Julian Togelius的《小修小補和真正研究的區別》:
http://togelius.blogspot.com/2016/04/the-differences-between-tinkering-and.html
另外,還要提醒一點。不要一味地追求閱讀的數量,更重要的是把讀過的每一篇論文認真的做筆記,做好反思,深度消化之後,再讀下一篇。不要一個勁地一篇接一篇地讀但不經大腦加工處理。
- 交流>>看視頻>>讀論文>>聽講座
如果要了解一個全新的研究工作,讀文獻是最容易獲取信息的途徑。
但理想的高效方式,我認為,是找機會和在這行做的研究人員聊聊天。
當然,這樣的機會不是經常有。所以看這些人的論文講解直播,也是個不錯的選擇。
一般大家習慣在直播的時候,把自己的工作講清楚,讓受眾儘可能聽得懂;而寫文章的時候,因為要考慮到字數的限制,會追求極簡的行文。對比之下,顯然前者更便於用戶消化信息。
另外大家還有個說不出口的原因:寫文章時介紹太多背景知識,也會顯得自己很弱雞,像是剛入行什麼都不太懂。
為什麼我覺得聽講座的效果最不好呢?
通常來說,講座更多都是走形式,並不是個非常好的學習機會。不過講座完之後,完全可以趁機找主講人聊兩句。
- 警惕名利
成功的AI研究工作,會吸引公眾的關注。這會進一步鼓勵更多的人加入到這個領域,對研究工作來說,是一個非常好的良性循環。
不過負面的影響是,招來無效的媒體曝光。做新聞的人想要更多的點擊量,企業想拉投資和招大牛,做技術的人希望發表更高級別的文章,以及文章被更多的人引用。這些都會製造更大的名利泡沫。
大家要時刻提醒自己,留心所有參與方背後的動機。在文章標題、新聞稿、論文方面要十分小心。
在NIPS 2017的會上,有一個很有名的教授當著幾百個參會人的面,在Q&A的環節拿到話筒之後,指出主講人不應該在論文標題里使用「想像(imagination)」一詞,並強烈地表達了對主講人的不滿。
這篇被質疑的論文,正好是我非常喜歡的。
不過我也非常認同這個教授的觀點。總有人想搞大新聞,把很久以前的工作,冠一個大家沒聽過的新詞,假裝自己在搞新的方向。AI圈裡,這可以說是十分的尷尬了。
所以要警惕那些喜歡玩概念的文章。盡量從實驗和結果的部分,來判斷研究工作的質量。
做好「跑馬拉松」的心理準備
- 讓自己看見可量化的進步
早期尋找研究項目時,我會花大量時間腦暴。我當時傻傻地覺得,腦子裡那些模糊的想法,會自己慢慢生成一個具體的思路。
然後一天下來,我腦子就宕機了。啥具體結論也沒想出來,很受挫。我還一度懷疑自己,這是研究嗎?
研究工作如何取得進展,沒有固定的路徑可循。
不過,我慢慢發現把研究工作分解成更小的可量化的目標,相對來說是更簡單點的辦法。
每當找不著北的時候,我的目標就是:把模糊的想法寫下來,然後找出論據來證明它不可行,而不是敷衍地直接劃掉。
或者當腦子連模糊的想法都沒有時,就把目標定位讀文獻或找同行聊天。
這樣至少一天下來,我可以看到自己實實在在做了些事情,是有推進工作往前走的。即使很多想法難產,我認知上也有很大的收穫。現在排除掉的不靠譜的想法,相當於節省了未來的思考判斷時間。
- 不鑽牛角尖,遇到死胡同早點掉頭
功底深厚的研究人員會把更多時間留在好的問題上。所以學會分辨問題的好壞是一個很強大的技能。
不管是什麼level的研究人員,都會面臨的一個問題是,我的課題思路有缺陷,無法下結論。我是該繼續補救這個課題呢還是直接找不必繼續的理由?
我非常後悔。曾經的我一根筋,即意識到了這可能是一條死胡同,但還是堅持補救,然後耗費了很多時間。對沉沒成本的不甘心,導致了我再這個問題上猶豫不決。執念的力量相當可怕。
最後放棄這個課題,心情悲痛。但我現在有意識地改變自己的認知,放棄死胡同往回退幾步,看起來反直覺,但也算是一種「進步」。
接受失敗也是精神認知上很重要的一課。像提出量子點動力學理論的理查德·費曼說的,「儘早證明自己錯了,才能進步。」
- 最重要的是:寫!寫!寫!
我有次很幸運,遇到一個業內大神。他給我的早期職業建議就是:寫!
寫博客記錄自己的研究歷程,寫論文。更重要的是,記錄自己每一天的思考。自從那以後,我每天都復盤。我很明顯地感覺到主動寫作的收穫,比光在腦子裡想要大得多。
要想研究做得好,還得身體好,腦子好
搞學術的人,總是很忘我。覺得睡覺都浪費時間,也不怎麼注意身體。完全沉浸在追求學術進步的世界裡。
我自己也有這個毛病。但現在理智的我意識到了,養成習慣鍛煉身體和多休息,並不是浪費時間或分散專註力,而是非常必要的投資。
睡4小時對身體是非常不好的,8小時的工作會讓腦子變傻。
但反過來,每天花8個小時睡覺,4個小時工作,我的工作產出效率反而會更高。
我非常理解,在解決一個非常難的問題過程中,很難說做到一半時扔下跑去干別的。我經常都困過點了還死撐著泡在工作里,但沒有取得一點點進展。
現在,我可以做到強迫自己走開來,做個深呼吸放鬆一下自己。我很開心自己做到這個進步,相信這會對我未來的事業有長遠的好處。
善待自己:)
http://web.mit.edu/tslvr/www/index.html
— 完 —
歡迎大家關注我們的專欄:量子位 - 知乎專欄
誠摯招聘
量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復「招聘」兩個字。
量子位 QbitAI · 頭條號簽約作者
?? ? 追蹤AI技術和產品新動態
推薦閱讀:
※機器學習(吳恩達)之學習筆記2--淺層神經網路
※無人駕駛汽車決策規則提取演算法和換道策略匯總
※神經網路是如何學習的(中)
※一個小型的神經網路,特別適合理解神經網路底層原理,不依賴任何神經網路庫