ACL最佳論文獎得主給新入行研究者的一點建議


MLNLP 

機器學習演算法與自然語言處理 

)社群是國內外知名自然語言處理社群,受眾覆蓋國內外NLP碩博生、高校老師以及企業研究人員。


社群的願景 是促進國內外自然語言處理,機器學習學術界、產業界和廣大愛好者之間的交流,特別是初學者同學們的進步。

載自 | 機器之心
者 | Marco Tulio Ribeiro
三思後行,搞學術也是一樣的道理。但如何思考才是正確的呢?
接下來我應該做什麼專案呢?對於從本科生到博士生及從事更深研究的任何人來說,這是一個反覆出現的問題。其實,這個問題可以分解成以下幾步走:第一步提出想法,第二步組織和充實想法,第三步決定哪些想法值得作為研究專案。
近日,微軟研究院自適應系統和互動組研究人員、華盛頓大學 Affiliate 助理教授、ACL 最佳論文獎得主 Marco Tulio Ribeiro 撰寫了兩篇部落格,分別展示了第一步過程中的啟發式方法以及在第二、三步中如何做。
Marco Tulio Ribeiro
(圖源:microsoft)
在部落格中,Ribeiro 使用了自己工作中的很多軼事,不過也表示這並不是讓每個人都應該做他做的事,只是為了展示他在做這些事的過程中產生了最深刻的洞察力。此外,他的建議和啟發式方法偏向於自己喜歡做的研究,其他人都應該保持自己的風格和偏好。
卡內基梅隆大學助理教授陳天奇、UC Santa Barbara 計算機科學系助理教授王威廉也在推特上推薦了這兩篇部落格:「這對新人研究員來說是非常好的建議。」
本文將對兩篇部落格的中心思想進行了編譯整理(以第一人稱轉述),內容如下:
1
『前提:擴充套件你的相鄰可能』
想法往往出現在你當前知識的相鄰可能(adjacent possible)中。你知道的越多,就越容易提出新的想法。我認為一個好的經驗是努力對自己的很多相鄰領域進行廣泛的概述,然後在自己的領域真正地深入研究,或者根據需要解決專案中的一個子問題。更具體地,課程和調研論文非常適合獲得廣泛的概述,這是因為其他人已經以連貫的思路編譯、組織和呈現重要資訊,省去了你的諸多麻煩。
對於課程來說,很快就會過時或者沒有涵蓋你想要獲得詳細概述的子領域,比如你很容易找到一門 NLP 課程,但很難找到 NLP 中關於可解釋性的課程。最近的論文或演講可能更新,但也可能很快就會過時。關鍵在於瞭解整體研究趨勢,而不陷入細枝末節中,除非你想深耕某一領域。我就會特別關注人們正在解決哪些問題、哪些技術最先進以及如何完成評估。
與此同時,我還有意識地在日程安排上留出一些學習的時間,但在弄清楚讀什麼或者學習什麼方面並不是非常系統,有時隨機性可能也挺好的。
比如,如果我在不同的論文中看到了自己不熟悉的問題或技術,通常會下功夫學習它們。我還請求合作者給我發一些他們最近非常喜歡的論文。我喜歡使用的另一種啟發式方法是閱讀在 ML 和 NLP 頂會中獲獎的論文,即使與我的研究無關。最後,我強烈建議在 poster 環節四處走動並與作者多多交流,以便為未來的學習努力積累素材。
2
『提出想法的啟發式方法』
除了努力擴充套件相鄰可能之外,我還喜歡如下幾條啟發式方法。需要注意,這些方法是相互重疊的,雖然不甚詳盡,但我認為它們非常有用。
啟發 1:在重要問題上設定「過濾器」
美國數學家 Richard Hamming 曾提出過一條著名的建議:你應該瞭解自己所在領域的最重要問題是什麼,並努力解決它們。這條建議還有一個鮮為人知的附錄,對偉大的科學家進行了描述:
他們通常有 10 到 20 個想要解決的重要問題。當他們看到一個新想法出現時,人們會聽到他們說「這個想法與這些問題中的某一個相關。」
我認為這裡發揮作用的原則是,當我們有意識地優先考慮某件事時,往往注意到其他事情與它的關聯,卻看輕任何其他的一切。列出重要問題的清單是一種有目的地設定過濾器的方法,能夠幫你在閱讀論文、觀看演講或處理其他事情時注意到關聯。換言之,這是一種確保你始終檢查自己獲得的新知識是否可以在某些問題上展開相鄰可能的方法。
我認為,設定過濾器通常是一種極好的做法,而做到這點的一種方式就是一一列出你想要提出想法的事情。我的問題清單當然由自己的興趣和偏好決定,但也發現向自己尊重的研究者詢問他們最重要問題的清單並諮詢自己清單中應該推遲的專案很有用。
啟發 2:調研失敗 / 煩惱
在進行研究(或課程專案)的過程中,大多數人常常會遭遇失敗,也就是嘗試了一些沒有效果的事情。當你覺得一些技術應該可以解決自己的問題但未能如願時,尤其令人惱火。
不過,這樣的失敗和煩惱是培養新想法的沃土,但前提是你需要花時間弄明白問題在哪裡以及什麼導致了問題的發生。由於這些失敗往往與你當時實際做的任何事情關係不大,因此當你找到應對方法或放棄時,很容易會忽略到它們。相反,我建議記下並做出一個我搞不懂的失敗清單,以便之後繼續調研。
我非常喜歡這種方法,因為在無意中搞定了自己的博士論文題目。我曾經在谷歌實習,訓練的一個模型在現實世界中表現糟糕,儘管它具有很好的交叉驗證準確率。我花了很多時間獲得新資料、進行輸入擾動和觀察預測結果。這真的讓我很煩,畢竟花了這麼長的時間才搞清楚自己的模型實際表現怎麼樣。我的導師讓我就這個實習專案做一個展示,而我最終只談了自己的煩惱,而不是在實習期間具體做了什麼。
之後,導師問我是否想要解決這個問題。當時我正在進行一個不相關的課題(分散式系統和機器學習),但還是轉向了該問題並寫出了下面的論文,併為我餘下的博士研究定下了基調。我的很多其他論文也都以類似的方式寫出來,這都與我傾向於研究讓自己煩惱的事情相關。
論文地址:
https://arxiv.org/pdf/1602.04938.pdf
製造失敗:如果你沒有失敗清單又該怎麼辦呢?不用擔心,我這裡有一種非常可靠的方法來建立這種清單。如果你讀到了一篇喜歡的論文或者發現一些高大上的新技術或模型(如 BERT、GPT-3、CLIP、Dall-E 等),花時間思考這些技術或模型如何用來做一些論文中沒有做過的有用或很酷的事情,然後努力去做。雖然往往會以失敗告終,你就可以開始對失敗進行調研。
啟發 3:類比
嘗試在現有工作和未解決的問題之間找到類比。這感覺像是對上述 von Neumann / Hamming 示例的重複,但我認為值得指出的是,這種啟發超越了「將技術 X 應用於問題 Y」。 
早在 2017 年,就有很多關於視覺模型對抗樣本的論文,但對於文字模型來說,沒有什麼真正令人滿意的成果。造成這種情況的部分原因是影像處於連續空間中,因此很容易定義與人類感知大致對應的距離度量(例如,具有較小 L2 範數的畫素擾動對人眼來說幾乎是不可察覺的)。
那時我正在做另一個專案,在那裡我試圖找到「足夠」的輸入子集,將預測用作解釋。讓我感到困擾的是,文字模型的子集通常比我預期的要大得多,因為模型對微小的變化非常敏感。在某個時候,我突然意識到,令我困擾的是預測隨著語義的微小變化而改變,而不是字元或單詞的數量。例如,如果情感分析模型對「這是一部好電影」和「這不是一部好電影」有不同的預測(即使只改變了一個詞),那很好;但如果它對「這部電影」有不同的預測,那就不行了。我意識到文字中「小的 L2 範數」的正確類比是「小的語義距離」,而不是「小的編輯距離」,於是我寫了一篇論文。
這個專案反過來又導致了另一個類比。除了個別對抗樣本之外,我們最終提出了對抗性規則——類似於正則表示式的規則(例如,將 What is 替換為 What's)導致模型改變了很多預測。 
當我把這個 demo 給一個朋友時,他告訴我「這些規則就像 ML 的單元測試」。我喜歡這個類比,並開始思考「我還想寫什麼其他型別的單元測試?」。
我認為這清楚地表明,使用類比不僅僅是將技術應用於新問題,而是可以探索相似之處和不同之處。類比既是一種約束(可以在類比不成立的部分被丟棄),也是來自原始領域的現成想法的來源,你可以嘗試將其應用於新領域。
啟發 4:挑戰現狀
這種啟發的一個好處是,即使它失敗了,它也會導致對某些現狀的更好理解,從而擴大你的相鄰可能性,並在未來產生更好的想法。
這很重要,因為這種啟發經常會面臨失敗,通常有一個原因使某事只能維持現狀(當它很容易時,其他人往往會在你之前完成)。然而,當它成功時,它會是非常酷的工作。我想到的一個例子是 HOGWILD! 論文(NeurIPS 2020 時間檢驗獎),它挑戰了嘗試並行化 SGD 時需要一些同步的(非常合理的)假設。這篇論文很酷的原因之一是因為當時的現狀是如此合理——每個人都知道在並行化任何演算法時需要處理競爭條件,但你使用了 lock 來做到這一點。
3
『idea真的很“廉價”嗎?』
「idea 很廉價,執行才意味著一切。」這句話或許適用於其他領域(比如初創公司),但這兩個條款都不太適用於研究。雖然產生「OK」的 idea 很容易,但好的 idea 並不會是廉價的,而且產生更多的 idea 是獲得優秀 idea 的最佳方法之一。此外,雖然執行很重要,但一些偉大論文的貢獻就在於 idea,即使當時它在執行上並不出色。
在上文提到的谷歌實習經歷中,我為一個專案工作了大概 6 周,然後我與一位高階研究員進行了對話,希望獲得技術上的幫助,讓我的解決方案發揮作用。
但我帶著崩潰的心態離開了會議室,因為他們讓我相信自己正在處理的是一個糟糕的問題,因此即使解決方案確實有效,也無關緊要。這是一堂特別有價值的課程,這次之後,我決心好好考量我所想要解決的每一個問題。
不過時間久了,我也淡忘了這一課的教訓。在我完成關於可解釋性的第二篇論文後不久,我浪費了很多時間(大概幾個月)在一個現在看來甚至難以描述的專案上徘徊。如果我沒記錯的話,它是「統一可解釋性」、「一堆很酷的可解釋性實驗」和「新的可解釋性技術」的混合體——這些都不夠清晰,也無法評估,沒有利於任何有意義的進展。
從那時起,我一直在使用並不斷改進結構化流程,以確保我不會忘記提出過去發現有用的某些問題。我將這些流程編入模板或清單。
4
『構建潛在專案』
以下是我目前將想法組織成潛在專案的模板。在我的 CheckList 論文開發過程中,我使用模板的快照作為執行示例。
CheckList :我們想知道我們的模型是否符合業務規則、先驗知識和常識。現在,即使是專家也很難寫出這些是什麼。大多數人甚至沒有想過他們為什麼需要這樣做。
為什麼困擾:總結一下為什麼這個問題很重要,或者我們為什麼關心它的解決。
CheckList :訓練 / 評估資料是靜態的,通常導致模型的偏差。準確性通常不是我們關心的全部,而且測試集幾乎從來沒有足夠大或變化到足以測試某些行為(例如,模型在存在拼寫錯誤時的行為方式,模型對於某些異常值的行為方式等)。
當前的解決方案及其失敗的原因:一個可能適用於「問題」的方法列表,即使它們不是專門為它設計的。請注意,「它們失敗了」並不是說這些方法不好,只是它們不能解決我們的問題,即使它們在其他方面非常出色。
CheckList 示例:我列出了一堆方法(與這篇博文無關),並說「這些方法並不能真正測試人類期望的模型行為,只有少數例外。此外,有些需要訪問模型內部。」
如果我有一個解決方案,它會是什麼樣子?這樣做的重點不是實際提出解決方案,而是「對映」我們期望什麼樣的解決方案,如下面的示例所示。如果你能想出多種可能的解決方案,那就更好了。
CheckList 示例:一個測試框架,包括不同測試型別的分類
– 一種從使用者那裡獲取測試的方法
– 使整個過程變得簡單的軟體
我怎麼知道我是否解決了它?同樣,這主要是評估的草圖(不需要詳細資訊)
CheckList 示例:
– 許多令人信服的 SOTA 模型未能透過測試的示例,並收集到見解
– 與微軟工程師進行的「使用者研究」,我們(希望)表明他們在編寫測試後在自己的模型中發現了一堆(可修復的)問題.
什麼是不確定性?這必須是真的嗎?這個解決方案不能正常工作是什麼?這是關於繪製出高度不確定性的區域,並確保我們儘可能快地排除會使專案或解決方案草圖無效的事情。
CheckList 示例:
– 如果我是唯一能夠進行測試的使用者,那麼這將是失敗的。
– 如果 SOTA 模型僅在特殊測試中失敗,則可能準確性已經足夠好,我們不需要這個專案了
計劃草圖是這裡的關鍵詞。我們只需要前幾個步驟的合理細節,而第一步通常是某種形式的初步文獻綜述。

總結下來就是:

  • 點亮評論
  • 為 SOTA 情緒分析模型寫測試 – 為其他幾個模型(釋義,SQuAD)編寫測試
  • 嘗試將這些組織成一般原則
  • 開發所需的任何工具
  • 與微軟人員進行案例研究;與研究人員的案例研究
  • 使用者研究
  • 撰寫論文
5
『評論模板』
前五點(直到「我怎麼知道我解決了它」)是讓我們瞭解專案是什麼,如果成功,世界會發生什麼變化,我們為什麼關心這種變化,以及我們如何展示確實發生了一些變化。
最後兩點主要是為了評估專案(下一節),並有一個關於如何取得進展的試探性「草圖」。
除了組織新想法之外,這個模板是我使用的一個更大模板的一個子集,並且在我處理我的專案時會不斷修改(我計劃在未來寫一篇關於這個的帖子)。模板的第一個版本幾乎總是以某種方式出錯,例如問題定義在中途發生變化,我們提出的解決方案與我們最初的猜測完全不同,評估完全不同等等。但是,我們發現在這個階段有一個暫定版本比根本沒有模板要好得多,即使以後一切都變了。
需要注意的是,這個模板非常面向「問題」,而不是面向「解決方案」。這恰好是我喜歡做的那種研究,因此我自然有更多的經驗。話雖如此,我認為這裡的一些想法可以(透過一些調整)應用於更具探索性的想法,其中問題定義可能有點模糊。
6
『評估潛在專案的啟發式方法』
上面的模板有助於使想法更具體,並避免定義不明確的專案。但是,我們仍然需要決定是否要在一個特定的專案上工作,或者在眾多專案中選擇哪個。
我看到許多研究生開始從事第一個向他們展示的「足夠好」的專案。我認為這是一種糟糕的方法,因為大多數人發現很難放棄專案,而且提出替代想法的時間比結束專案的時間要短得多(幾周 vs 幾個月)。
當然,這裡的目標函式取決於你的總體目標。對於試圖美化簡歷的本科生來說,最好的專案通常與試圖建立論文方向的研究生或希望他們的研究為現有產品增加價值的行業研究人員不同。
其次,時間限制也很重要——例如,實習專案通常限制在 12-16 周。
最後,必須考慮可用的資源,無論是個人資源(例如,與新手相比,有經驗的研究人員通常能夠更好地解決一個非常開放的問題)或機構資源(例如,計算的可用性、資金用於眾包、工程幫助等)。
基於這些警告,我認為一些不算全面的啟發式方法有助於避免陷入常見陷阱。
啟發 1: 想象不同的未來
寫下專案工作的可能結果,以及你對可能性的估計(儘量具體)。有些專案在極端情況下(成功或失敗)更加極端,而其他專案則更有可能部分成功。即使是粗略的估計也會迫使你考慮當前的資源和限制如何影響成功的可能性,以及可以預期的成功或失敗,例如「如果我成功,這個專案會產生什麼樣的影響?」,以及「我能確定幾周後肯定失敗,還是幾個月後才能知道?」。
反過來,這可以幫助你考慮風險 / 回報組合以及該專案的概況是否符合目標,例如,如果你是一名希望很快畢業的研究生,就不應該接受一個風險很大且很少有人參與的專案。
一個警告是,你應該對這些估計判斷出非常高的不確定性,並且要非常小心過早的最佳化。我認為在當前的最佳估計中新增一些隨機性(例如,根據當前的信念和目標做一些沒有真正「意義」的專案)是一個很好的策略,可以避免因為你無法預料到它們而錯失良機。鑑於我們大多數人都不擅長估計結果及其機率,我仍然認為在評估專案時做出粗略的估計是有用的,即使人們不會太認真地對待這些估計。
啟發 2: 確保「獎勵上限」很高
這可以算是啟發 1 的一個應用,但我認為它的重要性足以獨立存在。請注意,我並不是說「上限高」是一個好的專案的充分條件,但無論你如何定義「成功」或「獎勵」,「下限」通常足以拒絕一個專案。你可能不同意(這很好),但我只是認為,如果最好的情況是一篇「好的」論文(即使風險接近於零),那麼在幾乎任何專案上花費大量時間都是不值得的。我的導師曾經說過,一篇偉大論文比三篇好論文更有價值,我認為這種心態真的很有幫助。當然,你不能保證偉大,但如果你追求「足夠好」,通常是能做到的。
這裡的一個例外是申請博士課程的學生,其中頂級論文的數量似乎很重要。在這種情況下,將發表所需的風險和努力最小化似乎是一個不錯的策略,即使你最終得到了一連串好論文(我建議在你開始攻讀博士學位後改變策略)。
啟發 3:獲取更多資訊
與其做出接受或拒絕專案的不可逆決定,不如收集更多資訊以完善提案並減少不確定性。
一個警告:對專案的投資越多,沉沒成本就越多。因此,這可能看起來很愚蠢,但我認為在此期間將專案視為一種可能性(而不是確定性)來思考和討論是很重要的階段,例如避免說「這是我現在正在做的專案」。
以下是值得嘗試的兩種收集附加資訊的方法:
  • 與人交談
幾個人推銷專案,看看他們是否「購買」你的故事,你對其重要性的估計,當前解決方案的缺點等。我認為在這一點上持懷疑態度和消極的人很好,反而是「That's cool」這種回應並沒有給我們太多資訊。
可能有點矛盾的是,我認為你不應該太聽從他們的看法。大多數原創想法一開始聽起來都不太好。如果你不氣餒,負面反饋正好是模板中「不確定性」部分的絕佳素材。此外,或許這是進行文獻綜述的好方法,因為人們會問你「這不是 X 在 1984 年完成的嗎?」
作為個人軼事,我將一篇獲得了最佳論文獎的論文投給了一些比我更資深、更有經驗的 NLP 人員,他們給了我非常負面的反饋,而且非常肯定。這樣的反應真的出乎我的意料(我認為這個專案很酷),但也確實有助於讓我在模板的「我怎麼知道我解決了它」部分更加謹慎。向專家詢問不確定的具體問題,也是一種降低失敗風險不確定性的方法。
  • 駭客會議
回顧模板的「不確定性」部分,並嘗試減少不確定性,尤其是在可能導致專案失敗的事情上。這裡經常有可能出現作弊,例如,如果建議的解決方案是 A → B → C → D 並且你對 D 有不確定性,那不如先偽造一個 C 而不是從 A → B → C。
駭客攻擊非常適合確保你很好地解決了問題。即使你手動完成所有步驟,也必須檢查自己提出的任何步驟和「輸出」是否現實。
參與駭客會議的結果可能是與一群新人交談的好素材,因為你通常會得到具體的例子,讓人們很容易想象一個專案的「最終結果」。
7
『寫在最後』
John Tukey 說過:「對正確問題的近似答案比對近似問題的精確答案更有價值。」
無論好壞,選擇一個研究專案都會在很長一段時間內(對大多數人來說是 3 到 12 個月)決定你的工作軌跡。此外,正如上面的引述所指出的,即使是在一個好問題上取得平庸的進展,也可能比在一個不那麼重要的問題上取得優異的進展更有價值。

部落格連結

第一篇:
https://medium.com/@marcotcr/coming-up-with-research-ideas-3032682e5852

第二篇:

https://medium.com/@marcotcr/organizing-and-evaluating-research-ideas-e137637b599e
技術交流群邀請函
△長按新增小助手
掃描二維碼新增小助手微信
請備註:姓名-學校/公司-研究方向
(如:小張-哈工大-對話系統)
即可申請加入自然語言處理/Pytorch等技術交流群

關於我們

MLNLP社群  機器學習演算法與自然語言處理 ) 是由國內外自然語言處理學者聯合構建的民間學術社群,目前已經發展為國內外知名自然語言處理社群,旗下包括  萬人頂會交流群、AI臻選匯、AI英才匯  以及  AI學術匯  等知名品牌,旨在促進機器學習,自然語言處理學術界、產業界和廣大愛好者之間的進步。
社群可以為相關從業者的深造、就業及研究等方面提供開放交流平臺。歡迎大家關注和加入我們。

相關文章