作者 | Yoav Goldberg 責編 | OneFlow
翻譯|賈川、徐佳渝、楊婷
為什麼ChatGPT非得用強化學習,而不直接用監督學習?原因不是那麼顯而易見。以色列巴伊蘭大學教授Yoav Goldberg對強化學習在大型語言模型應用必要性作了深度解讀,進一步對比論證了監督學習與強化學習的特點,併為未來改進提供了思路。
Goldberg在2011年獲得本古裡安大學博士學位,他也是艾倫人工智慧研究所以色列分部的研究主管,他也曾在Google(紐約)研究院擔任研究科學家。他在NLP領域深耕十多年,在詞彙語義學、句法分析及對基於深度學習的語言處理等領域作出了突出貢獻。
注:以下內容由OneFlow編譯發佈,轉載請聯繫OneFlow獲得授權

為何使用強化學習?
隨著ChatGPT等大型語言模型的發佈,人們對「RLHF訓練(即基於人類反饋的強化學習訓練)」的重要性進行了諸多討論。在訓練語言模型方面,我一度困惑於為什麼強化學習比從演示中學習(也稱為監督學習)更好,難道從演示中學習(或根據語言模型術語中的「指令微調」,學習模仿人類寫的回答)還不夠?
我提出了一個有說服力的理論論據。不過我意識到還有另一個論點,它不僅支持強化學習訓練,而且尤其適用於ChatGPT等模型。OpenAI的John Schulman在其演講的前半部分進行了詳細論述。本文的大部分內容都引用了John的論點,但增加了一些他沒有明確表述的內容(不過我確信這些內容都是John考慮過的)。
本文提供了大量背景知識,以確保讀者可以更好地理解文章內容。如果你想了解文章重點,可以直接看「核心論證」部分。

背景:監督學習vs強化學習
簡要地解釋一下這兩種學習場景,以便我們能夠達成共識。如果你已經了解了這些內容,可以跳過此部分。
預訓練:在這兩種設置中,首先我們假設語言模型在大量的文字上進行預訓練,以預測下一個token。因此,對於每個詞序列,我們有一個模型可對潛在的下一個詞的選項分配概率。通過這種方式,模型會獲得語言的某種內部表示。
經過這一過程,模型的生成文字能力會變強,且能夠根據給定文字前綴,生成符合自然習慣的後續文字,但它並不擅長「交流」。例如,當提示(prompted)一個問題時,模型可能會回答該問題或者生成一系列附加問題,也可能會回答這是一個在……的上下文中提出的重要問題等等。
這些都是遵循自然語言文字問題的有效延續(continuation)。我們可以通過編寫輸入文字,來使模型執行我們所希望的語言行為,該延續會解決我們的問題(也被稱之為「提示工程」),但是對於只想提出問題或指令就讓模型進行回答的非專家使用者來說,這種互動模式並不非常方便。
如果我們希望模型能夠持續回答查詢而不是僅僅完成當前指令,就需要對其進行引導,這個過程稱之為「微調」,即繼續訓練預訓練模型,進而使其表現出我們想要的行為(有些人稱這是「對齊」模型與使用者期望行為)。
監督訓練:在監督學習中(也稱為從演示中學習或「指令微調」),我們會收集一組人類編寫的文字,這些文字以問題或指令的形式出現,幷包含了期望的輸出。例如,這些文字可以是某一問題和答案,或者是像帶有人類編寫總結的summarize the following text {text}這樣的任務。
通過在相同的「給定前綴預測下一個token」的目標上繼續訓練模型,但這次是在指令-輸出對集合上,模型學會通過執行指令來響應。即模型接收到給定問題的正確輸出的演示,並學會複製輸出結果。我們希望通過這種方式將其泛化到訓練中尚未出現的問題中去。
強化學習(RL):在強化學習中,我們為模型提供指令,但並不提供人工編寫的答案。模型需要自己生成答案。評分機制(例如人類)會讀取生成的答案,並告訴模型這些答案的質量。模型的目標是如何回答以獲得高分。
另一種機制是模型生成多個答案,評分機制告訴模型哪個答案最好。模型的目標是學習生成高分的答案,而不是低分的答案。在這兩種情況下,模型通過生成答案並接收反饋來學習。(注意:許多研究人員將強化學習的範圍限定在基於credit分配機制的某些技術層面。於他們而言,「我們是否需要強化學習」的問題也許歸結為我們應該使用該技術還是採取其他相關技術來替代。我與他們同樣好奇,但就本文目的而言,我認為任何使用外部評分函數的方法均可視為強化學習,無論其運行機制如何。)
強化學習比監督訓練難得多,原因如下:首先是「credit分配」問題。語言模型生成一段token序列,且僅在序列末尾才能獲得一個分數。由於信號很弱,我們不能確定答案哪些部分是良好的,哪些部分是糟糕的。許多有關強化學習的相關技術研究都在嘗試解決該問題,但在本文中我們先不談這個問題。
credit分配問題是一個活躍的研究領域,但已經存在合理的解決方案。其次,我們需要一種評分機制來對答案進行評分(或為答案評分或比較兩個答案),而在基於語言的任務中,很難生成自動評分機制(儘管這可能正在改變,下文會簡單論述)。
因此,我們會在強化學習的每一步留下「人類反饋」,但這種方式成本高昂且效率低下,考慮到每個人類反饋只能給出一個相當稀疏的信號,問題會更加糟糕。基於以上困難,我們為什麼還要使用強化學習呢?為什麼不僅僅選擇監督學習呢?

