AI博士如何做出有影響力的研究?斯隆獎得主弟子親身講述經驗

机器之心發表於2024-10-06

寫論文?那只是其中的一小步。


在研究生期間,很多人經常會迷茫於如何構建自身的研究。我們應該如何開展研究,才能在已經相當擁擠的人工智慧領域有所作為?

太多人認為,長期的專案、適當的程式碼釋出和深思熟慮的基準測試無法產生足夠的激勵作用 —— 有時候這可能是你快速而內疚地完成的事情,然後又要回去做「真正的」研究。

最近,史丹佛大學 NLP 組在讀博士 Omar Khattab 釋出了一篇博文,討論了頂級 AI 學者們有關做有影響力研究的思考。

圖片

讓我們看看他是怎麼說的:

科研的影響力有多種形式,我將只關注透過開源工作(例如模型、系統、框架或基準測試)對人工智慧產生的研究影響來衡量。因為我的目標部分是完善自己的想法,記錄具體的建議,並收集反饋,所以我會做出較為簡潔的陳述。如果你有其他的想法,歡迎在評論區討論。

首先,以下是指導原則:

  • 著眼於專案,而不是論文。
  • 選擇合適的、具有較大發揮空間的問題,可以「挖坑」。
  • 提前思考兩步並快速迭代。
  • 將你的工作公之於眾,並推廣你的想法。
  • 找到方法激勵自己:這是關於發展開源研究的提示。
  • 透過新論文繼續投資你的專案。
  • 第五點「關於發展開源研究的提示」值得單獨寫一篇更長的文章。我可能會在下一篇文章中寫到。

著眼專案
而不是論文

這是一個至關重要的思維,其他的一切都基於此。

剛入門的學生會非常重視發表他們的前幾篇論文。這是合理的:這是你學習進行研究、探索初始方向和證明早期進展的方式。但這是一個你最終必須離開的階段:從長遠來看,你的成就和成長不太會取決於單純的論文數量,而更多地取決於你的影響力和你傳達的總體研究脈絡。

不幸的是,太多的博士生認為大多數可能產生影響的行為都是「不激勵的」。這讓我很困惑,直到我意識到他們的意思是這些行為可能會減慢你發表下一篇論文的能力。但你如此迅速地發表下一篇論文的能力並不那麼重要。

我建議你不要把你的工作看作一系列孤立的論文,而是問問自己:你將要領導的更大願景,那麼其中子領域或正規化是什麼?你的工作想要帶來什麼不同?因此,你將發表單篇論文來探索並建立基準,而更大的願景應該是你有意迭代的東西。它需要比論文所承載的大得多,而且肯定是尚未完全解決的問題。

要想實現這一點,一種方法是圍繞你在開源領域中維護的連貫工件(如模型、系統、框架或基準)構建一些研究論文。這種策略比「進行一些實驗,併釋出一個轉瞬即逝的快速倉庫」成本更高,但它會迫使你找到一個具有真正影響的問題,並有助於確保你所做的新研究實際上是連貫且有用的:你不會花費力氣引入一個對自己一直在開發和維護的工件無用的小功能或技巧。

選擇合適的、具有較大發揮空間的問題
可以「挖坑」

並不是你撰寫的每篇論文都是值得無限期投資的。許多論文都是一次性的探索性論文。要找到可以轉變為更大專案的方向,所以請使用以下標準。

首先,問題必須是前沿的。你可以用多種方式定義它,但在人工智慧領域中行之有效的一種策略是 —— 尋找一個將在 2-3 年內「熱門」但尚未成為主流的問題空間。

其次,問題必須具有較大的挖坑潛力,即對許多下游問題的潛在影響。基本上,這些問題的結果可能會使足夠多的人受益或感興趣。研究者和人們關心什麼可以幫助他們實現目標,因此你的問題可能是幫助他人構建事物或實現研究或生產目標等東西。你可以應用此過濾器來研究理論基礎、系統基礎設施、新基準、新模型和許多其他事物。

第三,問題必須留有較大的餘地。如果你告訴人們他們的系統可以快 1.5 倍或更有效 5%,這可能沒什麼意思。在我看來,你需要找到這樣的問題:至少在經過多年的努力之後,你有非零的希望讓事情變得更快,比如快 20 倍或更有效 30%。當然,你不需要一路走到那一步才算成功,你也不應該等到完全走到那一步後才發表第一篇論文或釋出第一件作品。

