作者簡介 作者:Surika 原文: https://zhuanlan.zhihu.com/p/616708590 *封面由new bing創(chuàng)作,prompt為depicting pictures about reinforcement learning based on human feedback, impressionism style. 之前提到的PG算法,我們有一個agent,他與環(huán)境互動,然后學(xué)習更新,這個過程中的policy都是同一個。因此,當我們更新參數(shù)之后,之前計算的策略的所有概率就都不對了,這時候就需要重新去采樣。之前采樣出來的數(shù)據(jù)都不能用了,換句話說,過程中的數(shù)據(jù)都只能用一次。這就造成了policy gradient會花很多時間在采樣數(shù)據(jù)上,因為所有的數(shù)據(jù)都只能更新一次,更新一次之后就要重新采樣。 因此,有了PPO算法的改進原因。我們希望可以用一個舊策略收集到的數(shù)據(jù)來訓(xùn)練新策略,這意味著我們可以重復(fù)利用這些數(shù)據(jù)來更新策略多次,效率上可以提升很多。具體來說,PPO算法利用重要性采樣的思想,在不知道策略路徑的概率p的情況下,通過模擬一個近似的q分布,只要p同q分布不差的太遠,通過多輪迭代可以快速參數(shù)收斂 重要性采樣的過程如下。開始時x服從于p(x)分布,可以展開為對px計算積分,然后分子分母同乘q(x),通過變形,調(diào)整為從q采樣x,并且需要承上一個權(quán)重p(x)比q(x),來修正p q兩個分布之間的差異。 總結(jié)來說,近線策略優(yōu)化算法PPO 即屬于AC框架下的算法,在采樣策略梯度算法訓(xùn)練方法的同時,重復(fù)利用歷史采樣的數(shù)據(jù)進行網(wǎng)絡(luò)參數(shù)更新,提升了策略梯度方法的學(xué)習效率。PPO重要的突破就是在于對新舊新舊策略器參數(shù)進行了約束,希望新的策略網(wǎng)絡(luò)和舊策略網(wǎng)絡(luò)的越接近越好。近線策略優(yōu)化的意思就是:新策略網(wǎng)絡(luò)要利用到舊策略網(wǎng)絡(luò)采樣的數(shù)據(jù)進行學(xué)習,不希望這兩個策略相差特別大,否則就會學(xué)偏。 但重要性采樣依然存在一個問題。我們用q代替了p來采樣x,但是兩個隨機變量的分布,即使均值mean一樣,也不代表方差variance一樣。推導(dǎo)過程可以看左邊的公式。第一行是我們上一頁ppt推出來的結(jié)論。根據(jù)黃色框中的方差計算的方法,我們可以寫出第三行到第四行的公式。根據(jù)這個推導(dǎo)過程可以看見,兩個方差之間存在這差異p(x)比q(x),因此,如果p(x)比q(x)的數(shù)值很大,就會造成方差很大。理論上來說,如果采樣次數(shù)很多,p和q得到的期望會是一樣的。但如果采樣次數(shù)不夠多,就可能會有很大的差別。 直觀的用右邊的圖來說明一下。藍線是p(x)的分布,綠線是q(x)的分布,紅線是f(x)。以分布來說,p(x)采樣的點多數(shù)在左邊,f(x)是負的;但q(x)采樣的點多數(shù)在右邊,是正的。因此,采樣樣本數(shù)不多的情況,兩者之間差異會很大。 上面的是不能重用數(shù)據(jù)的版本,強化學(xué)習中稱為on policy。用theta策略與環(huán)境互動,采樣出軌跡并計算期望值。 下面是可以重用的版本,用 與環(huán)境互動。它是另一個agent,用于示范給要更新的 看,讓 知道與環(huán)境互動會發(fā)生的情況,以此來訓(xùn)練 ,這時候軌跡使用 來采樣的,這么做的優(yōu)點是可以利用相同的數(shù)據(jù)多次。 應(yīng)用我們前面介紹的重要性采樣的思想,只要乘上權(quán)重p(x)比q(x),用在這里也就是比上 根據(jù)一系列的推導(dǎo)和演化,我們可以得到最后這個公式,一個新的目標函數(shù)。這個推導(dǎo)是根據(jù)藍色框里的公式來的。 我們前面也提到了,在重要性采樣中,如果用于采樣的和需要更新的兩個策略分布差距太大,就會出問題,具體到PG的場景中,也就是不能讓 差異過大。如何避免的方式就是我們最后的主角:PPO算法。 為了不讓差異過大,PPO的解法是在里面加入一個約束項,也就是 KL散度簡單來說就是衡量二者有多相似,我們希望這兩個分布越像越好。 算法的步驟如下: 第一步:初始化Policy的參數(shù) 2.在每次迭代中,首先使用與環(huán)境互動,得到一堆數(shù)據(jù)對, 計算優(yōu)勢函數(shù),我們這里可以理解成獎勵。 而不同于PG算法只能應(yīng)用一次數(shù)據(jù),PPO可以多次訓(xùn)練。 目標函數(shù)即中間這個式子。 這里還有一個trick,即動態(tài)更新 。我們設(shè)置一個可以接受的最大、最小KL,成為適應(yīng)性KL懲罰。如果目前的KL大于設(shè)定的KL最大值,說明懲罰項沒有發(fā)揮效果,就加大 ;如果比最小值小,說明懲罰項太強了,就減少 使用KL散度的是初版的PPO算法,因為要計算KL散度還是有點復(fù)雜,因此延伸出了PPO2算法。 它的目標函數(shù)由兩項組成,需要選擇兩項里的較小項。clip函數(shù)中有三項,它的意思是當?shù)谝豁椥∮诘诙棔r回傳,當?shù)谝豁棿笥诘谌棔r回傳 ,這里 是個超參數(shù)。 我們將clip處理的部分畫成了圖,即藍色虛線。橫軸是三項里的第一項,,縱軸是clip的實際輸出。當clip大于時,輸出;輸出小于時,輸出;介于中間時,直接輸出值。紅線是取值范圍。 看著兩個圖,A我們先當成獎勵reward理解。直觀來看,獎勵大于0時,說明這個s,a對是好的,我們希望增加他出現(xiàn)的概率,也就是越大越好,但的比值不能超過;獎勵小于0時,說明這個s,a對是不好的,我們希望增加他減少的概率,也就是越小越好,但的比值不能小于 這是PPO的論文給出的實驗結(jié)果,紫色的線是PPO2的效果,基本都是在第一第二的位置上,效果是非常不錯的。 RLHF發(fā)展歷程在了解了最基本的強化學(xué)習之后,我們再來對比一下RL和RLHF的區(qū)別和聯(lián)系。 上面的圖是前面出現(xiàn)過的基本強化學(xué)習的概念,下面是RLHF的示意圖??梢娖渲械脑睾透拍罨臼枪蚕淼模煌囊簿褪羌t框中的部分,在agent和environment之前,出現(xiàn)了第三個可以參與交互的對象:人類,并由其衍生了一系列步驟。 實際上,RLHF并不是突然出現(xiàn)的事物,最早在2017年的NIPS就出現(xiàn)了這一思想。而在2020年的NIPS上,OpenAI已經(jīng)嘗試將其用于文本摘要任務(wù),并取得了很好的效果。圖中可見,RLHF的步驟框架從2020年這篇工作開始,就基本確定了。 NIPS 2017這篇工作針對的是獎勵函數(shù)設(shè)計的問題。獎勵函數(shù)設(shè)計是強化學(xué)習中的一個難題。從本質(zhì)上講,獎勵函數(shù)是對任務(wù)目標的一種抽象,也是我們向 agent 傳達任務(wù)目標的橋梁。當任務(wù)非常復(fù)雜時,很難將目標轉(zhuǎn)化為獎勵函數(shù)這種形式化、數(shù)字化的表征。試想一下,如何為煎雞蛋這個任務(wù)設(shè)計獎勵函數(shù)?雖然將煎雞蛋這個任務(wù)數(shù)字化抽象為獎勵函數(shù)很困難,但是我們?nèi)祟悎?zhí)行這個任務(wù)則沒什么難度,也就是說,我們可以以相對低的成本獲取很多完成這個任務(wù)的專家軌跡,這樣我們就可以做模仿學(xué)習(IL),比如我們可以先用逆強化學(xué)習(IRL)方法從專家軌跡中恢復(fù)獎勵函數(shù),再用這個獎勵函數(shù)做 RL。這種方法雖然有效,但是仍存在限制,假如任務(wù)太難了,以至于普通人很難完成呢?比如遙控玩具飛機做特技,或者控制一個虛擬機器人后空翻,這些特殊任務(wù)需要訓(xùn)練有素的專業(yè)人士提供專家軌跡,成本就又上去了。注意到從提供獎勵函數(shù)到提供任務(wù)軌跡,我們降低了對人能力的要求,從而降低成本。按這個思路繼續(xù)下去,雖然我們不能給出復(fù)雜任務(wù)的完整軌跡,但是評估某條軌跡的效果還是比較容易的。比如后空翻任務(wù),我們一眼就能看出某段軌跡是不是后空翻,并且能對完成質(zhì)量給出大概的評估。顯然,可以把這個評估作為這一段軌跡的 return,執(zhí)行 MC 類的 RL 方法。這看起來好像不錯,但我們普通人不是專業(yè)裁判,且通常沒有一個詳盡的評價標準,難以給出穩(wěn)定的定量評估分數(shù)。于是我們再次降低要求,只要人類定性地對比兩條軌跡哪個比較好就行了。 本文提出的就是一種利用上述 “人類偏好” 進行 DRL 的方法,非正式地說, agent 的目標是通過向人類發(fā)出盡量少的偏好比較請求,生成人類喜歡的軌跡。 考慮通過一系列步驟與環(huán)境交互的代理:在每個時刻t,代理從環(huán)境中接收到一個觀測o,然后向環(huán)境發(fā)送一個動作a,軌跡片段是觀察和動作組成的序列。表示相比代表的意思是,o1 a1獲得的reward要大于o2 a2獲得的reward。。(論文中使用的是偏序關(guān)系的符號大于,這里為了打字方便直接用>代替了)這里 在之前的RL工作中,r是有定量的評估公式的。但像在上一頁里介紹的,我們現(xiàn)在沒有定量評估所需的獎勵函數(shù)r,就只能定性評估agent滿足人咧偏好的程度。此外還有一個問題,因為系統(tǒng)很難每次重置成同樣的狀態(tài),因此用于比較的軌跡片段通常從不同的狀態(tài)開始,這增加了人類比較評估的難度,也使得人類的比較結(jié)果更難解釋,但是本方法克服了此困難。 優(yōu)化策略使用偏好誘導(dǎo),人類的判斷記錄在一個三元組是兩段軌跡片段,是{1,2}上的分布,表示用戶首選的軌跡片段。 如果人類選擇一個軌跡片段作為首選,則 將其所有權(quán)重放在該選擇上;如果人類將片段標記為同樣好的選擇,則 是均勻分布;如果人類將片段標記為不可比較,則數(shù)據(jù)庫中不包含此比較。 最后是擬合獎勵函數(shù),我們將獎勵函數(shù)的估計值解釋為偏好預(yù)測器,最小化預(yù)測偏好分布和實際人類偏好分布之間的交叉熵損失。 實驗結(jié)果也非常的好。更形象的結(jié)果展示,可以看這個openai博客里發(fā)布的視頻https:///research/learning-from-human-preferences 對這篇文章更詳細的解讀可以參考: 論文理解【IL - IRL】 -- Deep Reinforcement Learning from Human Preferences 文本摘要+RLHF, NIPS 2020這篇工作是OpenAI早于ChatGPT兩年發(fā)表在NeurIPS 2020,在這篇文章中ChatGPT的框架雛形已經(jīng)顯現(xiàn)。文章專注于英文摘要任務(wù),所用的方法和ChatGPT基本一致,包括了ChatGPT的核心方法,RLHF。這篇工作在知乎上也有許多介紹,我做PPT的時候主要參考了以下兩篇: 讀論文:Learning to summarize from human feedback ChatGPT技術(shù)精要,RLHF相關(guān)論文筆記(一)——Learning to summarize from human feedback 這篇工作解決的問題聚焦在不合理的評價指標上,在文本生成領(lǐng)域這同樣是一個棘手的問題。隨著語言模型變得越來越強大,訓(xùn)練和評估越來越受到用于特定任務(wù)的數(shù)據(jù)和指標的限制。例如,摘要任務(wù)訓(xùn)練模型使用ROUGE等一些自動化指標進行評估,但這些指標都不能完全刻畫我們對摘要質(zhì)量的需求。傳統(tǒng)的通過監(jiān)督學(xué)習和最大化對數(shù)似然并不是一個好的方法。因為在摘要、翻譯等任務(wù)中,可能同時有幾個相差很大的輸出文本都是高質(zhì)量的輸出,而最大化對數(shù)似然只會迫使模型輸出去接近訓(xùn)練集reference里的那個版本的文本。這篇文章專注于英文摘要任務(wù),不采用極大化詞的對數(shù)似然損失,而是利用收集到的human feedback數(shù)據(jù)通過監(jiān)督學(xué)習專門訓(xùn)練一個打分模型來直接捕獲人類的偏好,然后再使用這個模型通過強化學(xué)習來訓(xùn)練生成模型。 本研究使用來自 Reddit 的 TL;DR 摘要數(shù)據(jù)集,該數(shù)據(jù)集包含 3M 的帖子文本以及相應(yīng)的摘要信息。通過一系列數(shù)據(jù)預(yù)處理,我們僅保留了包含 24 到 48 個 token 的人工編寫摘要的帖子,并將摘要長度最大化以減少長度對質(zhì)量的潛在影響。最終,我們獲得了一個包含 123,169 個帖子的數(shù)據(jù)集。選擇 CNN/DM 數(shù)據(jù)集的原因是該數(shù)據(jù)集的基線非常強,可以通過簡單的提取方法實現(xiàn)。 本研究的目標是生成質(zhì)量盡可能好、長度不超過 48 個 token 的摘要。摘要的質(zhì)量標準是能夠準確地傳達原文的內(nèi)容,以滿足只讀摘要不讀原文的讀者的需求。 前一項研究報告了“我們希望我們的模型學(xué)習的質(zhì)量概念和人工標注人員實際評估的質(zhì)量概念之間的不匹配”,導(dǎo)致模型生成的摘要在標注員看來是高質(zhì)量的,但在研究人員看來卻是相當?shù)唾|(zhì)量的。 與前一項研究相比,本研究采取了兩個措施來提高人工標注數(shù)據(jù)的質(zhì)量。首先,我們完全過渡到離線設(shè)置,向人工標注人員發(fā)送大批次的比較數(shù)據(jù),并在累積的數(shù)據(jù)上重新訓(xùn)練模型。其次,我們與標注員保持密切聯(lián)系,為他們提供詳細的指導(dǎo),回答他們在共享聊天室中的問題,并定期向他們提供反饋。我們對所有標注員進行了培訓(xùn),以確保他們的標注結(jié)果與我們的標準高度一致,并在項目過程中不斷監(jiān)測標注員和研究人員之間的一致性。 最后,我們的一致性數(shù)據(jù)非常良好,標注員與專家之間的一致性達到了77%,而專家之間的一致性達到了73%。我們的主干模型采用了 GPT-3 結(jié)構(gòu),并在 1.3B 和 6.7B 兩個參數(shù)量的模型上進行了 Human Feedback 實驗。 首先,對LM進行自回歸預(yù)訓(xùn)練是第一步。這包括對兩個模型進行LM的token預(yù)測自回歸預(yù)訓(xùn)練,并在構(gòu)建的摘要數(shù)據(jù)集上對模型進行有監(jiān)督的fine-tune,以獲得監(jiān)督模型。使用這些監(jiān)督模型對初始摘要進行抽樣,以進行比較,并將其用作baseline來收集多個候選的原文-摘要對數(shù)據(jù)。這些數(shù)據(jù)基于當前策略、初始策略、原文摘要和其他不同的baseline生成,并成對發(fā)送給標注人員來選擇最佳的那一個。 其次,利用第一步標注好的數(shù)據(jù)來訓(xùn)練一個獎勵模型,以模擬人類偏好。在監(jiān)督模型的基礎(chǔ)上進行獎勵模型(RM)的訓(xùn)練,是通過在其上增加一個輸出標量的線性head來實現(xiàn)的。訓(xùn)練結(jié)束后將reward模型輸出歸一化,以便參考文章數(shù)據(jù)的摘要達到0的平均分。 公式里x是post,y0和y1是兩個summary, reward model要預(yù)測哪個是人類認為更好地。如果人類認為yi更好,RM loss寫成這個公式。 第三步是利用第二步訓(xùn)練得到的獎勵模型輸出的logit來引導(dǎo)強化學(xué)習過程,從而訓(xùn)練摘要生成模型。這是通過使用強化學(xué)習來實現(xiàn)的,并且用于生成最終結(jié)果的模型(策略模型)是另一個進行fine-tune的模型。通過將獎勵模型的輸出作為使用PPO算法最大化的整個摘要的獎勵,在每個時間步驟都是一個BPE token。只有在整個摘要生成完之后,才會有可用于監(jiān)督信號的reward。在生成單個單詞時,沒有監(jiān)督信號可用。 作者在獎勵中加入了一個KL散度懲罰項,具有以下兩個好處。首先,它可以作為熵獎勵,鼓勵策略進行探索,從而防止其坍塌為單一模式。其次,它確保策略不會學(xué)習產(chǎn)生與獎勵模型在訓(xùn)練期間看到的結(jié)果有太大不同的輸出,從而防止模型訓(xùn)飛了。 左上角是人工評估最喜歡的輸出,縱坐標是被選為最喜歡的比例??梢奌F的結(jié)果大大超越了監(jiān)督學(xué)習的結(jié)果。 右上角是文章還從覆蓋度、準確度、流暢性、整體質(zhì)量四個方面對各模型的結(jié)果進行了對比。發(fā)現(xiàn)HF模型在每一個方面都有優(yōu)勢,而且在覆蓋度方面很突出。 左下角是泛化性評估。評估模型在其他數(shù)據(jù)集上的遷移能力(OOD)。雖然HF在訓(xùn)練時有生成長度的限制,但是從結(jié)果可以看到,模型的效果基本和相同結(jié)構(gòu)模型在目標領(lǐng)域數(shù)據(jù)上訓(xùn)練的結(jié)果一樣好,比另外兩個模型好出一大截。 HF的遷移性能也非常優(yōu)秀,接近了監(jiān)督學(xué)習的效果。反觀監(jiān)督學(xué)習的遷移效果很差,甚至還不如pretrain only。 右下角表示利用ROUGE作為reward來優(yōu)化模型,人類評估效果上會很快就達到峰值,并穩(wěn)步下降,收斂。效果相比其他RM的差了很多 雖然作者提出的方法效果非常好,但是作者在文末也承認了這篇工作的方法資源消耗巨大,達到了320 GPU / 天和數(shù)千小時的人工標注時間。這個成本確實不是一般研究團隊所能承受的了的,目前來看對于硬件,人力成本和時間成本的消耗是其最大的局限性。但是其應(yīng)用前景非常廣闊,給模型注入人類的偏好,讓大模型更好地對齊人。ChatGPT的巨大成功也證明了這一方法可行性。 ChatGPT中的RLHF有了前面兩篇的鋪墊,我們就可以正式來看chatgpt是怎么做的了。 第一步是花錢招人給問題(prompt)寫回答(demonstration),使用經(jīng)典的預(yù)訓(xùn)練目標訓(xùn)練一個語言模型GPT3。這一步大家都懂,就不用說了。這一步可以多訓(xùn)幾個版本,第二步會用到。 這一步里比較值得說的就是預(yù)訓(xùn)練模型的選擇。首先,我們。對這一步的模型,OpenAI 在其第一個流行的 RLHF 模型 InstructGPT 中使用了較小版本的 GPT-3; Anthropic 使用了 1000 萬 ~ 520 億參數(shù)的 Transformer 模型進行訓(xùn)練;DeepMind 使用了自家的 2800 億參數(shù)模型 。 這里可以用額外的文本或者條件對這個 LM 進行微調(diào),例如 OpenAI 對 “更可取” (preferable) 的人工生成文本進行了微調(diào),而 Anthropic 按 “有用、誠實和無害” 的標準在上下文線索上蒸餾了原始的 LM。這里或許使用了昂貴的增強數(shù)據(jù),但并不是 RLHF 必須的一步。由于 RLHF 還是一個尚待探索的領(lǐng)域,對于” 哪種模型” 適合作為 RLHF 的起點并沒有明確的答案。 接下來,我們會基于 LM 來生成訓(xùn)練獎勵模型的數(shù)據(jù),并在這一步引入人類的偏好信息。 在第二部中,針對問題的多個回答,我們可以使用多個模型來產(chǎn)生,包括初始模型、finetune模型和人工模型等,然后使用獎勵模型/偏好模型來對這些回答進行打分。這個獎勵模型接收prompt和response兩個文本作為輸入,輸出一個標量獎勵。獎勵模型的訓(xùn)練是RLHF流程中非常重要的一個環(huán)節(jié),實際上是一個監(jiān)督學(xué)習過程。 在RM的訓(xùn)練過程中,我們可以從Prompt數(shù)據(jù)集中選取一些數(shù)據(jù)作為訓(xùn)練集,在輸入初始模型后,可以產(chǎn)生多個response,這些response可以是多個語言模型生成的,也可以是generate之后采樣得到的,只要保證這些response是針對同一個prompt生成的即可。接下來,我們需要對這些response進行排名,人工對這些回答進行排序,按照一些標準(比如可讀性、正確性等)進行排序。這里需要注意,我們不直接對文本標注分數(shù)來訓(xùn)練RM,因為標注者的價值觀不同會導(dǎo)致標注分數(shù)不準確且存在噪音。相反,我們使用排名來比較多個模型的輸出,并構(gòu)建更好的規(guī)范數(shù)據(jù)集。 對于排名方式,一種成功的方式是對不同模型在相同提示下的輸出進行比較,并使用Elo系統(tǒng)建立一個完整的排名。使用pair-wise loss將rank計算為具體的分數(shù),然后歸一化為標量獎勵值。InstructGPT論文使用的是pair-wise loss,也可以使用經(jīng)典的ELO算法來實現(xiàn)。通過這些排名結(jié)果,我們可以得到針對同一個prompt的response的分數(shù),這些分數(shù)將被用于訓(xùn)練RM模型。需要注意的是,這些訓(xùn)練數(shù)據(jù)集可以從預(yù)定義數(shù)據(jù)集中采樣生成,也可以通過Amazon Mechanical Turk等渠道獲得。 最后,這一獎勵模型的訓(xùn)練對于RLHF算法的無縫接入非常重要。我們可以用端到端的方式使用LM來建模,也可以使用模塊化的系統(tǒng)建模。這一獎勵數(shù)值對于后續(xù)的RL算法來說至關(guān)重要。
最后一階段是強化學(xué)習微調(diào)階段。在這一步中,數(shù)據(jù)集規(guī)模更大,且不再需要人工參與。這一步的方法可以概括為以下四個部分: 首先,使用第一階段監(jiān)督模型的參數(shù)來初始化PPO模型的參數(shù)。接著,使用PPO模型生成回答,并使用第二階段的RM模型對回答進行評估和打分。最后,通過打分,更新訓(xùn)練PPO模型的參數(shù)。 讓我們將微調(diào)任務(wù)表述為強化學(xué)習問題。我們認為輸入的prompt是狀態(tài)(state),輸出的response是動作(action),想要得到的策略(policy)就是怎么從prompt生成action能夠得到最大的reward,也就是擬合人類的偏好。 這個策略的行為空間(action space)是語言模型(LM)的詞表對應(yīng)的所有詞元,通常在50k數(shù)量級左右。所有的狀態(tài)是可能的輸入詞元序列,也比較大(詞匯量 ^ 輸入標記的數(shù)量)。獎勵函數(shù)是偏好模型和策略轉(zhuǎn)變約束(Policy shift constraint)的組合。 PPO算法確定的獎勵函數(shù)具體計算如下:將prompt輸入初始LM和當前微調(diào)的LM,分別得到了輸出文本。將來自當前策略的文本傳遞給RM,得到一個標量的獎勵。將兩個模型生成的文本進行比較,計算差異的懲罰項。在來自O(shè)penAI、Anthropic和DeepMind的多篇論文中,該懲罰項被設(shè)計為輸出詞分布序列之間的KL散度的縮放。這一項被用于懲罰RL策略在每個訓(xùn)練批次中生成大幅偏離初始模型的文本,以確保模型輸出合理連貫的文本。如果去掉這一懲罰項,可能會導(dǎo)致模型在優(yōu)化中生成亂碼文本來愚弄獎勵模型提供高獎勵值。此外,OpenAI在InstructGPT上實驗了在PPO添加新的預(yù)訓(xùn)練梯度,以保證RL模型能夠保留好的語言模型能力??梢灶A(yù)見到,隨著RLHF研究的進展,獎勵函數(shù)的公式會繼續(xù)進化。 作為一個可選項,RLHF可以通過迭代RM和策略共同優(yōu)化。隨著策略模型的更新,用戶可以繼續(xù)將輸出和早期的輸出進行合并排名。Anthropic 在他們的論文中討論了迭代在線 RLHF,其中策略的迭代包含在跨模型的 Elo 排名系統(tǒng)中。這樣引入策略和 RM 演變的復(fù)雜動態(tài),代表了一個復(fù)雜和開放的研究問題。 對這一部分,已經(jīng)有許多非常優(yōu)秀且深入的解析,例如以下兩篇: https:///blog/rlhf* 官方中文翻譯:ChatGPT 背后的“功臣”——RLHF 技術(shù)詳解 Akiko:從零實現(xiàn)ChatGPT——RLHF技術(shù)筆記 后ChatGPT時代:應(yīng)用與未來展望ChatGPT的主要成功要歸結(jié)于采用RLHF來精調(diào)語言大模型。既然RLHF效果這么好,自然也有工作嘗試將這個思路遷移到其他任務(wù)上。近日谷歌AI團隊將類似的思路用于文生圖大模型:基于人類反饋來精調(diào)Stable Diffusion模型來提升生成效果。 文生圖+RLHF目前的文生圖模型雖然已經(jīng)能夠取得比較好的圖像生成效果,但是很多時候往往難以生成與輸入文本精確匹配的圖像,特別是在組合圖像生成方面。為此,谷歌最新的論文Aligning Text-to-Image Models using Human Feedback提出了基于人類反饋的三步精調(diào)方法來改善這個問題。 該工作更詳細的介紹可見 當ChatGPT和Stable Diffusion碰撞:谷歌用人類反饋提升文生圖效果 下面是一些圖像生成樣例,也可以看出精調(diào)后的模型在文本語義對齊上的提升。 這個論文只是基于人類反饋在文生圖模型上一個嘗試,看起來還是有一定的效果,但是主要的問題是圖像生成質(zhì)量出現(xiàn)下降,比如出現(xiàn)過飽和以及失真的圖像。雖然加入未標注的數(shù)據(jù)集和預(yù)訓(xùn)練數(shù)據(jù)集,能在一定程度上改善這個問題。 論文在120個文本上基于人類打分來對原始模型和精調(diào)后的模型來進行對比,結(jié)果如下所示,可以看到在圖像和文本對齊方面,模型效果有明顯的提升(50% vs 3%),但是在圖像生成質(zhì)量上(fidelity)有稍微的下降(MS-COCO數(shù)據(jù)集上的FID也有下降),論文認為主要的原因是設(shè)計的數(shù)據(jù)集主要目標是為了對齊文本和圖像,數(shù)據(jù)集的多樣性較少,而且采用的預(yù)訓(xùn)練數(shù)據(jù)集只是一個很小的子集,如果采用更大的數(shù)據(jù)集,應(yīng)該可以進一步改善這個問題。從消融實驗來看,采用未標注數(shù)據(jù)集和預(yù)訓(xùn)練數(shù)據(jù)集來進行正則化,對于保證圖像生成質(zhì)量還是非常關(guān)鍵的。 總結(jié)與展望對于ChatGPT成功的關(guān)鍵,我個人認為可以總結(jié)為以下三點:
三者缺一不可,而其中,雖然ChatGPT為代表的RLHF技術(shù)非常有影響力,引發(fā)了巨大的關(guān)注,但仍然存在若干局限性:
作為討論班里技術(shù)系列的最后一期,這頁PPT總結(jié)了ChatGPT背后技術(shù)的發(fā)展歷程: 2017年之前早已有之的一些數(shù)學(xué)/AI/RL等基礎(chǔ)技術(shù),比如微積分、概率統(tǒng)計、最優(yōu)化、策略梯度、TRPO算法(2015年提出) 2017年6月OpenAI聯(lián)合DeepMind首次正式提出的RLHF,試圖解決的問題是,在獎勵函數(shù)不夠明確的情況下,通過基于人類對事物比較的偏好而非絕對獎勵值訓(xùn)練獎勵函數(shù),最后通過TRPO算法迭代策略 2017年7月的OpenAI團隊提出的對TRPO算法的改進:PPO算法 2017年6月的Transformer/Self-Attention 2018年6月的GPT(Generative Pre-trained Transformer),其關(guān)鍵構(gòu)成是基于Transformer-Decoder的Masked Self-Attention 2019年2月的融合prompt learning的GPT2,prompt learning的意義在于小樣本也能出大效果 2020年5月的GPT3,參數(shù)規(guī)模到了1750億,而且這一年的9月份OpenAI已經(jīng)開始研究GPT3與RLHF的結(jié)合了(即上邊介紹的文本摘要的工作),且此時用的策略優(yōu)化方法為PPO 2021年7月的Codex,通過對GPT3進行大量的代碼訓(xùn)練迭代而出Codex,從而具備代碼/推理能力 2021年9月Google提出的FLAN大模型:基于指令微調(diào)技術(shù)Instruction Fine-Tuning (IFT) 2022年1月的Google研究者提出的思維鏈技術(shù)(Chain of Thought,簡稱CoT) 2022年3月的OpenAI正式發(fā)布instructGPT:GPT3 + 指令學(xué)習 + RLHF + PPO,其中,遵循人類指令的學(xué)習instruction learning,和prompt learning的核心區(qū)別在于instruction learning會提供更多的指令引導(dǎo)模型輸出更符合預(yù)期的結(jié)果 2021年第4季度逐步發(fā)展而來的GPT3.5 2022年11月的ChatGPT:語言模型層面的核心架構(gòu)是GPT3.5(基于Transformer-Decoder的Masked Self-Attention且融合了Codex的代碼/推理能力、instruction learning等技術(shù)) + RLHF + PPO 由此可見,ChatGPT非一蹴而就、橫空出世,背后其實經(jīng)過了各個前置技術(shù)的發(fā)展、迭代、結(jié)合而成。在準備這期討論班的時候GPT-4還沒有發(fā)布,而在整理博客的這個節(jié)點,GPT-4在升級的同時,還新加入了多模態(tài)的能力。在這個時間節(jié)點的NLPer無可避免的站在時代的前沿,面對未知的未來發(fā)展趨勢,希望這篇介紹可以幫大家更好的了解背景、思考未來、擁抱變化。
|
|