多樣性論證
對於語言生成模型來說,監督學習/指令調優最大的問題是它們只能複製演示者給出的確切答案,但實際上,人類語言可以用多種方式傳遞相同的資訊,它們都是切實可行的。如果因模型輕微偏離人類規定的文字而受到「懲罰」,可能會使模型產生困惑。
我們當然可以繼續逼迫模型去學習更難學習的遣詞造句,儘管模型已經學會了生成具有同樣意思、合法的替代性回答。因此,我們非常看好強化學習訓練提供的多樣性表達。考慮到監督學習在實踐中的良好應用,以及訓練強化學習模型所面臨的挑戰,這是一個非常直觀的論點,但不夠有說服力。一直以來,我並不認為這是一個足夠核心的問題,現在我仍這樣想。

理論論證
監督學習只允許正反饋(我們向模型展示一系列問題及其正確答案),而RL允許負反饋(模型被允許生成答案並得到反饋說「這答案是不正確的」),這是我提出的第一個關於LLM領域的監督學習vs強化學習的強有力論點。
從嚴格的學習理論的角度來看,兩者之間有很大的區別:相比正反饋,負反饋要強大得多。從理論論證的角度,當模型只從演示中學習時,對抗型(或粗心的)演示者(demonstrator)可以隱瞞重要例子,從而誤導學習者(learner)學習錯誤的假設。
演示者控制著整個學習過程,但如果學習者能夠形成自己的假設,並詢問老師(teacher)假設是否正確(例如強化學習設置),通過這種方式,即使是對抗性老師也無法再欺騙學習者學習錯誤假設,它必須如實告知這一假設是錯誤的,這種方式賦予了學習者主動性,讓學習者更加強大。(當然,前提是對抗型或粗心的老師仍然遵守規則,始終提供真實答案。這是理論框架中的合理假設,這一假設並不影響我們的主體觀點:從互動或提問中學習比從演示中學習更加強大)。
這是我們選擇強化學習的部分原因,但就通過提問訓練大型語言模型交流方面,還有一個更加重要的額外論點。

核心論證
以下是我們需要強化學習或類似技術的核心原因。前兩個論點依賴於假設,例如”模型可能更難學習”或”粗心的演示者可能會混淆模型”,這些假設在實踐中是否成立是未知的,相反,下面的論點可以被證明是成立的。
語言模型(至少)有三種互動模式:(a)文字型(text-grounded): 為模型提供文字和說明(「總結此文字」,「基於此文字,以色列的人口是多少」,「本文中提到的化學名稱是什麼」,「將此文字翻譯成西班牙語」等),讓模型基於我們提供的文字生成答案;(b)求知型(knowledge-seeking): 向模型提供問題或指導,讓模型根據內在知識(「流感的常見原因是什麼」)提供(真實)回答。(c)創造型(creative): 為模型提供問題或說明,然後讓模型進行創造性輸出。(「寫一個關於…的故事」)
我們的論點是基於第二種互動模式(求知型查詢),希望在這種查詢中得到真實(自信)的答案,我們希望模型在對答案沒把握的情況下能夠如實回答「我不知道」或拒絕回答這一問題。
對於這類互動模式,由於監督訓練可能會讓模型撒謊,所以我們必須使用RL。核心問題是:我們希望模型根據內部知識進行回答,但我們並不知道模型內部知識包含的內容。
在監督訓練中,我們給模型提供問題及正確答案,並訓練模型複製提供的答案。這裡有兩種情況:(1)模型「知道」答案。這種情況下,監督學習能夠正確推動模型將答案與問題相關連,並且有望讓模型執行相似的步驟,回答將來遇到的類似問題。這是所期望的行為。(2)模型不知道答案。在這種情況下,監督訓練還是會促使模型給出答案。
現在,我們有兩種選擇。一種可能是,它會促使模型記住特定的問答對。這種做法本身並沒什麼壞處,但不太高效,因為我們的目的是讓模型具有泛化能力,並且能回答任何問題,而不只是那些在訓練資料中出現的問題。但如果我們使模型在這些情況下能做到泛化,那麼實際上就是在教模型捏造答案,相當於鼓勵模型「說謊」,這很不好。
由於我們無法確定模型知道哪些資訊或不知道哪些資訊,所以無法避免第二種情況,這對監督訓練來說是一個真實且嚴重的問題。
我們不能僅依靠監督學習來訓練模型生成可信任回答,還需要強化學習的加持。與監督學習不同,強化學習不會鼓勵模型編造答案:即使模型最初確實猜對了一些答案並錯誤地學習了「編造」行為,但長遠來看,模型會因編造答案的得分較低(很可能是不正確的)而學會依賴內部知識或選擇放棄回答。

