天天看點

為什麼ChatGPT用強化學習而非監督學習?

作者:Moore136
為什麼ChatGPT用強化學習而非監督學習?

為什麼ChatGPT非得用強化學習,而不直接用監督學習?原因不是那麼顯而易見。在上周釋出的《John Schulman:通往TruthGPT之路》一文中,OpenAI聯合創始人、ChatGPT主要負責人John Schulman分享了OpenAI在人類回報的強化學習(RLHF)方面的進展,分析了監督學習和強化學習各自存在的挑戰。

基于Schulman的演講内容,以色列巴伊蘭大學教授Yoav Goldberg對強化學習在大型語言模型應用必要性作了深度解讀,進一步對比論證了監督學習與強化學習的特點,并為未來改進提供了思路。

Goldberg在2011年獲得本古裡安大學博士學位,他也是艾倫人工智能研究是以色列分部的研究主管,他也曾在Google(紐約)研究院擔任研究科學家。他在NLP領域深耕十多年,在詞彙語義學、句法分析及對基于深度學習的語言處理等領域作出了突出貢獻。

一、為何使用強化學習?

随着ChatGPT等大型語言模型的釋出,人們對“RLHF訓練(即基于人類回報的強化學習訓練)”的重要性進行了諸多讨論。在訓練語言模型方面,我一度困惑于為什麼強化學習比從示範中學習(也稱為監督學習)更好,難道從示範中學習(或根據語言模型術語中的“指令微調”,學習模仿人類寫的回答)還不夠?

我提出了一個有說服力的理論論據。不過我意識到還有另一個論點,它不僅支援強化學習訓練,而且尤其适用于ChatGPT等模型。OpenAI的John Schulman在其演講的前半部分進行了詳細論述。本文的大部分内容都引用了John的論點,但增加了一些他沒有明确表述的内容(不過我确信這些内容都是John考慮過的)。

本文提供了大量背景知識,以確定讀者可以更好地了解文章内容。如果你想了解文章重點,可以直接看“核心論證”部分。

為什麼ChatGPT用強化學習而非監督學習?

二、背景:監督學習vs強化學習

簡要地解釋一下這兩種學習場景,以便我們能夠達成共識。如果你已經了解了這些内容,可以跳過此部分。

預訓練:在這兩種設定中,首先我們假設語言模型在大量的文本上進行預訓練,以預測下一個token。是以,對于每個詞序列,我們有一個模型可對潛在的下一個詞的選項配置設定機率。通過這種方式,模型會獲得語言的某種内部表示。

經過這一過程,模型的生成文本能力會變強,且能夠根據給定文本字首,生成符合自然習慣的後續文本,但它并不擅長“交流”。例如,當提示(prompted)一個問題時,模型可能會回答該問題或者生成一系列附加問題,也可能會回答這是一個在......的上下文中提出的重要問題等等。

這些都是遵循自然語言文本問題的有效延續(continuation)。我們可以通過編寫輸入文本,來使模型執行我們所希望的語言行為,該延續會解決我們的問題(也被稱之為“提示工程”),但是對于隻想提出問題或指令就讓模型進行回答的非專家使用者來說,這種互動模式并不非常友善。

如果我們希望模型能夠持續回答查詢而不是僅僅完成目前指令,就需要對其進行引導,這個過程稱之為“微調”,即繼續訓練預訓練模型,進而使其表現出我們想要的行為(有些人稱這是“對齊”模型與使用者期望行為)。

監督訓練:在監督學習中(也稱為從示範中學習或“指令微調”),我們會收集一組人類編寫的文本,這些文本以問題或指令的形式出現,并包含了期望的輸出。例如,這些文本可以是某一問題和答案,或者是像帶有人類編寫總結的summarize the following text {text}這樣的任務。

通過在相同的“給定字首預測下一個token”的目标上繼續訓練模型,但這次是在指令-輸出對集合上,模型學會通過執行指令來響應。即模型接收到給定問題的正确輸出的示範,并學會複制輸出結果。我們希望通過這種方式将其泛化到訓練中尚未出現的問題中去。

強化學習(RL):在強化學習中,我們為模型提供指令,但并不提供人工編寫的答案。模型需要自己生成答案。評分機制(例如人類)會讀取生成的答案,并告訴模型這些答案的品質。模型的目标是如何回答以獲得高分。

