OpenAI科學家最新大語言模型演講火了,洞見LLM成功的關(guān)鍵
近日,OpenAI 研究科學家 Hyung Won Chung 在首爾國立大學做了題為「Large Language Models (in 2023)」的演講。他在自己的 YouTube 頻道上寫到:「這是一次雄心勃勃的嘗試,旨在總結(jié)我們這個爆炸性的領(lǐng)域?!?/span>
視頻地址:https://www.youtube.com/watch?v=dbo3kNKPaUA
在這次演講中,他談到了大型語言模型的涌現(xiàn)現(xiàn)象以及大模型的訓練和學習過程,其中包括預訓練和后訓練階段,最后他還展望了一下未來,認為下一次范式轉(zhuǎn)變是實現(xiàn)可學習的損失函數(shù)。
在深入這次演講的具體內(nèi)容之前,我們先簡單認識一下這位演講者。
Hyung Won Chung 是一位專攻大型語言模型的研究者,博士畢業(yè)于麻省理工學院,之后曾在谷歌大腦工作過三年多時間,于今年二月份加入 OpenAI。
他曾參與過一些重要項目的研究工作,比如 5400 億參數(shù)的大型語言模型 PaLM 和 1760 億參數(shù)的開放式多語言語言模型 BLOOM(arXiv:2211.05100)。機器之心也曾介紹過他為一作的論文《Scaling Instruction-Finetuned Language Models》。
下面進入演講內(nèi)容。
演講開篇,Chung 便指出,現(xiàn)在所謂的大型語言模型(LLM)在幾年后就會被認為是小模型。隨著人們對模型規(guī)模(scale)的認知的變化,目前有關(guān) LLM 的許多見解、觀察和結(jié)論都會變得過時甚至可能被證明是錯誤的。
但他也指出,幸運的是,那些基于第一性原理(First Principle)的見解卻會有相對更長的生命力,因為它們比那些看似絢麗多彩的先進思想更為基礎(chǔ)。
Chung 的這次演講聚焦的正是這些更為基礎(chǔ)的思想,他希望這些內(nèi)容在未來幾年內(nèi)依然具有參考價值。
大模型的涌現(xiàn)現(xiàn)象
大型語言模型有一個有趣的現(xiàn)象:只有當模型達到一定規(guī)模時,某些能力才會顯現(xiàn)。
如下圖所示,很多模型在規(guī)模達到一定程度時,在準確度等某些性能指標上會出現(xiàn)急劇的變化,甚至模型會突然有能力解決在規(guī)模較小時完全無法解決的問題。這種現(xiàn)象被稱為涌現(xiàn)(emergence)。
這個有趣現(xiàn)象給 AI 研究帶來了很多重要的新視角。
Chung 首先提到的視角是「yet」,也就是說就算某個想法或能力目前無法實現(xiàn),但隨著規(guī)模擴展,也許后面會突然能夠?qū)崿F(xiàn)。
這一視角轉(zhuǎn)變可能看似簡單,卻涉及到我們對語言模型的根本看法。一項對當前模型無用的技術(shù)也許三五年后就能變得有用,因此我們不應對當前的各種事物抱有永恒不變的觀念。
他指出,「yet」視角之所以并不是顯而易見的,是因為我們習慣了在一個基礎(chǔ)公理不變的環(huán)境中工作。就像在進行自然科學實驗時,如果你已經(jīng)通過實驗發(fā)現(xiàn)某個科學思想不對,那么你必定相信如果三年后再實驗一次,這個思想還是不可能變正確;而且就算再過三十年,結(jié)果依然如此。
那么語言模型領(lǐng)域是否也存在類似于這類公理的概念呢?
Chung 認為可以把一定時段內(nèi)最強大的模型視為這種「公理」,因為在這段時間里,很多研究實驗都是基于該模型進行的。但有趣的地方在于:最強大的模型會變化。
舉個例子,在 GPT-4 誕生時,它是最強大的,研究者基于其進行了大量實驗,得到了許多研究成果和見解。但當新的更強大模型出現(xiàn)時,之前發(fā)現(xiàn)的一些見解和想法就過時了,甚至出現(xiàn)了許多新舊實驗結(jié)果相矛盾的情況。
這就需要我們持續(xù)刷新已知的知識和觀念,Chung 使用了「unlearn」一詞,也就是說要刻意地去忘記已經(jīng)不可行的思路。
Chung 表示目前還很少有人這樣實踐。而在競爭激烈的 AI 領(lǐng)域,很多只有一兩年經(jīng)驗的新人卻能提出有重大意義的思想,Chung 認為其中一部分原因就是這些新人會去嘗試之前有經(jīng)驗的人嘗試過的無效想法 —— 但這些想法卻能有效地用于當前的模型。
因此,Chung 呼吁研究者要走在規(guī)模擴展曲線之前。
他分享說自己在進行文檔實驗時發(fā)現(xiàn)有些實驗會因為模型「智力不足」而失敗,也就是說模型沒有足夠的推理能力來解決一些困難的數(shù)學或編程問題。他會將這些失敗實驗記錄下來,但并不會斷言這些實驗就徹底失敗了,而是會進行一些處理,使得未來能輕松地重新運行這些實驗。每當有更好的新模型出現(xiàn)時,他就會重新運行這些實驗,觀察其中哪些實驗會成功,哪些會繼續(xù)失敗。通過這種方式,他可以 unlearn 一些東西,不斷更新自己的認知和理解,讓自己適應模型隨規(guī)模擴展的涌現(xiàn)現(xiàn)象。
接下來,Chung 以一種簡單直觀的方式對涌現(xiàn)現(xiàn)象進行了說明。
如左圖所示,能力 1 是 GPT-4 尚不具備但卻非常接近獲得的能力,稍強一點的模型可能就能獲得這一能力,實現(xiàn)突然的能力躍升。對于中圖的能力 2,即使強大的 GPT-4 也遙不可及,在短期內(nèi)可能無論如何也不可能觸及。至于右圖的能力 3,GPT-3 就已經(jīng)具備,之后改進只會給這項能力帶來增量式的提升。
但在現(xiàn)實中,研究者可能很難確定自己正在解決的問題是屬于哪一類。而 Chung 認為,只要有前面所說的思維框架 —— 不斷更新自己的認知和理解,就能更輕松地識別自己正在解決的問題。
規(guī)模擴展何以有效?
Chung 說:「總結(jié)起來,我們做的一切都與規(guī)模相關(guān),采用規(guī)模優(yōu)先(scale first)的視角是至關(guān)重要的?!沟?guī)模擴展何以有效呢?
首先我們要從 Transformer 談起。
目前所有的 LLM 都使用了 Transformer 架構(gòu)。但這里不關(guān)心其架構(gòu)細節(jié),而是著眼其基本思想。
下面我們就從功能的角度來看看 Transformer。
概括地看,Transformer 就是使用了大量矩陣乘法的序列到序列的映射,之后再進行一些數(shù)組變換。
其輸入是一個由 [batch, d_model, length] 構(gòu)成的數(shù)組,其中 d_bacth 差不多就是該 Transformer 的寬度,length 是序列長度。
在訓練階段,輸出是一個與輸入大小相同的數(shù)組。當然,在推理階段的情況不一樣,不過由于規(guī)模擴展發(fā)生在預訓練階段,所以輸出和輸入的長度一樣。
這就是 Transformer 的核心思想,非常簡單的序列到序列映射。
下面將從功能角度描述從輸入到輸出的過程。
通常一開始有一個句子,比如「Many words don't map to one token: indivisible.」這是一個字符串,其形狀為 []。
首先,將這個句子 token 化。token 化通常是通過一個外部模型來完成的,比如 BPE 或 SentencePiece,其目標是盡可能地壓縮文本。這里經(jīng)過 token 化后得到了一個整數(shù)列表,其形狀就為 [length]。
然后,將這些整數(shù)嵌入到一個隱藏空間中,這通常被稱為詞嵌入(word embedding)?,F(xiàn)在,每個 token 都被表示成了一個寬為 d_model 的向量,其長度為 length,那么其形狀就為 d_model×length。
接下來就是計算量最大的地方 ——n 層 Transformer。簡單來說,這個過程就是一個序列到序列的映射。這里的目標是讓每個序列 token 與該序列中的其它 token 交互。這里我們不對其交互細節(jié)做任何假設(shè),只是讓它們交互。在 Transformer 中,讓它們交互的方式就是讓它們可以執(zhí)行點積運算。模型要學習的就是如何執(zhí)行這個點積運算。
之所以主要的計算量都在這里,是因為這里的計算涉及到高維數(shù)組,需要執(zhí)行大量矩陣乘法和數(shù)組運算。
經(jīng)過 n 層 Transformer 后,可以得到一個序列,之后再使用一個損失函數(shù)運算一番,基于預測的下一 token 得到一個最大似然。最后得到一個數(shù)值。
之后,使用結(jié)果執(zhí)行反向傳播,更新所有參數(shù)。
在實際操作中,這個訓練過程是批量進行的,這就需要在數(shù)據(jù)結(jié)構(gòu)的維度中增添一個 batch 維度。在這些數(shù)據(jù)批之間,唯一的依賴關(guān)系就是在最后計算損失時是計算它們的平均損失。
當我們談論擴展 Transformer 時,我們通常說的就是擴展其中計算量最大的那部分。
依照第一性原理,擴展 Transformer 就意味著要使用大量計算機高效地執(zhí)行上面的矩陣乘法運算。
這個過程需要將 Transformer 層中涉及的所有矩陣(數(shù)組)分配到各臺計算機中。這個分配過程至關(guān)重要,必須要在盡可能降低機器之間通信量的同時來實現(xiàn)它。這是從非常底層的視角來理解規(guī)模擴展。
矩陣乘法
為了更好地理解這一點,我們首先需要了解矩陣乘法,尤其是在多臺機器上執(zhí)行矩陣乘法。如下圖所示,現(xiàn)在假設(shè)我們有 8 臺機器 —— 它們可能是 CUP 或 GPU。
現(xiàn)在我們要執(zhí)行一個 16×16 大小的矩陣乘法:A×B=C。
首先我們以一種抽象的方式來思考硬件:定義一個 2×4 的 mesh 網(wǎng)格。注意這個布局是虛擬的,與這些機器的實際物理位置無關(guān)。
然后為該網(wǎng)格定義 x 和 y 軸(硬件軸),之后每個參與計算的數(shù)組都將按照這個坐標軸進行映射 —— 將每個數(shù)組軸映射到硬件軸。我們可以從下圖的顏色對應中看到這種映射。
現(xiàn)在我們來看輸出矩陣 C。我們希望在矩陣乘法運算完成之后,C 矩陣左上角的 1 部分能位于機器 1 中。
這時候機器 1 要做的就是對矩陣 A 的第 1 行和矩陣 B 的第 1 列執(zhí)行 all-gather 操作(這是 MPI 的操作之一),之后再執(zhí)行計算得到 C 的 1 部分。
以矩陣 A 的第 1 行為例,all-gather 需要四臺機器之間進行通信。機器 1 在與 2、3、4 通信之后會獲取其本地數(shù)據(jù)的副本;機器 2、3、4 也會執(zhí)行類似的操作。故而該操作有 all-gather(全收集)之名。
all-gather 之后,機器 1 就有了計算所需的所有數(shù)據(jù)副本。
這個過程的關(guān)鍵之處在于其可以在全部 8 臺機器上并行地執(zhí)行。因此這個過程可以通過并行的方式得到加速,而其一大成本來源就是機器之間的通信。因此,在速度和通信成本存在一個權(quán)衡。
einsum
現(xiàn)在可以將矩陣乘法泛化成愛因斯坦求和方法(einsum),這是一種更高層面的看待數(shù)組計算的視角。
它的有兩個規(guī)則:1. 如果一個字母在兩個輸入中都出現(xiàn)了,那么就執(zhí)行逐分量的乘法;2. 如果輸出中不包含一個字母,則在該維度上執(zhí)行求和。
對于規(guī)則 1,以上圖中的第一行運算為例,np.einsum ("i,i->i",a,b) 中的兩個輸入中都有 i(見引號內(nèi)部),這就意味著要直接執(zhí)行逐分量乘法來得到 i;這在 Numpy 中就等價于 a*b。
對于規(guī)則 2,則可見第二行運算,其中有 "i,i→",這時候就需要先執(zhí)行逐分量乘法,然后求和。
而在第三行中,則有 "ij,j->i",這時候就需要在 j 上執(zhí)行點積,這也可被視為矩陣向量乘法。
當然,上面只給出了一兩維的示例,einsum 也可以支持更多維度。
從 einsum 的角度看,矩陣乘法可以寫成如下形式:
現(xiàn)在回到前面在 8 臺機器上的矩陣乘法。
現(xiàn)在我們已經(jīng)為數(shù)組軸定義了 m、n、p 這樣的標簽,就可以將它們映射到硬件軸,比如將 m 映射到 y,將 n 映射到 x?,F(xiàn)在我們希望通過一個神奇的裝飾器函數(shù) parallelize 來做到這一點(后面會更具體說明),它所做的就是在這兩個維度上以并行方式執(zhí)行 all-gather。
現(xiàn)在我們了解了矩陣乘法,接下來看 Transformer。
在 Transformer 中,最復雜的運算操作是自注意力層,其中除了 softmax 之外的一切都可以使用 einsum 表示。
然后將其對應到之前設(shè)定的 8 臺機器,這時候我們不再使用 x 和 y 來標記硬件軸,而是使用研究者更習慣的「model」和「data」,分別對應于模型并行維度和數(shù)據(jù)并行維度。
現(xiàn)在稍微修改一下上面的代碼,添加并行化,將 b 映射到 data,n 是序列長度(Transformer 不對序列長度做并行化處理),h 是注意力頭的數(shù)量(代表模型)—— 對注意力機制的并行化就是通過多頭來實現(xiàn)。
如此,接下來只需使用相同的代碼,就能實現(xiàn)并行化;下面是使用 8 臺機器的示例,但這一框架在任何機器數(shù)量下都適用。
一個 TPU v4 pod 有 3072 塊 TPU chip。Chung 表示在訓練 PaLM 模型時,他們使用了 2 個 pod,也就是 6144 塊 TPU chip,其中每一塊都與最高端的 GPU 一樣強大。
現(xiàn)在有了這么多機器,可以和之前一樣定義一個網(wǎng)格:模型并行維度為 48、數(shù)據(jù)并行維度為 64。
最后還有一個細節(jié):數(shù)據(jù)中心網(wǎng)絡(DCN)數(shù)據(jù)并行維度。這是因為這兩個 pod 并不是直接連接在一起的,而是通過數(shù)據(jù)中心網(wǎng)絡連接的,其速度大概是 25 Gbps。這比 pod 內(nèi)部的通信慢多了。因此不應在這個層面上執(zhí)行模型并行化。實際上,他們的做法是在梯度計算之后在這個數(shù)據(jù)中心網(wǎng)絡上對梯度求和。這只需要做一次,耗時很短。(在訓練 5400 億參數(shù)的 PaLM 模型時,每個訓練步驟耗時大概 17 秒,因此這點耗時對整體影響不大。)
并行化裝飾器
前面我們是假設(shè)并行化裝飾器有效,但它究竟是如何工作的呢?一種方法是 GSPMD(arXiv:2105.04663)。
GSPMD 是一種基于編譯器的方法。使用該方法,你在寫神經(jīng)網(wǎng)絡時可以假設(shè)你的機器擁有無限內(nèi)存而不考慮并行化。然后將神經(jīng)網(wǎng)絡的核心部分表示成計算圖,再將該圖的輸入和輸出映射到硬件軸。最后將該圖交給 XLA;它會自動插入必要的通信操作(如 all-gather),從而充分利用機器的全部能力。
Chung 表示這個過程很神奇,就像是魔法,但該方法并不總是有效,一些人在使用時會遇到困難。但整體來說還是有用的,畢竟 T5、PaLM、Switch Transformer 等來自谷歌的大模型的后端都使用了 GSPMD。
當然,也還存在其它一些方法,但它們都涉及到將數(shù)組軸映射到硬件。
對大多數(shù)研究者來說,GSPMD 可能很復雜,但 JAX 提供了一個前端 pjit,其使用方法如下:
大模型的規(guī)模擴展問題
對于大模型來說,預訓練的成本很高。下圖是 Llama-2 模型預訓練過程的困惑度變化情況,可以看到最后每個模型都處理了 2 萬億個 token!這可需要不少的時間。
但在實踐中,我們不會等到訓練完成才觀察結(jié)果,也許一開始我們會訓練 500 億個 token,然后得到這樣的圖表:
這個時候我們就能斷言其中的 70B 模型表現(xiàn)最好嗎?并不能,因為它們的表現(xiàn)還很接近。這時候要考慮如何投入資源是很困難的。
這就涉及到了預訓練的一大根本課題:擴展律(scaling laws)。
如圖所示的擴展律來自《GPT-4 技術(shù)報告》(其中 x 軸是以 GPT-4 為標準歸一化之后的訓練計算成本),其中的規(guī)律是根據(jù)更小的模型得出的,但其能準確預測 GPT-4 的最終損失。
現(xiàn)在進行規(guī)模擴展是比幾年前容易多了,但整體依然很困難,并不是說改一些參數(shù)就能實現(xiàn)。
舉個例子,在 PaLM 的訓練過程中,出現(xiàn)了損失突刺(loss spike)現(xiàn)象(比如損失從 2 突然變成了 6),這讓很多人都感到不安。
他們使用同樣的數(shù)據(jù)訓練了三個不同規(guī)模的模型,但只有最大的一個出現(xiàn)了損失突刺現(xiàn)象。這讓研究者很難進行調(diào)試,因為無法在更小的模型上復現(xiàn)出來。而且這也不是由數(shù)據(jù)質(zhì)量差導致的。而當出現(xiàn)這種情況,讓人無法決定該怎么辦時,都只得讓大量機器閑置下來,造成巨大浪費。這些方面都有需要攻克的難題。
盡管現(xiàn)在已經(jīng)有 Llama-2 等一些模型讓人可以更輕松地訓練給定大小的模型,但是進一步擴展就困難重重了。
后訓練也很重要
所以,擴大規(guī)模并非萬能方法,還需要開發(fā)出很多工程方法,其中很多都可以歸類為后訓練(post-training)。
為什么我們需要后訓練?
首先,我們無法直接與預訓練模型對話,因為其訓練目標就只是預測下一個 token。下面給出了一個例子:對于左側(cè)的輸入,預訓練后的 PaLM 540B 就只會不斷預測下一個詞;但我們期望是類似右側(cè)的答案。
當然,我們可以通過一個技巧來解決這個問題,也就是將問題構(gòu)造成某種形式,使得下一個 token 就是答案本身。下圖給出了一個示例:
如果模型還是不回答問題,那么我們就可以在前面提供一些示例,演示模型該如何給出下一個 token。這種方法被稱為 few-shot prompting。這種方法很強大,但并不普遍適用。
預訓練模型還有另一個問題:總是生成 prompt 的自然延續(xù),即便 prompt 本身是惡意和有害的。預訓練模型不知道如何拒絕響應惡意 prompt。而這些能力可通過后訓練方法來獲得;人們通常將這樣的過程稱為對齊人類價值觀。
對于當前的 LLM,后訓練是指下圖中預訓練之后的階段。
指令微調(diào)
概括來說,指令微調(diào)是將所有任務都表述成自然語言指令到自然語言響應的映射。
以文本分類任務為例,就是文本到標簽的映射。但 2018 年的 BERT 在這個過程中必需要有針對這個特定任務的線性層,以將句子投影到分類空間。這樣一來,用于本文分類任務的模型就很難用于其它任務了。
一年后誕生的 T5 模型就不需要這樣的線性層了。它做的是文本到文本的映射,能廣泛地適用于各種不同的文本任務。
但這也會有個問題:T5 支持多種不同任務,但它怎么知道當前任務是什么任務呢?研究者的做法是在輸入中添加元數(shù)據(jù),比如 cola 和 stsb。
但這種做法不自然,不符合人類的表達習慣。接下來的發(fā)展就是讓模型能夠理解以自然語言表達的任務。比如現(xiàn)在我們不再使用 cola 來指示模型執(zhí)行 GLUE 中的 CoLA 任務,而是問:「下面的句子是否是可接受的?」
為什么 T5 模型誕生的時候沒有采用這種方法呢?Chung 表示是因為當時人們認為語言模型不能理解自然語言指令,反而覺得使用元數(shù)據(jù)的方式更自然。
當更大的模型出現(xiàn)后,理解自然語言的能力就涌現(xiàn)出來了,然后我們就能使用豐富的自然語言將各種任務統(tǒng)一起來。之后,當模型遇到未曾見過的任務時,模型只需響應自然語言指令即可。這也是一種泛化。
這就引出了一個問題:如果訓練集中有更多指令,能不能得到更好的模型,實現(xiàn)更好的泛化呢?
Chung 等人通過一個大規(guī)模實驗檢驗了這一假設(shè)。為此,他們收集了 1836 個學術(shù)任務,然后將它們混合起來用于訓練。
如下圖所示,y 軸是在評估集上的平均分數(shù)。他們選擇了 80 億參數(shù)的 PaLM 模型難以應對的 6 個訓練期間未曾見過的任務來進行測試,發(fā)現(xiàn)隨著模型增大以及訓練任務增多,模型的表現(xiàn)越來越好。但可以看出來,任務數(shù)量增至一定程度時,模型的性能增幅也會降低。這是因為任務的數(shù)量沒有任務的多樣性重要。
機器之心曾經(jīng)報道過這項研究,參閱《30 億跑贏 GPT-3 的 1750 億,谷歌新模型引熱議,然而卻把 Hinton 年齡搞錯了》。
于是 Chung 得出了結(jié)論:指令微調(diào)的效果很好,但卻存在固有的限制。這一現(xiàn)象的根本原因是什么呢?
首先我們確定一下指令微調(diào)的學習目標:不管是使用交叉熵損失還是最大似然,目標都是對于給定輸入都能給出單個正確回答,而其它答案都是錯的。在強化學習文獻中,這被稱為行為克?。╞ehavior cloning)。
我們希望如果能有足夠多的這些答案的變體,模型就能泛化用于不同的任務類型。為此,就需要形式化模型在給定輸入下的正確行為,以便模型克隆。
過去,這種操作執(zhí)行起來很簡單,但現(xiàn)在難度卻在增大。
下面將通過一些示例來說明。
首先是一個思想實驗,假設(shè)有一個問題,它只有唯一正確的答案,比如「2+3=?」有唯一正確答案「5」。這沒有異議。
而對于翻譯任務,我們也可以大致提供一個唯一正確答案,當然,一個句子翻譯成另一種語言時可能會有多種變體。
但對于以下任務呢:以圣誕老人的口吻寫一封信給一位五歲孩童,解釋圣誕老人不是真的,要求語氣溫柔,不要讓這個孩子傷心。
Chung 表示自己沒信心為這個任務給出一個好答案。
對于這樣的任務,Chung 認為并不適合使用最大似然作為大模型的學習目標。
接下來是一個更為實際的例子,Chung 表示自己經(jīng)常使用這一 prompt 來測試新模型:用 Python 通過梯度下降實現(xiàn) logistic 回歸。
這個任務并不存在唯一正確的答案 —— 可能有函數(shù)式編程風格的答案,也可能有面向?qū)ο笫降拇鸢?。這些不同的答案可能都是正確的。這樣一來,使用其中一個作為唯一正確答案是合適的做法嗎?
Chung 給出了一些觀察:
- 我們越來越希望教會模型掌握更抽象的行為
- 指令微調(diào)的目標函數(shù)似乎是教授這些行為的「瓶頸」
- 最大似然目標是「預定義的」函數(shù)(即不可學習的參數(shù))
- 我們能否參數(shù)化目標函數(shù)并學習它?
這就是 RLHF 的核心思想。
使用人類反饋的強化學習(RLHF)
強化學習(RL)提供了一種學習目標函數(shù)的方法。
強化學習的目標是最大化預期的獎勵函數(shù),而我們可以使用一個神經(jīng)網(wǎng)絡模型(獎勵模型)來為更為復雜的情況制定獎勵。
那么怎么訓練這個獎勵模型呢?
對于給定的輸入,為其提供兩個可能的答案,然后讓人類提供對這兩個答案的偏好。也就是說不是提供一個最佳答案,而是讓人類評估兩個答案中哪個更好。AI 模型就可以依照這種方式學習人類的偏好。
比如在上圖的例子中,人類更偏好結(jié)果 2,但這個結(jié)果并不見得就是最佳結(jié)果,只能說比結(jié)果 1 更好。
對于有著清晰明確答案的簡單任務,這種比較方法可能用處不大,不如使用有最大似然目標的監(jiān)督學習。
但對于開放式的生成任務,相比于為答案打分,比較候選答案之間的相對優(yōu)劣會更容易。
下面是這種獎勵模式的數(shù)學描述:
有了獎勵模型之后,就可以通過強化學習來學習語言模型的參數(shù),以最大化預期獎勵。
這里,目標函數(shù)就是剛剛的獎勵模型,也就是參數(shù) Φ,其在初始的強化學習后就固定了。
在這個公式中,對于一個 prompt,策略模型(通常是根據(jù)監(jiān)督式指令微調(diào)的檢查點模型進行初始化)會生成一些候選結(jié)果;然后它們被提供給獎勵模型,獎勵模型返回分數(shù),策略模型就可以根據(jù)這個反饋進行調(diào)整。這就像是一個試錯過程。
我們可以通過基于梯度的迭代方法來最大化預期獎勵,這個過程要用到一些策略梯度算法,如 PPO。
總結(jié)起來即為:獎勵模型編碼人類偏好,然后將其傳遞給策略模型,讓其通過強化學習進行學習。
但在實踐中,很多人并不喜歡 RLHF,甚至希望拋棄這個方法,因為它很難做好。
RLHF 的一個常見問題是「獎勵攻擊(reward hacking)」。
舉個例子,假設(shè)有人類標注者對一些完成結(jié)果進行標注 —— 標記一對結(jié)果中哪一個更好,而如果他們標記的都剛好是更長的結(jié)果更好,那么策略模型就會認為獎勵模型更喜歡更長的結(jié)果,然后漸漸地,它就會越來越多地給出很長但看起來很蠢的結(jié)果。這時候獎勵模型給出的獎勵越來越高,但人類的滿意度卻會下降。這種現(xiàn)象其實很難控制,Chung 表示目前還沒有徹底解決這一問題的方法。
但即使存在這些問題,Chung 認為我們還是應該繼續(xù)研究 RLHF,他認為原因包括:
- 最大似然有過于強大的歸納偏見,當模型規(guī)模變大時,這個問題會更顯著;
- 學習目標函數(shù)是一種不同的范式,有助于緩解這個問題,能提供很大的提升空間,ChatGPT 等一些成功利用 RLHF 的案例只是一個開始;
- 其原理很可靠,值得進一步發(fā)掘其功效。
AI 的未來發(fā)展
Chung 最后簡單回顧了 AI 過去的發(fā)展歷程并談到了自己對 AI 未來發(fā)展的展望。
他分享說,從基于規(guī)則的系統(tǒng)到經(jīng)典機器學習技術(shù),再到深度學習以及使用 RLHF 的深度學習,AI 系統(tǒng)中可學習的部分(圖中藍色部分)在不斷增多,其能力也越來越強大。
現(xiàn)在,損失函數(shù)也正在變成系統(tǒng)中的可學習部分,并且已經(jīng)有 GAN 和 RLHF 這樣的成功案例。這讓 AI 系統(tǒng)可以學習去做那些正確行為難以形式化的任務。
Chung 認為這就是未來的下一個范式,其將帶來的技術(shù)進步不會亞于之前每一次范式轉(zhuǎn)變。
至于哪個 AI 模型將成為這個新范式的旗艦代表,就讓我們拭目以待吧。