RLHF 想必今天大家都不陌生,但在 ChatGPT 問世之前,將 RL 和 LM 結合起來的任務非常少見。這就導致此前大多做 RL 的同學不熟悉 Language Model(GPT)的概念,而做 NLP 的同學又不太了解 RL 是如何優化的。在這篇文章中,我們將簡單介紹 LM 和 RL 中的一些概念,并分析 RL 中的「序列決策」是如何作用到 LM 中的「句子生成」任務中的,希望可以幫助只熟悉 NLP 或只熟悉 RL 的同學更快理解 RLHF 的概念。
1. RL: Policy-Based & Value Based
強化學習(Reinforcement Learning, RL)的核心概念可簡單概括為:一個機器人(Agent)在看到了一些信息(Observation)后,自己做出一個決策(Action),隨即根據采取決策后得到的反饋(Reward)來進行自我學習(Learning)的過程。
光看概念或許有些抽象,我們舉個例子:現在有一個機器人找鉆石的游戲,機器人每次可以選擇走到相鄰的格子,如果碰到火焰會被燒死,如果碰到鉆石則通關。
機器人找鉆石的例子:碰到火焰則會被燒死
在這個游戲中,機器人(Agent)會根據當前自己的所在位置(Observation),做出一次行為選擇(Action):
如果它此時選擇「往上走」,則會碰到火焰,此時會得到一個來自游戲的負反饋(Reward),于是機器人會根據當前的反饋進行學習(Learning),總結出「在當前的位置」「往上走」是一次錯誤的決策。
如果它此時選擇「向右走」,則不會碰到火焰,并且因為離鉆石目標更近了一步,此時會得到一個來自游戲的正反饋(Reward),于是機器人會根據當前的反饋進行學習(Learning),總結出「在當前位置」「往右走」是一次相對安全的決策。
通過這個例子我們可以看出,RL 的最終目標其實就是要讓機器人(Agent)學會:在一個給定「狀態」下,選擇哪一個「行為」是最優的。
一種很直覺的思路就是:我們讓機器人不斷的去玩游戲,當它每次選擇一個行為后,如果這個行為得到了「正獎勵」,那么下次就多選擇這個行為;如果選擇行為得到了「負懲罰」,那么下次就少選擇這個行為。
為了實現「多選擇得分高的行為,少選擇得分低的行為」,早期存在 2 種不同的流派:Policy Based 和 Value Based。
Policy Based 將行為量化為概率;Value Based 將行為量化為值
其實簡單來說,這 2 種流派的最大區別就是在于將行為量化為「概率」還是「值」,具體來講:
Policy Based:將每一個行為量化為「概率分布」,在訓練的時候,好行為的概率值將被不斷提高(向右走,0.9),差行為的概率將被不斷降低(向上走,0.1)。當機器人在進行行為選擇的時候,就會按照當前的概率分布進行采樣,這樣就實現了「多選擇得分高的行為,少選擇得分低的行為」。
Value Based:將每一個行為量化為「值」,在訓練的時候,好行為的行為值將被不斷提高(向右走,1分),差行為的行為值將被不斷降低(向上走,-1)。當機器人在進行行為選擇的時候會選擇「行為值最大的動作」,這樣也實現了「多選擇得分高的行為,少選擇得分低的行為」。
兩種策略輸入一樣,只是輸出的形式不一樣(概率 v.s. 值)
關于這 2 種流派的更多訓練細節在這里就不再展開,如果感興趣可以看看比較出名的代表算法:[Policy Gradient](Policy Based)和 [Q-Learning](Value Based)。
講到這里,我們可以思考一下,Language Model(GPT)是屬于 Policy Based 還是 Value Based ?
為了弄明白這個問題,我們下面一起看看 GPT 是怎么工作的。
2. Language Model(GPT)是一種 Policy Based 還是一種 Value Based?
GPT 是一種 Next Token Prediction(NTP),即:給定一段話的前提下,預測這段話的下一個字是什么。
GPT 工作原理(Next Token Prediction,NTP)
而 GPT 在進行「下一個字預測」的時候,會計算出所有漢字可能出現的概率,并根據這個概率進行采樣。
在這種情況下,我們完全可以將「給定的一段話」看成是我們上一章提到的 Observation,
將「預測的下一個字」看成是上一章提到的 Action,而 GPT 就充當了其中 Agent 的角色:
GPT 生成文本的過程,一個典型的 Policy Based 過程
如此看來,Language Model 的采樣過程其實和 Policy Based 的決策過程非常一致。
回顧一下我們之前提到過 RL 的目標:在一個給定「狀態」下,選擇哪一個「行為」是最優的,
遷移到 GPT 生成任務上就變成了:在一個給定的「句子」下,選擇(續寫)哪一個「字」是最優的。
因此,將 RL 中 Policy Based 的訓練過程應用到訓練 GPT 生成任務里,一切都顯得非常的自然。
通過 RL 對 GPT 進行訓練,我們期望 GPT 能夠學會如何續寫句子才能夠得到更高的得分,
但,現在的問題是:游戲中機器人每走一步可以通過游戲分數來得到 reward,GPT 生成了一個字后誰來給它 reward 呢?
3. 序列決策(Sequence Decision)以及單步獎勵(Step Reward)的計算
在第一章和第二章中,我們其實討論的都是「單步決策」:機器人只做一次決策,GPT 也只生成一個字。
但事實上,機器人想要拿到鉆石,通常需要做出 N 次行為選擇。
不同的行為選擇序列得到的得分:假設拿到 得1分,碰到 得-1分,其余情況不加分也不扣分
在這種情況下我們最終只有 1 個得分和 N 個行為,但是最終 RL 更新需要每個行為都要有對應的分數,
我們該如何把這 1 個總得分對應的分配給所有的行為呢?
答案是計算「折扣獎勵(discount reward)」。
我們認為,越靠近最末端的行為對得分的影響越大,于是從后往前,每往前行為就乘以 1 次折扣因子 γ:
根據最終得分(total reward),從后往前倒推出每一個行為的得分(step reward)
同樣,GPT 在生成一個完整句子的過程中,也會做出 N 個行為(續寫 N 個字),
而我們在評分的時候,只會針對最后生成的完整句子進行一個打分(而不是生成一個字打一個分),
最后,利用上述方法通過完整句子的得分倒推出每個字的對應得分:
注意:在 GPT 的得分計算中,通常折扣因子(γ)取 1.0
值得注意的是:通常在對 GPT 生成句子進行得分拆解的時候,折扣因子(γ)會取 1.0,
這意味著,在句子生成任務中,每一個字的生成都會同等重要地影響著最后生成句子的好壞。
我們可以這么理解:在找鉆石的游戲中,機器人采取了一些「不當」的行為后是可以通過后續行為來做修正,比如機器人一開始向右走(正確行為),再向左走(不當行為),再向右走(修正行為),再向上走(正確行為),這個序列中通過「修正行為」能夠修正「不當行為」帶來的影響;但在句子生成任務中,一旦前面生成了一個「錯別字」,后面無論怎么生成什么樣的字都很難「修正」這個錯別字帶來的影響,因此在文本生成的任務中,每一個行為都會「同等重要」地影響最后句子質量的好壞。
4. 加入概率差異(KL Penalty)以穩定 RL 訓練
除了折扣獎勵,在 OpenAI 的 [Learning to summarize from human feedback] 這篇工作中指出,
在最終生成句子的得分基礎上,我們還可以在每生成一個字時候,計算 RL 模型和 SFT 模型在生成當前字的「概率差異」,并以此當作生成當前字的一個 step reward:
通過概率差異(KL)作為 reward 有 2 個好處:1. 避免模型崩潰到重復輸出相同的一個字(模式崩潰)。2. 限制 RL 不要探索的離一開始的模型(SFT)太遠
通常在進行 RL 訓練時,初始都會使用 SFT 模型做初始化,隨即開始探索并學習。
由于 RL 的訓練本質就是:探索 + 試錯,
加上「概率差異」這一限制條件,就相當于限制了 RL 僅在初始模型(SFT)的附近進行探索,
這就大大縮小了 RL 的探索空間:既避免了探索到那些非常差的空間,又緩解了 Reward Model 可能很快被 Hacking 的問題。
我們舉一個具體的例子:
加上 KL 懲罰(概率差異)約束后的 step reward
如上圖所示,對于「大家好,我是」這個 prompt,Policy(RL)Model 認為「雞太美」是一個很好的答案,
這可能是 Reward Model 打分不準導致的(這很常見),上圖中 RM 給「雞太美」打出了 2 分的高分(綠色)。
但是,這樣一個不通順的句子在原始的模型(SFT Model)中被生成出來的概率往往是很低的,
因此,我們可以計算一下「雞太美」這 3 個字分別在 RL Model 和在 SFT Model 中被采樣出來的概率,
并將這個「概率差異」加到 RM 給出的「折扣分數」中,
我們可以看到:盡管對于這個不通順的句子 RM 給了一個很高的分數,但是通過「概率差異」的修正,每個字的 reward 依然被扣除了很大的懲罰值,從而避免了這種「RM 認為分數很高,但實則并不通順句子」被生成出來的情況。
通過加入「概率差異」的限制,我們可以使得 RL 在 LM 的訓練中更加穩定,防止進化為生成某種奇怪的句子,但又能「哄騙」Reward Model 給出很高分出的情況(RL 非常擅長這一點)。
但,如果你的 RM 足夠的強大,永遠無法被 Policy 給 Hack,或許你可以完全放開概率限制并讓其自由探索。
-
機器人
+關注
關注
211文章
28512瀏覽量
207509 -
強化學習
+關注
關注
4文章
268瀏覽量
11270 -
LLM
+關注
關注
0文章
294瀏覽量
353
原文標題:RL 究竟是如何與 LLM 做結合的?
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論