另一種機制是模型生成多個答案,評分機制告訴模型哪個答案最好。模型的目标是學習生成高分的答案,而不是低分的答案。在這兩種情況下,模型通過生成答案并接收回報來學習。(注意:許多研究人員将強化學習的範圍限定在基于credit配置設定機制的某些技術層面。于他們而言,“我們是否需要強化學習”的問題也許歸結為我們應該使用該技術還是采取其他相關技術來替代。我與他們同樣好奇,但就本文目的而言,我認為任何使用外部評分函數的方法均可視為強化學習,無論其運作機制如何。)

強化學習比監督訓練難得多,原因如下:首先是“credit配置設定”問題。語言模型生成一段token序列,且僅在序列末尾才能獲得一個分數。由于信号很弱,我們不能确定答案哪些部分是良好的,哪些部分是糟糕的。許多有關強化學習的相關技術研究都在嘗試解決該問題,但在本文中我們先不談這個問題。

credit配置設定問題是一個活躍的研究領域,但已經存在合理的解決方案。其次,我們需要一種評分機制來對答案進行評分(或為答案評分或比較兩個答案),而在基于語言的任務中,很難生成自動評分機制(盡管這可能正在改變,下文會簡單論述)。

是以,我們會在強化學習的每一步留下“人類回報”,但這種方式成本高昂且效率低下,考慮到每個人類回報隻能給出一個相當稀疏的信号,問題會更加糟糕。基于以上困難,我們為什麼還要使用強化學習呢?為什麼不僅僅選擇監督學習呢?

三、多樣性論證

對于語言生成模型來說,監督學習/指令調優最大的問題是它們隻能複制示範者給出的确切答案,但實際上,人類語言可以用多種方式傳遞相同的資訊,它們都是切實可行的。如果因模型輕微偏離人類規定的文本而受到“懲罰”,可能會使模型産生困惑。

我們當然可以繼續逼迫模型去學習更難學習的遣詞造句,盡管模型已經學會了生成具有同樣意思、合法的替代性回答。是以,我們非常看好強化學習訓練提供的多樣性表達。考慮到監督學習在實踐中的良好應用,以及訓練強化學習模型所面臨的挑戰,這是一個非常直覺的論點,但不夠有說服力。一直以來,我并不認為這是一個足夠核心的問題,現在我仍這樣想。

四、理論論證

監督學習隻允許正回報(我們向模型展示一系列問題及其正确答案),而RL允許負回報(模型被允許生成答案并得到回報說“這答案是不正确的”),這是我提出的第一個關于LLM領域的監督學習vs強化學習的強有力論點。

從嚴格的學習理論的角度來看,兩者之間有很大的差別:相比正回報,負回報要強大得多。從理論論證的角度,當模型隻從示範中學習時,對抗型(或粗心的)示範者(demonstrator)可以隐瞞重要例子,進而誤導學習者(learner)學習錯誤的假設。

示範者控制着整個學習過程,但如果學習者能夠形成自己的假設,并詢問老師(teacher)假設是否正确(例如強化學習設定),通過這種方式,即使是對抗性老師也無法再欺騙學習者學習錯誤假設,它必須如實告知這一假設是錯誤的,這種方式賦予了學習者主動性,讓學習者更加強大。(當然,前提是對抗型或粗心的老師仍然遵守規則,始終提供真實答案。這是理論架構中的合理假設,這一假設并不影響我們的主體觀點:從互動或提問中學習比從示範中學習更加強大)。

這是我們選擇強化學習的部分原因,但就通過提問訓練大型語言模型交流方面,還有一個更加重要的額外論點。

為什麼ChatGPT用強化學習而非監督學習?

五、核心論證

以下是我們需要強化學習或類似技術的核心原因。前兩個論點依賴于假設,例如"模型可能更難學習"或"粗心的示範者可能會混淆模型",這些假設在實踐中是否成立是未知的,

相反,下面的論點可以被證明是成立的。

語言模型(至少)有三種互動模式:(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)将模型生成的響應與人類提供的響應進行比較,這樣就獲得了一種自動打分的辦法。

為什麼ChatGPT用強化學習而非監督學習?

繼續閱讀