AI博士如何做出有影響力的研究?斯隆獎(jiǎng)得主弟子親身講述經(jīng)驗(yàn)
在研究生期間,很多人經(jīng)常會(huì)迷茫于如何構(gòu)建自身的研究。我們應(yīng)該如何開展研究,才能在已經(jīng)相當(dāng)擁擠的人工智能領(lǐng)域有所作為?
太多人認(rèn)為,長(zhǎng)期的項(xiàng)目、適當(dāng)?shù)拇a發(fā)布和深思熟慮的基準(zhǔn)測(cè)試無(wú)法產(chǎn)生足夠的激勵(lì)作用 —— 有時(shí)候這可能是你快速而內(nèi)疚地完成的事情,然后又要回去做「真正的」研究。
最近,斯坦福大學(xué) NLP 組在讀博士 Omar Khattab 發(fā)布了一篇博文,討論了頂級(jí) AI 學(xué)者們有關(guān)做有影響力研究的思考。
讓我們看看他是怎么說的:
科研的影響力有多種形式,我將只關(guān)注通過開源工作(例如模型、系統(tǒng)、框架或基準(zhǔn)測(cè)試)對(duì)人工智能產(chǎn)生的研究影響來衡量。因?yàn)槲业哪繕?biāo)部分是完善自己的想法,記錄具體的建議,并收集反饋,所以我會(huì)做出較為簡(jiǎn)潔的陳述。如果你有其他的想法,歡迎在評(píng)論區(qū)討論。
首先,以下是指導(dǎo)原則:
- 著眼于項(xiàng)目,而不是論文。
- 選擇合適的、具有較大發(fā)揮空間的問題,可以「挖坑」。
- 提前思考兩步并快速迭代。
- 將你的工作公之于眾,并推廣你的想法。
- 找到方法激勵(lì)自己:這是關(guān)于發(fā)展開源研究的提示。
- 通過新論文繼續(xù)投資你的項(xiàng)目。
- 第五點(diǎn)「關(guān)于發(fā)展開源研究的提示」值得單獨(dú)寫一篇更長(zhǎng)的文章。我可能會(huì)在下一篇文章中寫到。
著眼項(xiàng)目
而不是論文
這是一個(gè)至關(guān)重要的思維,其他的一切都基于此。
剛?cè)腴T的學(xué)生會(huì)非常重視發(fā)表他們的前幾篇論文。這是合理的:這是你學(xué)習(xí)進(jìn)行研究、探索初始方向和證明早期進(jìn)展的方式。但這是一個(gè)你最終必須離開的階段:從長(zhǎng)遠(yuǎn)來看,你的成就和成長(zhǎng)不太會(huì)取決于單純的論文數(shù)量,而更多地取決于你的影響力和你傳達(dá)的總體研究脈絡(luò)。
不幸的是,太多的博士生認(rèn)為大多數(shù)可能產(chǎn)生影響的行為都是「不激勵(lì)的」。這讓我很困惑,直到我意識(shí)到他們的意思是這些行為可能會(huì)減慢你發(fā)表下一篇論文的能力。但你如此迅速地發(fā)表下一篇論文的能力并不那么重要。
我建議你不要把你的工作看作一系列孤立的論文,而是問問自己:你將要領(lǐng)導(dǎo)的更大愿景,那么其中子領(lǐng)域或范式是什么?你的工作想要帶來什么不同?因此,你將發(fā)表單篇論文來探索并建立基準(zhǔn),而更大的愿景應(yīng)該是你有意迭代的東西。它需要比論文所承載的大得多,而且肯定是尚未完全解決的問題。
要想實(shí)現(xiàn)這一點(diǎn),一種方法是圍繞你在開源領(lǐng)域中維護(hù)的連貫工件(如模型、系統(tǒng)、框架或基準(zhǔn))構(gòu)建一些研究論文。這種策略比「進(jìn)行一些實(shí)驗(yàn),并發(fā)布一個(gè)轉(zhuǎn)瞬即逝的快速倉(cāng)庫(kù)」成本更高,但它會(huì)迫使你找到一個(gè)具有真正影響的問題,并有助于確保你所做的新研究實(shí)際上是連貫且有用的:你不會(huì)花費(fèi)力氣引入一個(gè)對(duì)自己一直在開發(fā)和維護(hù)的工件無(wú)用的小功能或技巧。
選擇合適的、具有較大發(fā)揮空間的問題
可以「挖坑」
并不是你撰寫的每篇論文都是值得無(wú)限期投資的。許多論文都是一次性的探索性論文。要找到可以轉(zhuǎn)變?yōu)楦箜?xiàng)目的方向,所以請(qǐng)使用以下標(biāo)準(zhǔn)。
首先,問題必須是前沿的。你可以用多種方式定義它,但在人工智能領(lǐng)域中行之有效的一種策略是 —— 尋找一個(gè)將在 2-3 年內(nèi)「熱門」但尚未成為主流的問題空間。
其次,問題必須具有較大的挖坑潛力,即對(duì)許多下游問題的潛在影響。基本上,這些問題的結(jié)果可能會(huì)使足夠多的人受益或感興趣。研究者和人們關(guān)心什么可以幫助他們實(shí)現(xiàn)目標(biāo),因此你的問題可能是幫助他人構(gòu)建事物或?qū)崿F(xiàn)研究或生產(chǎn)目標(biāo)等東西。你可以應(yīng)用此過濾器來研究理論基礎(chǔ)、系統(tǒng)基礎(chǔ)設(shè)施、新基準(zhǔn)、新模型和許多其他事物。
第三,問題必須留有較大的余地。如果你告訴人們他們的系統(tǒng)可以快 1.5 倍或更有效 5%,這可能沒什么意思。在我看來,你需要找到這樣的問題:至少在經(jīng)過多年的努力之后,你有非零的希望讓事情變得更快,比如快 20 倍或更有效 30%。當(dāng)然,你不需要一路走到那一步才算成功,你也不應(yīng)該等到完全走到那一步后才發(fā)表第一篇論文或發(fā)布第一件作品。
我不想說得太抽象,還是用 ColBERT 來說明吧。2019 年底,應(yīng)用 BERT 進(jìn)行檢索的研究非常流行,但這些方法非常昂貴。人們自然會(huì)問,我們是否能大幅提高這種方法的效率?是什么讓這成為一個(gè)好問題呢?
首先,它很前言。我們可以正確地預(yù)計(jì),到 2021 年(1.5 年后),許多研究者將尋求基于 BERT 的高效檢索架構(gòu)。其次,它有很大的發(fā)展空間。新的 ML 范式往往會(huì)這樣,因?yàn)榇蠖鄶?shù)此類工作一開始都會(huì)忽略效率。事實(shí)上,最初的方法可能需要 30 秒才能回答一個(gè)查詢,而現(xiàn)在 30 毫秒就能完成更高質(zhì)量的檢索,速度快了 1000 倍。第三,它有很大的 Fanout??蓴U(kuò)展檢索是一個(gè)很好的「基礎(chǔ)」問題:每個(gè)人都需要在檢索器之上構(gòu)建一些東西,但卻很少有人愿意去構(gòu)建它們。
提前思考兩步
并快速迭代
既然你已經(jīng)有了一個(gè)好問題,就不要急于選擇眼前的低掛果實(shí)作為你的方法!在某些時(shí)候,至少最終會(huì)有很多人在考慮這種「顯而易見」的方法。
相反,至少提前兩步思考。當(dāng)這個(gè)及時(shí)出現(xiàn)的問題最終成為主流時(shí),確定大多數(shù)人可能采取的途徑。然后,找出這條道路本身的局限性,并著手了解和解決這些局限性。
在實(shí)踐中會(huì)是什么樣子呢?讓我們重溫一下 ColBERT 案例。利用 BERT 構(gòu)建高效檢索器的明顯方法是將文檔編碼成向量。有趣的是,到 2019 年底,只有有限的 IR 工作做到了這一點(diǎn)。例如,該類別中被引用次數(shù)最多的工作(DPR)在 2020 年 4 月才發(fā)布了第一份預(yù)印本。
有鑒于此,你可能會(huì)認(rèn)為,2019 年要做的正確事情是通過 BERT 建立一個(gè)偉大的單矢量 IR 模型。與此相反,如果只提前兩步思考,就會(huì)提出這樣的問題:每個(gè)人遲早都會(huì)建立單矢量方法,那么這種單矢量方法會(huì)從根本上卡在哪里呢?事實(shí)上,這個(gè)問題導(dǎo)致了后期交互范式和廣泛使用的模型。
再舉一個(gè)例子,我們可以使用 DSPy。2022 年 2 月,隨著提示功能變得越來越強(qiáng)大,人們顯然希望通過提示來進(jìn)行基于檢索的質(zhì)量保證,而不是像以前那樣進(jìn)行微調(diào)。為此,我們自然要建立一種方法。再往前走兩步,我們會(huì)問:這樣的方法會(huì)在哪里卡???歸根結(jié)底,「先檢索后生成」(或稱 RAG)方法可能是涉及 LM 的最簡(jiǎn)單的方法。
出于人們會(huì)對(duì)它感興趣的同樣原因,他們顯然會(huì)對(duì)以下方面越來越感興趣:(i) 表達(dá)更復(fù)雜的模塊組合;(ii) 通過對(duì)底層 LM 的自動(dòng)提示或微調(diào),弄清楚應(yīng)該如何監(jiān)督或優(yōu)化由此產(chǎn)生的復(fù)雜 pipeline。這就是 DSPy。
這條準(zhǔn)則的后半部分是「快速迭代」。這也許是我的導(dǎo)師 Matei Zaharia(斯隆獎(jiǎng)得主、Apache Spark 創(chuàng)始人)在我攻讀博士學(xué)位的第一周給我的第一條研究建議:通過確定一個(gè)可以快速迭代并獲得反饋(如延遲或驗(yàn)證分?jǐn)?shù))的問題版本,可以大大提高你解決難題的機(jī)會(huì)。如果你要提前兩步思考問題,這一點(diǎn)就尤為重要,因?yàn)檫@已經(jīng)足夠困難和不確定了。
將你的作品公之于眾
讓你的想法深入人心
此時(shí),你已經(jīng)發(fā)現(xiàn)了一個(gè)好問題,然后不斷迭代,直到你發(fā)現(xiàn)了一些很酷的東西,并寫出了一篇有見地的文章。不要繼續(xù)寫下一篇論文。相反,要專注于將你的工作成果公之于眾,并尋求與人們進(jìn)行真正的互動(dòng),不僅僅是關(guān)于你的一次論文發(fā)布,而是關(guān)于你正在積極研究的全局。或者更好的做法是,讓人們了解你正在構(gòu)建和維護(hù)的有用的開源工具,它捕捉到了你的關(guān)鍵想法。
常見的第一步是在 arXiv 上發(fā)布論文預(yù)印本,然后發(fā)布「帖子」宣布你的論文發(fā)布。這樣做時(shí),請(qǐng)確保你的帖子是以具體、充實(shí)、易懂的主張開頭。這樣做的目的不是告訴人們你發(fā)布了一篇論文,那并不具有內(nèi)在價(jià)值,目標(biāo)是以一種直接而又吸引人的方式傳達(dá)你的關(guān)鍵論點(diǎn)。(是的,我知道這很難,但這是必要的)。
也許更重要的是,整個(gè)過程不會(huì)在第一次「發(fā)布」后結(jié)束,發(fā)布只是開始。鑒于你現(xiàn)在投入的是項(xiàng)目,而不僅僅是論文,你的想法和科學(xué)交流將持續(xù)一年之久,遠(yuǎn)遠(yuǎn)超過孤立的論文發(fā)布。
當(dāng)我?guī)椭芯可凇竿铺亍股辖榻B他們的工作時(shí),他們最初發(fā)布的文章并沒有像希望的那樣受到關(guān)注,這種情況并不少見。學(xué)生們通常會(huì)認(rèn)為這驗(yàn)證了他們對(duì)發(fā)布研究成果的恐懼,并認(rèn)為這是另一個(gè)信號(hào),表明他們應(yīng)該繼續(xù)寫下一篇論文。顯然,這種想法是不正確的。
大量的個(gè)人經(jīng)驗(yàn)、二手經(jīng)驗(yàn)和觀察結(jié)果都表明,在這件事上堅(jiān)持不懈是非常有意義的(順便說一句,能堅(jiān)持的人不多)。也就是說,除了極少數(shù)例外情況,好想法的牽引需要你在不同的環(huán)境中多次告訴人們關(guān)鍵的東西,并不斷改進(jìn)你的想法和你對(duì)想法的傳達(dá),直到社區(qū)能夠隨著時(shí)間的推移吸收這些想法,或者直到該領(lǐng)域發(fā)展到更容易理解這些想法的正確階段。
匯聚興奮點(diǎn)
發(fā)布開源研究的技巧
讓人們對(duì)你的研究成果感到興奮固然是件好事,但通過發(fā)布、貢獻(xiàn)和發(fā)展開源工具,將你的想法傳遞給相關(guān)的下游應(yīng)用,往往能產(chǎn)生更大的影響。
要做到這一點(diǎn)并不容易:僅僅將代碼文件連同 README 上傳到 GitHub 是不夠的。一個(gè)好的資源庫(kù)將是你項(xiàng)目的「故鄉(xiāng)」,比你發(fā)表的任何一篇論文都更重要。
優(yōu)秀的開源研究需要具備兩個(gè)幾乎獨(dú)立的特質(zhì)。首先,它必須是好的研究,新穎、及時(shí)、范圍明確、準(zhǔn)確。其次,它需要有明確的下游效用和低摩擦。
這是最重要的部分:人們會(huì)因?yàn)楦鞣N「錯(cuò)誤」的原因,總是反復(fù)回避(而其他人也會(huì)反復(fù)使用)你的開放源碼軟件成果。舉例來說,你的研究可能是客觀的「最新技術(shù)」,但人們十有八九會(huì)優(yōu)先考慮摩擦更小的替代方案。反過來說,對(duì)于研究生來說,往往不能抓住人們使用你工具原因的重點(diǎn),比如,因?yàn)樗麄儧]有充分利用你最有創(chuàng)意的部分。這并不是什么值得抵制的事情,而是值得理解,必須要為此改進(jìn)的事情。
基于此,我想列出在研究成果開源方面需要注意的幾個(gè)里程碑。
里程碑 0:讓發(fā)布的內(nèi)容可用
發(fā)布一個(gè)無(wú)人能運(yùn)行的代碼是毫無(wú)意義的。在你的研究領(lǐng)域,這些人想復(fù)制你的運(yùn)行結(jié)果,也許他們會(huì)超越過你的工作并引用你的研究結(jié)果。這些人比其他類型的用戶更有耐心。盡管如此,你還是會(huì)發(fā)現(xiàn),根據(jù)代碼是否容易修補(bǔ)的情況,它在學(xué)術(shù)影響力方面也存在巨大差異。
里程碑 1:讓發(fā)布的內(nèi)容有用
除了在你的細(xì)分領(lǐng)域的人,你應(yīng)該確保你的發(fā)布對(duì)想要實(shí)際使用該項(xiàng)目來構(gòu)建其他東西的受眾有用。在人工智能研究中,這個(gè)里程碑很少會(huì)自然而然地到來。你應(yīng)該分配大量時(shí)間來思考人們?cè)噲D解決的(研究、生產(chǎn)等)問題,而你的人工智能成果可以在這些問題上提供幫助。如果你能正確地做到這一點(diǎn),那么從項(xiàng)目設(shè)計(jì)到公開的應(yīng)用程序接口以及展示的文檔 / 示例,都會(huì)體現(xiàn)出它的很多作用。
里程碑 2:讓發(fā)布通俗易懂
這對(duì)人工智能研究者來說很難,但我們應(yīng)該意識(shí)到,一個(gè)有用的版本,在技術(shù)上所有的東西可用且是某種程度上可解釋,并不等于你的大多數(shù)潛在用戶會(huì)覺得這個(gè)版本通俗易懂,足以讓他們投入學(xué)習(xí)或嘗試。
知名 AI 學(xué)者 Andrej Karpathy 寫過一篇關(guān)于這個(gè)問題的文章:「你建造東西,然后你需要建造坡道通往它」。Ben Clavie 也撰寫了大量有關(guān)這方面的文章,他將我們?cè)?ColBERT 上所做的工作加以改進(jìn),使其變得更加平易近人了,這在很大程度上證明了這一點(diǎn)。
來源:https://www.youtube.com/watch?v=c3b-JASoPi0
里程碑 3:找出顯而易見的替代方案失敗的原因,并保持耐心
我們一開始就討論了提前兩步思考的問題。在我看來,這一點(diǎn)至關(guān)重要,但也意味著大多數(shù)人都不會(huì)理解,為什么他們需要采用一種解決方案來解決他們還無(wú)法明顯觀察到的問題。我認(rèn)為,隨著時(shí)間的推移,你的工作之一就是要建立一個(gè)案例。收集證據(jù),并以易于理解的方式說明為什么顯而易見的替代方案(一次只思考一個(gè)步驟)會(huì)失敗。
里程碑 4:了解用戶的類型,并利用這一點(diǎn)實(shí)現(xiàn)增長(zhǎng)
當(dāng)我創(chuàng)辦 ColBERT 和 DSPy 時(shí),我最初尋找的受眾是研究者和專業(yè)的 ML 工程師。隨著時(shí)間的推移,我學(xué)會(huì)了放棄這一點(diǎn),并明白你可以接觸到更多的受眾,但他們需要的是不同的東西。在做任何事情之前,都不要間接甚至直接屏蔽不同類別的潛在用戶。這種情況比人們想象的要普遍得多。
其次,在尋找用戶時(shí),要在兩類用戶之間尋求平衡。一方面,擁有高級(jí)用例的專家級(jí)構(gòu)建者可能需要你投入大量資金,但往往會(huì)在研究意義上推動(dòng)某些用例的發(fā)展,這可能會(huì)帶來回報(bào)。另一方面,公眾構(gòu)建者通常不是 ML 專家,但他們經(jīng)常在公眾場(chǎng)合構(gòu)建并分享他們的學(xué)習(xí)成果,在大規(guī)模增長(zhǎng)中占據(jù)更大的比例,并會(huì)讓你對(duì)自己最初的假設(shè)有更多的了解。兩者都是你需要的。
里程碑 5:將興趣轉(zhuǎn)化為不斷壯大的社區(qū)
OSS 工作的真正成功在于社區(qū)的存在,以及不依賴于你的努力而持續(xù)增長(zhǎng)。一般來說,一個(gè)好的社區(qū)應(yīng)該是有機(jī)的,但你需要積極努力幫助它形成,例如歡迎貢獻(xiàn)和討論,并尋找機(jī)會(huì)將興趣轉(zhuǎn)化為貢獻(xiàn)或某種論壇(例如 Discord 或 GitHub)。
里程碑 6:將興趣轉(zhuǎn)化為活躍、協(xié)作和模塊化的下游項(xiàng)目
很有可能,你的 OSS 項(xiàng)目在早期階段并沒有解決最初愿景中的所有問題。一個(gè)設(shè)計(jì)精良的項(xiàng)目通常會(huì)有多個(gè)模塊化部分,可以讓你發(fā)起研究合作(或其他努力),讓新的團(tuán)隊(duì)成員不僅能推進(jìn)項(xiàng)目,還能擁有項(xiàng)目的重要部分,從而更快或更大程度地影響他們的想法,同時(shí)大幅改進(jìn)項(xiàng)目。例如,DSPy 目前由不同的團(tuán)隊(duì)分別領(lǐng)導(dǎo)及時(shí)優(yōu)化、編程抽象和強(qiáng)化學(xué)習(xí)方面的研發(fā)工作。ColBERT 的外部應(yīng)用程序接口、底層檢索基礎(chǔ)架構(gòu)和核心建模等組件主要由不同項(xiàng)目中的不同人員負(fù)責(zé)推進(jìn)。
來,總結(jié)一下。開源研究的采用需要好的研究和好的開源成果。這種平衡很難把握,但一旦把握得當(dāng),就會(huì)收獲頗豐。就我個(gè)人而言,我花了很長(zhǎng)時(shí)間才掌握并內(nèi)化了這一點(diǎn)。這要?dú)w功于我的博士生導(dǎo)師 Chris Potts 和 Matei Zaharia 的反復(fù)反饋,以及 Heather Miller 和 Jeremy Howard 的寶貴意見。
評(píng)估研究的標(biāo)準(zhǔn)是與先前知識(shí)相比的「增量」,但在人們能夠有意義地利用「增量」之前,軟件本身必須是有效的。要使軟件有效,其文檔也必須有效:除非你向人們展示,否則人們不會(huì)看到他們應(yīng)該使用軟件的所有下游方法。也就是說,直到這些任務(wù)可以由一個(gè)獨(dú)立的社區(qū)來開發(fā)。
說了這么多,本節(jié)最重要的技巧就是「發(fā)布」,真正發(fā)布且經(jīng)常發(fā)布,并從中學(xué)習(xí)。
發(fā)表新論文
繼續(xù)投入自己的項(xiàng)目
當(dāng)你讀到第五條準(zhǔn)則時(shí),很自然會(huì)產(chǎn)生這樣的疑問:研究生哪里有這么多時(shí)間花在開放源碼軟件上?什么時(shí)候才能做真正的研究?
實(shí)際的答案是,花在開源上的大部分時(shí)間都可以用來進(jìn)行新的、令人興奮的研究。這兩者并不像表面上看起來那么割裂。為什么這么說呢?
首先,處于這種開放源碼軟件工作的前沿,你可以極早地憑直覺識(shí)別新問題。與其他方式相比,你對(duì)問題的理解會(huì)更加本能。另外,你所建立的社區(qū)通常會(huì)對(duì)自己的方法原型提供直接反饋,并讓你有機(jī)會(huì)接觸到了解問題重要性的優(yōu)秀合作者。你還可以獲得有用的「分發(fā)渠道」,確保自己在這一領(lǐng)域發(fā)表的每一篇新論文都能得到受眾的關(guān)注,并鞏固現(xiàn)有的平臺(tái)。
舉例來說,「ColBERT」不僅僅是 2020 年初的一篇論文。它現(xiàn)在可能有十篇左右的后續(xù)相關(guān)論文,投資于改進(jìn)的訓(xùn)練、更低的內(nèi)存占用、更快的檢索基礎(chǔ)架構(gòu)、更好的領(lǐng)域適應(yīng)性以及與下游 NLP 任務(wù)更好的匹配。同樣地,DSPy 也不是一篇論文,而是關(guān)于編程摘要、提示優(yōu)化和下游程序的論文集合。這些論文中有很多都是由不同的優(yōu)秀作者撰寫的,他們的工作都產(chǎn)生了巨大的影響,其中一部分是通過開放源碼軟件渠道創(chuàng)造了大量的受眾。
所以說,一個(gè)好的開放源碼工具可以創(chuàng)造出模塊化的作品,供新的研究者和貢獻(xiàn)者探索、擁有和發(fā)展。