教導模型放棄回答
當模型不知道答案時,我們希望它能夠放棄回答並給出「我不知道」或類似的答案。但由於我們不知道模型是否知道答案,所以這並不是一件容易的事,在監督環境中很難做到。我們可以引導模型規避某些類型的問題(例如「從不回答涉及人類的問題」),並回答「我不知道」。但這不是在答案未知時放棄回答的預期行為,只是一個非常薄弱的替代方法(proxy)。
然而,這對於強化學習設置也具有挑戰:模型可能從一開始就不會生成「我不知道」的答案,因此我們無法鼓勵它作出這種回答。解決這個問題的方法之一是,先進行一些監督訓練,學習在某些情況下生成「我不知道」的答案,然後再進行強化學習訓練。
但這種方法也有弊端,即在監督學習和強化學習中,模型可能會過度回答「我不知道」。這是一個開放的研究問題,可以嘗試通過「定製獎勵函數」來解決:將正確答案賦予非常高的分數,放棄回答的答案賦予中低分數,不正確的答案賦予強烈負分。當然,想做到這一點也並非易事。

模型竊取 / 蒸餾的影響
OpenAI在GPT模型的強化學習類型調優(RL-type tuning)方面投入了大量精力。原因有很多,他們的部分動機是希望通過鼓勵模型在不知道答案時放棄回答來確保準確性和真實性。
最近有一種趨勢,即採用其他公開可用的基礎語言模型,並對它們進行訓練,以期能夠複製GPT模型的出色行為。
這種做法類似於監督式訓練或指令調優:通過訓練,模型可以準確生成GPT模型的答案。這對於教模型執行指令應該很有效,但卻不適用於回答知識查詢類問題(案例b)。
公開可用的基礎模型和OpenAI模型可能具有不同的知識集,因此訓練模型以複製GPT的答案可能會面臨與監督學習同樣的問題,即鼓勵模型編造事實,或在它知道正確答案但GPT模型不知道的情況下放棄回答。那麼,解決方案是用強化學習對這些模型進行訓練,但這是否太過昂貴?

無人類反饋的強化學習
長期以來,使用強化學習訓練生成語言任務對大多數玩家來說都不切實際:由於缺乏可靠的自動評分指標,強化學習訓練需要對每個訓練樣本進行人工反饋。這既耗時又昂貴,特別是對於需要查看數千到數萬甚至數十萬個示例才能學習的模型。
然而,強化學習訓練現在變得實用了:首先,出現了可以從較少示例中學習的大型預訓練語言模型。更重要的是,這些模型為強化學習循環(RL loop)中去掉人類參與鋪平了道路。
監督訓練對於文字相關的任務非常有效,而且大型模型可以很好地學習執行一些任務。例如,讓模型確定兩個文字是否意思相同,或者一個文字是否包含另一個文字中沒有的事實(還可以將任務分解,讓模型「生成所有可從該文字回答的所有’問答對’」,然後針對每個問題詢問「在其他文字中是否有該問題的答案,答案是什麼」)。
根據經驗來看,大型語言模型(甚至中型語言模型)可以使用監督學習可靠地學習執行這些任務,這為我們提供了可用於強化學習設置的有效自動評分機制。
我們可以使用人類提供的指令-響應對進行訓練,不過,要讓模型生成自己的響應,而不是直接複製人類響應,然後用在監督方式下進行訓練的專用文字對比模型(text comparison model)將模型生成的響應與人類提供的響應進行比較,這樣就獲得了一種自動打分的辦法。