我不想說得太抽象,還是用 ColBERT 來說明吧。2019 年底,應用 BERT 進行檢索的研究非常流行,但這些方法非常昂貴。人們自然會問,我們是否能大幅提高這種方法的效率?是什麼讓這成為一個好問題呢?

首先,它很前言。我們可以正確地預計,到 2021 年(1.5 年後),許多研究者將尋求基於 BERT 的高效檢索架構。其次,它有很大的發展空間。新的 ML 正規化往往會這樣,因為大多數此類工作一開始都會忽略效率。事實上,最初的方法可能需要 30 秒才能回答一個查詢,而現在 30 毫秒就能完成更高質量的檢索,速度快了 1000 倍。第三,它有很大的 Fanout。可擴充套件檢索是一個很好的「基礎」問題:每個人都需要在檢索器之上構建一些東西,但卻很少有人願意去構建它們。

提前思考兩步
並快速迭代

既然你已經有了一個好問題,就不要急於選擇眼前的低掛果實作為你的方法!在某些時候,至少最終會有很多人在考慮這種「顯而易見」的方法。

相反,至少提前兩步思考。當這個及時出現的問題最終成為主流時,確定大多數人可能採取的途徑。然後,找出這條道路本身的侷限性,並著手瞭解和解決這些侷限性。

在實踐中會是什麼樣子呢?讓我們重溫一下 ColBERT 案例。利用 BERT 構建高效檢索器的明顯方法是將文件編碼成向量。有趣的是,到 2019 年底,只有有限的 IR 工作做到了這一點。例如,該類別中被引用次數最多的工作(DPR)在 2020 年 4 月才釋出了第一份預印本。

有鑑於此,你可能會認為,2019 年要做的正確事情是透過 BERT 建立一個偉大的單向量 IR 模型。與此相反,如果只提前兩步思考,就會提出這樣的問題:每個人遲早都會建立單向量方法,那麼這種單向量方法會從根本上卡在哪裡呢?事實上,這個問題導致了後期互動正規化和廣泛使用的模型。

再舉一個例子,我們可以使用 DSPy。2022 年 2 月,隨著提示功能變得越來越強大,人們顯然希望透過提示來進行基於檢索的質量保證,而不是像以前那樣進行微調。為此,我們自然要建立一種方法。再往前走兩步,我們會問:這樣的方法會在哪裡卡住?歸根結底,「先檢索後生成」(或稱 RAG)方法可能是涉及 LM 的最簡單的方法。

出於人們會對它感興趣的同樣原因,他們顯然會對以下方面越來越感興趣:(i) 表達更復雜的模組組合;(ii) 透過對底層 LM 的自動提示或微調,弄清楚應該如何監督或最佳化由此產生的複雜 pipeline。這就是 DSPy。

這條準則的後半部分是「快速迭代」。這也許是我的導師 Matei Zaharia(斯隆獎得主、Apache Spark 創始人)在我攻讀博士學位的第一週給我的第一條研究建議:透過確定一個可以快速迭代並獲得反饋(如延遲或驗證分數)的問題版本,可以大大提高你解決難題的機會。如果你要提前兩步思考問題,這一點就尤為重要,因為這已經足夠困難和不確定了。

將你的作品公之於眾
讓你的想法深入人心

此時,你已經發現了一個好問題,然後不斷迭代,直到你發現了一些很酷的東西,並寫出了一篇有見地的文章。不要繼續寫下一篇論文。相反,要專注於將你的工作成果公之於眾,並尋求與人們進行真正的互動,不僅僅是關於你的一次論文釋出,而是關於你正在積極研究的全域性。或者更好的做法是,讓人們瞭解你正在構建和維護的有用的開源工具,它捕捉到了你的關鍵想法。

常見的第一步是在 arXiv 上釋出論文預印本,然後釋出「帖子」宣佈你的論文釋出。這樣做時,請確保你的帖子是以具體、充實、易懂的主張開頭。這樣做的目的不是告訴人們你釋出了一篇論文,那並不具有內在價值,目標是以一種直接而又吸引人的方式傳達你的關鍵論點。(是的,我知道這很難,但這是必要的)。

也許更重要的是,整個過程不會在第一次「釋出」後結束,釋出只是開始。鑑於你現在投入的是專案,而不僅僅是論文,你的想法和科學交流將持續一年之久,遠遠超過孤立的論文釋出。

當我幫助研究生在「推特」上介紹他們的工作時,他們最初發布的文章並沒有像希望的那樣受到關注,這種情況並不少見。學生們通常會認為這驗證了他們對釋出研究成果的恐懼,並認為這是另一個訊號,表明他們應該繼續寫下一篇論文。顯然,這種想法是不正確的。

大量的個人經驗、二手經驗和觀察結果都表明,在這件事上堅持不懈是非常有意義的(順便說一句,能堅持的人不多)。也就是說,除了極少數例外情況,好想法的牽引需要你在不同的環境中多次告訴人們關鍵的東西,並不斷改進你的想法和你對想法的傳達,直到社群能夠隨著時間的推移吸收這些想法,或者直到該領域發展到更容易理解這些想法的正確階段。

匯聚興奮點
釋出開源研究的技巧

讓人們對你的研究成果感到興奮固然是件好事,但透過釋出、貢獻和發展開源工具,將你的想法傳遞給相關的下游應用,往往能產生更大的影響。

要做到這一點並不容易:僅僅將程式碼檔案連同 README 上傳到 GitHub 是不夠的。一個好的資源庫將是你專案的「故鄉」,比你發表的任何一篇論文都更重要。

優秀的開源研究需要具備兩個幾乎獨立的特質。首先,它必須是好的研究,新穎、及時、範圍明確、準確。其次,它需要有明確的下游效用和低摩擦。

這是最重要的部分:人們會因為各種「錯誤」的原因,總是反覆迴避(而其他人也會反覆使用)你的開放原始碼軟體成果。舉例來說,你的研究可能是客觀的「最新技術」,但人們十有八九會優先考慮摩擦更小的替代方案。反過來說,對於研究生來說,往往不能抓住人們使用你工具原因的重點,比如,因為他們沒有充分利用你最有創意的部分。這並不是什麼值得抵制的事情,而是值得理解,必須要為此改進的事情。

基於此,我想列出在研究成果開源方面需要注意的幾個里程碑。

里程碑 0:讓釋出的內容可用

釋出一個無人能執行的程式碼是毫無意義的。在你的研究領域,這些人想複製你的執行結果,也許他們會超越過你的工作並引用你的研究結果。這些人比其他型別的使用者更有耐心。儘管如此,你還是會發現,根據程式碼是否容易修補的情況,它在學術影響力方面也存在巨大差異。

里程碑 1:讓釋出的內容有用

除了在你的細分領域的人,你應該確保你的釋出對想要實際使用該專案來構建其他東西的受眾有用。在人工智慧研究中,這個里程碑很少會自然而然地到來。你應該分配大量時間來思考人們試圖解決的(研究、生產等)問題,而你的人工智慧成果可以在這些問題上提供幫助。如果你能正確地做到這一點,那麼從專案設計到公開的應用程式介面以及展示的文件 / 示例,都會體現出它的很多作用。

里程碑 2:讓釋出通俗易懂

這對人工智慧研究者來說很難,但我們應該意識到,一個有用的版本,在技術上所有的東西可用且是某種程度上可解釋,並不等於你的大多數潛在使用者會覺得這個版本通俗易懂,足以讓他們投入學習或嘗試。

知名 AI 學者 Andrej Karpathy 寫過一篇關於這個問題的文章:「你建造東西,然後你需要建造坡道通往它」。Ben Clavie 也撰寫了大量有關這方面的文章,他將我們在 ColBERT 上所做的工作加以改進,使其變得更加平易近人了,這在很大程度上證明了這一點。

圖片

來源:https://www.youtube.com/watch?v=c3b-JASoPi0

里程碑 3:找出顯而易見的替代方案失敗的原因,並保持耐心

我們一開始就討論了提前兩步思考的問題。在我看來,這一點至關重要,但也意味著大多數人都不會理解,為什麼他們需要採用一種解決方案來解決他們還無法明顯觀察到的問題。我認為,隨著時間的推移,你的工作之一就是要建立一個案例。收集證據,並以易於理解的方式說明為什麼顯而易見的替代方案(一次只思考一個步驟)會失敗。

里程碑 4:瞭解使用者的型別,並利用這一點實現增長

當我創辦 ColBERT 和 DSPy 時,我最初尋找的受眾是研究者和專業的 ML 工程師。隨著時間的推移,我學會了放棄這一點,並明白你可以接觸到更多的受眾,但他們需要的是不同的東西。在做任何事情之前,都不要間接甚至直接遮蔽不同類別的潛在使用者。這種情況比人們想象的要普遍得多。

其次,在尋找使用者時,要在兩類使用者之間尋求平衡。一方面,擁有高階用例的專家級構建者可能需要你投入大量資金,但往往會在研究意義上推動某些用例的發展,這可能會帶來回報。另一方面,公眾構建者通常不是 ML 專家,但他們經常在公眾場合構建並分享他們的學習成果,在大規模增長中佔據更大的比例,並會讓你對自己最初的假設有更多的瞭解。兩者都是你需要的。

里程碑 5:將興趣轉化為不斷壯大的社群

OSS 工作的真正成功在於社群的存在,以及不依賴於你的努力而持續增長。一般來說,一個好的社群應該是有機的,但你需要積極努力幫助它形成,例如歡迎貢獻和討論,並尋找機會將興趣轉化為貢獻或某種論壇(例如 Discord 或 GitHub)。

里程碑 6:將興趣轉化為活躍、協作和模組化的下游專案

很有可能,你的 OSS 專案在早期階段並沒有解決最初願景中的所有問題。一個設計精良的專案通常會有多個模組化部分,可以讓你發起研究合作(或其他努力),讓新的團隊成員不僅能推進專案,還能擁有專案的重要部分,從而更快或更大程度地影響他們的想法,同時大幅改進專案。例如,DSPy 目前由不同的團隊分別領導及時最佳化、程式設計抽象和強化學習方面的研發工作。ColBERT 的外部應用程式介面、底層檢索基礎架構和核心建模等元件主要由不同專案中的不同人員負責推進。

來,總結一下。開源研究的採用需要好的研究和好的開源成果。這種平衡很難把握,但一旦把握得當,就會收穫頗豐。就我個人而言,我花了很長時間才掌握並內化了這一點。這要歸功於我的博士生導師 Chris Potts 和 Matei Zaharia 的反覆反饋,以及 Heather Miller 和 Jeremy Howard 的寶貴意見。

評估研究的標準是與先前知識相比的「增量」,但在人們能夠有意義地利用「增量」之前,軟體本身必須是有效的。要使軟體有效,其文件也必須有效:除非你向人們展示,否則人們不會看到他們應該使用軟體的所有下游方法。也就是說,直到這些任務可以由一個獨立的社群來開發。

說了這麼多,本節最重要的技巧就是「釋出」,真正釋出且經常釋出,並從中學習。

發表新論文
繼續投入自己的專案

當你讀到第五條準則時,很自然會產生這樣的疑問:研究生哪裡有這麼多時間花在開放原始碼軟體上?什麼時候才能做真正的研究?

實際的答案是,花在開源上的大部分時間都可以用來進行新的、令人興奮的研究。這兩者並不像表面上看起來那麼割裂。為什麼這麼說呢?

首先,處於這種開放原始碼軟體工作的前沿,你可以極早地憑直覺識別新問題。與其他方式相比,你對問題的理解會更加本能。另外,你所建立的社群通常會對自己的方法原型提供直接反饋,並讓你有機會接觸到了解問題重要性的優秀合作者。你還可以獲得有用的「分發渠道」,確保自己在這一領域發表的每一篇新論文都能得到受眾的關注,並鞏固現有的平臺。

舉例來說,「ColBERT」不僅僅是 2020 年初的一篇論文。它現在可能有十篇左右的後續相關論文,投資於改進的訓練、更低的記憶體佔用、更快的檢索基礎架構、更好的領域適應性以及與下游 NLP 任務更好的匹配。同樣地,DSPy 也不是一篇論文,而是關於程式設計摘要、提示最佳化和下游程式的論文集合。這些論文中有很多都是由不同的優秀作者撰寫的,他們的工作都產生了巨大的影響,其中一部分是透過開放原始碼軟體渠道創造了大量的受眾。

所以說,一個好的開放原始碼工具可以創造出模組化的作品,供新的研究者和貢獻者探索、擁有和發展。

參考原文:https://github.com/okhat/blog/blob/main/2024.09.impact.md

相關文章