原創作者:李佳朋 轉載須標注出處:哈工大SCIR
就在上個月月末OpenAI發布了其最新的研究成果ChatGPT以及其測試接口。在發布后的短短幾天時間內,ChatGPT就火出了圈。根據相關媒體報道,目前ChatGPT全球用戶數已經突破了一百萬。筆者也懷揣著一顆好奇之心去體驗了ChatGPT,整體下來的體驗是其無論是在一些傳統NLP任務包括關系抽取、事件抽取、寫作、對話,還是一些其他任務包括寫代碼、角色扮演等都表現出一種滴水不漏,嚴絲合縫,不給人留下任何把柄的合理性。然而,客觀來講也存在一些不足,包括面對需要復雜邏輯推理問題的時候(比如應用題),會給出一本正經的廢話;面對事實性問題的時候缺乏對于事實性的判斷;面對主觀性問題的時候為保證立場的客觀,存在一定模版。
然而瑕不掩瑜,ChatGPT帶給我們更多的是驚喜與震撼,震撼之余更多的是思考,思考在大模型時代,在現階段我們的研究方向應該是什么,有哪些真正值得做的有意義的、有影響力的工作。 那么ChatGPT究竟是怎樣煉成的呢?OpenAI目前沒有給出相關的論文,但是在官方的摘要中,其生成ChatGPT有一個"孿生兄弟",即InstructGPT,兩者采用了相同的訓練方式。InstructGPT是OpenAI在今年一月末發表的一篇工作,其核心思想是采用人工反饋的方式,利用強化學習的方法去進一步微調大模型,從而使大模型生成更加符合人類預期的回復。本文將詳細介紹InstructGPT的原理,通過InsructGPT向大家揭開ChatGPT的神秘面紗。
還是蠻驚人的,這里給他臨時定義了一個文本分類的任務,ChatGPT可以理解我的意圖,并且正確的對我給出的文本正確的分類
圖1 ChatGPT在自定義的文本分類任務上的效果 這里接下來給了它一個無法進行分類的任務,即讓他定一個會議室。他可以明確知道訂會議室不在我定義的類別之中,并且給出合理的回復。而在添加了這個類別以后,ChatGPT就可以正確的識別對應的類別。
圖2 在添加新的分類類別后ChatGPT的效果 讓其寫一個具有李清照風格的代碼。
圖3 ChatGPT寫代碼 故事創作。
圖4 ChatGPT進行故事生成 知識型問答,但是可以看出一些問題,就是作帶魚并不需要用水焯去血水。這很有可能是因為訓練數據中存在糖醋排骨相關的資源,排骨下鍋前需要水焯,模型記住了這個,并且在生成的時候生成出來了。
圖5 知識型問答[1]
以GPT3為代表的大語言模型,利用提示學習的方法,雖然已經可以進行各種各樣的任務,并且生成流暢的回復,但是在一些情況下仍然會產生不符合人類預期的回復,包括不真實的、有毒害的、致幻性的回復。換句話說,大模型產生的回復與人類真實的回復是有偏置的。InstructGPT的目標就是緩解這種生成回復與真實回復之間的偏置產生更加符合人類預期的回復。
在這篇工作里,OpenAI的研究人員從數據層面和方法層面兩方面對模型生成的質量進行了改善。數據層面,聘請標注人員標注一部分訓練數據用于微調GPT3;而方法層面使用基于人工反饋的強化學習方法(RLHF)對模型進一步進行微調,使其生成結果更符合人類預期 數據層面,如下圖所示,標注分為兩個階段:標注人員首先撰寫一些相關的Prompt,這些Prompt描述了要進行的任務;第二階段,從Prompt中采樣,標注人員需要根據被采樣出的Prompt寫出其理想的回復。這樣的一個Prompt與其對應的回復被稱為demonstration。這些人工構造出來的demonstration是高質量的訓練數據,這些訓練數據被用作微調GPT3之中
圖6 InstructGPT 數據標注示意圖[2] 方法層面,如下圖所示,InstructGPT的訓練實際上是分為三個階段的,第一階段就是我們上文所述,利用人工標注的數據微調GPT3;第二階段,需要訓練一個評價模型即Reward Model,該模型需學習人類對于模型回復的評價方式,對于給定的上文與生成回復給出分數;第三階段,利用訓練好的Reward Model作為反饋信號,去指導GPT進一步進行微調,將目標設定為Reward分數最大化,從而使模型產生更加符合人類偏好的回復。
圖7 InstructGPT整體訓練流程[3]
那么該工作是如何訓練的Reward Model呢?評價模型實際上是利用大模型做一個回歸任務,相信回歸任務大家應該都比較熟悉,即在模型的輸出層[CLS]位置添加一個MLP,最后得到的數值即為Reward Model給出的分數。 接下來我們看一下OpenAI是如何構造數據的,如下圖所示,在訓練Reward Model的時候采用排序任務,即針對同一個上文,利用第一階段訓練好GPT3在多次采樣下可以生成4個( 或9個)不同的回復。標注人員在標注過程中,需要根據這4個不同回復與上文之間的關聯程度,給出一個相關性的偏序關系。
圖8 InstructGPT第二階段的數據標注過程與訓練過程[2]
在訓練階段,這4個回復之間兩兩組合可以形成6個pair,優化目標為每對之中與上文關系大的分數高于與上文關系小的,其損失函數為:
在第二階段訓練好一個Reward Model以后,我們就可以利用這個模型作為反饋信號,代替人類去指導大模型進行微調了。在該階段OpenAI采用近端策略優化算法(PPO)這一強化學習方法對模型進行微調。PPO算法是OpenAI之前提出的一個針對策略梯度算法進行改進的算法。這一算法目前已經廣泛應用于各種強化學習模型中,并被證實有良好的性能。但是,將這一算法應用于序列生成任務中的相關工作卻少之又少。 要想理解這部分實現,首先需要明確該任務中的狀態(state)、動作(action)、價值函數(Value Function)、獎勵(Reward)以及策略模型(Policy Model)分別是什么? 為了方便理解,我們這里需要類比一個典型的強化學習場景,即一個游戲場景。在游戲場景中,一場游戲從開始到結束整個過程是一條訓練數據;在自然語言生成場景中,生成的每一個句子類比于一場游戲,是一條訓練數據。在游戲場景中,玩家每一次進行決策就是一個動作;在自然語言生成場景中,生成每一個token,從詞表中采樣即是一個動作。在游戲場景中,環境的信息、角色的狀態、歷史動作的選擇這些共同構成了當前的狀態;在自然語言生成場景中,對話歷史與之前生成的序列構成了當前的狀態。在游戲場景中,玩家所有可選的動作集合構成動作空間;后者詞表即為動作空間。游戲的最終結局,勝利與否作為前者的獎勵;評價模型對于生成回復的分數即為后者的獎勵。負責基于當前狀態學習輸出一個關于動作空間上的概率分布的模型即為策略模型,顯然在本文中GPT3就是這個策略模型。 在PPO算法中,存在一個長期獎勵即Reward,他負責評價整個過程中生成序列的好壞;還存在一個短期獎勵即價值函數,他負責評價生成過程中每一步生成的好壞。而負責輸出長期獎勵的Reward Model就是我們在第二階段訓練的評價模型,而價值函數模型也是使用二階段訓練好的評價模型進行初始化的。兩者的不同在于Reward Model的參數在整個三階段訓練過程中是固定參數的,而Value Function Model的參數是可變的。 那么在搞清楚這些強化學習概念的定義之后,我們就可以正式的聊聊PPO算法了。作為一種策略梯度算法,它也遵循著強化學習的基本框架。整體分為離線數據收集和利用PPO算法對模型梯度進行更新兩個部分。兩部分交替迭代進行,即收集一批新數據以后,立即利用這批數據進行訓練;在利用這部分數據更新完模型參數以后,再利用新模型去收集新一批數據。在整個訓練過程中,需要更新參數的包括策略模型和價值函數模型兩者。 模型整體流程如下圖所示,其中Policy Model就是第三階段進行微調的GPT3, Alignment Model是固定參數不參與微調的GPT3,兩者均由階段一訓練的GPT3進行初始化;Value Function Model是一個可訓練的價值函數,其輸出值代表著GPT3生成的每一個token的質量,是一個短期的獎勵, Reward Model是一個固定參數的模型,其輸出值代表著整個句子的好壞程度,是一個長期獎勵。
圖9 InstructGPT第三階段訓練流程示意圖 首先,對于一個給定的對話上文,通過Policy Model可以得到關于每一步生成的詞表上的概率分布;與此同時通過Alignment Model可以得到一個未經過三階段微調的模型給出的詞表上的概率分布。將兩者傳入Reward Model, 評價模型會根據生成質量給出一個分數,并計算Policy Model與 Alignment Model之間的差異性,將這個分數作為一個額外的懲罰項,若Policy Model生成結果過于天馬行空,導致與未經過訓練前的模型相距甚遠,則會因為過高的懲罰被賦予低分。 這個計算結果即為Reward。同時,將policy model的輸出傳遞給 value function model,其將計算出生成序列中每一個token的分數,即為價值函數分數。重復以上步驟直到收集完成一個mini-batch的所有數據,則在線數據收集完成。 最后我們來聊聊如何利用PPO算法對模型參數進行更新。首先,要明確一件事情,在線數據收集來的數據可能很多,模型在參數更新過程中,需要將這部分數據分成若干個step依次進行利用。因此,隨著參數的更新Policy Model與Value Function Model參數會與收集數據時參數產生異步性,即訓練過程中模型的參數新于采集數據時模型的參數,所以我們不妨約定,把數據采集過程中模型的輸出稱為old xxx, 而訓練過程中產生的輸出稱為new xxx。 整個訓練過程是由三個loss組成的,分別是用于訓練策略模型的PPO loss,用于訓練價值函數模型的Value Function loss以及用于訓練生成序列的Entropy loss。其中,用于訓練生成序列和價值函數模型的loss均是交叉熵損失函數,兩者的lable分別是人工標注的回復和數據采集過程中價值模型輸出的vf_old。而用于訓練策略模型的損失函數則是采用PPO算法進行計算得到的,其計算公式如下圖所示。
圖10 PPO算法計算公式與GAE計算公式 公式中的與分別代表來自訓練過程中與數據收集過程中策略模型在每一步關于詞表概率分布的輸出,叫做策略優勢估計,是PPO算法的核心,其給出一種利用長期獎勵與短期獎勵計算當前步好壞的計算方法,在第t步的分數越高,則代表該位置生成的質量越高。而且PPO算法不會參考第t步之前的狀態信息,相反的,其根據當前位置往后的T步去計算當前狀態的好壞,這是因為其已知整個序列的生成結果與概率分布,因此其可以根據最終結果的好壞來反推當前這一步是否合理。而跟隨在后面計算的KL散度則作為一個懲罰項,約束著每一次梯度更新以后不要產生與原模型相距甚遠的回復。保證了模型訓練的穩定性。
OpenAI采用人工評測,讓標注者從真實性(truthful)、毒害性(toxic)、事實性(make up fact)和合理性(appropriate)四個角度對InstructGPT與GPT3進行評價。標注人員會在不知情的條件下,拿到GPT3和InstructGPT生成的回復,其需要比較兩者之間的好壞關系。如下圖所示人們相較于175B的GPT3略偏好1.3B參數的InstructGPT,而同等參數下的InstructGPT更是有超過六成的勝率。
圖11 InstructGPT與GPT3的勝率對比,其中PPO即為InstructGPT,GPT代表GPT3[3]
InstructGPT為解決大模型生成回復不符合人們預期這一問題,分別從數據和模型兩方面進行了設計,通過改善數據質量與基于人工反饋的微調兩個方面減小了模型生成回復與人類真實回復之間的偏置。并且在實驗中表明,在GPT3 1/100 的參數條件下表現出相近的性能。
在測試過程中也發現了ChatGPT存在的一些問題,在這里與大家分享一下。
圖12 ChatGPT在解答應用題時缺乏底層的邏輯推理能力[1] 首先發現第一個問題是ChatGPT不具有復雜問題推理的能力。以這道相遇問題為例,雖然看起來頭頭是道,但是實際上已經是在胡謅了。之所以可以生成這段,我猜測是訓練過程中見過類似的應用題。但是實際上沒有明白應用題背后的原理與解答過程,即這個推理過程。
圖13 ChatGPT在回答主觀性問題時,為保證安全性存在模版[1] 在一些需要主觀評價的問題上,出于安全考慮在訓練過程中采用了一定的模版,導致生成的回復有明顯的模版生成的感覺。
圖14 ChatGPT缺乏事實性檢測 缺乏一些事實性檢測,西游記的作者并不是馬未都,但是模型并未識別出來。
ChatGPT的表現是大家有目共睹的,但是一味的吹捧ChatGPT的強大或者針對其各種目前尚未解決的問題找茬挑刺都是沒有意義,不利于思考的。相信和我一樣,在大模型的時代,很多NLP的研究人員有時會感到迷茫,這種迷茫來源于以GPT為代表的大模型的時代下,我們個體研究人員沒有大公司大資金大機器的情況下,該如何做出有價值有影響力的工作。很多時候,我們專注于一項工作,從開展到設計,再到實驗最后投稿,修改到錄用,這個周期短則半年,長則一年的時間。但是,當一篇工作真正被錄用的時候,已經有更加前沿更加有影響力的工作產生,顯得很多時候我們的工作那么渺小。那么我就在想,究竟應該作什么樣的工作,才能受時間影響小一點,沒那么容易過時呢?
研究一些更底層的,大小模型都適用的問題比如,如何提高模型的魯棒性與泛化能力;如何提高模型的邏輯推理能力,即使強如ChatGPT,在一些復雜的推理問題中還是很難學會其中的底層邏輯,更多時候只是從已經看見過的數據中進行類比與生成。
研究一些與特定領域結合的任務與其他領域結合,比如醫療,金融,生物制藥等領域,通過融合相關領域的特異性知識,進行模型結構上的設置,融入一些巧思,做好特定的任務。比如前一陣子看到的scBERT,做的就是一項利用mRNA的表達進行細胞類型判斷的任務,通過結合mRNA的特性與相關知識,設計了特有的類別編碼與基因編碼以及預訓練任務,成功將預訓練模型引入這一領域。
做以數據為中心的任務OpenAI相關工作人員曾指出,在訓練大模型的時候高質量的數據是至關重要的。吳恩達這兩年也提出Data-centic AI(DCAI),將焦點從模型開發轉移到數據層面,研究如何將有限的數據變得更多更好。
[1]圖片來自于文章"作為普通NLP科研人員對ChatGPT的一些思考",原文鏈接://mp.weixin.qq.com/s/yanBgjAYbuUgKdh6spti1Q [2]圖片來自于視頻"深度學習之應用: OpenAI InstructGPT 從人類回饋中學習 ChatGPT 的前身", 視頻鏈接: [3]Ouyang, Long, et al. "Training language models to follow instructions with human feedback." arXiv preprint arXiv:2203.02155 (2022).
李佳朋,就讀于哈爾濱工業大學社會計算與信息檢索研究中心,對話技術(DT)組,2021級碩士研究生,師從張偉男副教授。研究方向為基于基于知識增強的對話生成,曾參與Doc2Dial國際評測比賽并獲得第二名并于ACL-IJCNLP發表學術論文一篇。
本期責任編輯:馮驍騁本期編輯:彭 湃
OpenAI 推出的 ChatGPT 對話模型掀起了新的 AI 熱潮,它面對多種多樣的問題對答如流,似乎已經打破了機器和人的邊界。這一工作的背后是大型語言模型 (Large Language Model,LLM) 生成領域的新訓練范式:RLHF (Reinforcement Learning from Human Feedback) ,即以強化學習方式依據人類反饋優化語言模型。
過去幾年里各種 LLM 根據人類輸入提示 (prompt) 生成多樣化文本的能力令人印象深刻。然而,對生成結果的評估是主觀和依賴上下文的,例如,我們希望模型生成一個有創意的故事、一段真實的信息性文本,或者是可執行的代碼片段,這些結果難以用現有的基于規則的文本生成指標 (如 BLUE 和 ROUGE) 來衡量。除了評估指標,現有的模型通常以預測下一個單詞的方式和簡單的損失函數 (如交叉熵) 來建模,沒有顯式地引入人的偏好和主觀意見。 如果我們 用生成文本的人工反饋作為性能衡量標準,或者更進一步用該反饋作為損失來優化模型,那不是更好嗎?這就是 RLHF 的思想:使用強化學習的方式直接優化帶有人類反饋的語言模型。RLHF 使得在一般文本數據語料庫上訓練的語言模型能和復雜的人類價值觀對齊。 看看 ChatGPT 是如何解釋 RLHF 的:
ChatGPT 解釋的很好,但還沒有完全講透;讓我們更具體一點吧!
RLHF 是一項涉及多個模型和不同訓練階段的復雜概念,這里我們按三個步驟分解:
首先,我們使用經典的預訓練目標訓練一個語言模型。對這一步的模型,OpenAI 在其第一個流行的 RLHF 模型 InstructGPT 中使用了較小版本的 GPT-3; Anthropic 使用了 1000 萬 ~ 520 億參數的 Transformer 模型進行訓練;DeepMind 使用了自家的 2800 億參數模型 Gopher。 這里可以用額外的文本或者條件對這個 LM 進行微調,例如 OpenAI 對 “更可取” (preferable) 的人工生成文本進行了微調,而 Anthropic 按 “有用、誠實和無害” 的標準在上下文線索上蒸餾了原始的 LM。這里或許使用了昂貴的增強數據,但并不是 RLHF 必須的一步。由于 RLHF 還是一個尚待探索的領域,對于” 哪種模型” 適合作為 RLHF 的起點并沒有明確的答案。
接下來,我們會基于 LM 來生成訓練獎勵模型 (RM,也叫偏好模型) 的數據,并在這一步引入人類的偏好信息。
RM 的訓練是 RLHF 區別于舊范式的開端。這一模型接收一系列文本并返回一個標量獎勵,數值上對應人的偏好。我們可以用端到端的方式用 LM 建模,或者用模塊化的系統建模 (比如對輸出進行排名,再將排名轉換為獎勵) 。這一獎勵數值將對后續無縫接入現有的 RL 算法至關重要。 關于模型選擇方面,RM 可以是另一個經過微調的 LM,也可以是根據偏好數據從頭開始訓練的 LM。例如 Anthropic 提出了一種特殊的預訓練方式,即用偏好模型預訓練 (Preference Model Pretraining,PMP) 來替換一般預訓練后的微調過程。因為前者被認為對樣本數據的利用率更高。但對于哪種 RM 更好尚無定論。 關于訓練文本方面,RM 的提示 - 生成對文本是從預定義數據集中采樣生成的,并用初始的 LM 給這些提示生成文本。Anthropic 的數據主要是通過 Amazon Mechanical Turk 上的聊天工具生成的,并在 Hub 上可用 (//huggingface.co/datasets/Anthropic/hh-rlhf),而 OpenAI 使用了用戶提交給 GPT API 的 prompt。 關于訓練獎勵數值方面,這里需要人工對 LM 生成的回答進行排名。起初我們可能會認為應該直接對文本標注分數來訓練 RM,但是由于標注者的價值觀不同導致這些分數未經過校準并且充滿噪音。通過排名可以比較多個模型的輸出并構建更好的規范數據集。 對具體的排名方式,一種成功的方式是對不同 LM 在相同提示下的輸出進行比較,然后使用 Elo 系統建立一個完整的排名。這些不同的排名結果將被歸一化為用于訓練的標量獎勵值。 這個過程中一個有趣的產物是目前成功的 RLHF 系統使用了和生成模型具有 不同 大小的 LM (例如 OpenAI 使用了 175B 的 LM 和 6B 的 RM,Anthropic 使用的 LM 和 RM 從 10B 到 52B 大小不等,DeepMind 使用了 70B 的 Chinchilla 模型分別作為 LM 和 RM) 。一種直覺是,偏好模型和生成模型需要具有類似的能力來理解提供給它們的文本。
接下來是最后一步:利用 RM 輸出的獎勵,用強化學習方式微調優化 LM。
長期以來出于工程和算法原因,人們認為用強化學習訓練 LM 是不可能的。而目前多個組織找到的可行方案是使用策略梯度強化學習 (Policy Gradient RL) 算法、近端策略優化 (Proximal Policy Optimization,PPO) 微調初始 LM 的部分或全部參數。因為微調整個 10B~100B+ 參數的成本過高 (相關工作參考低秩適應 LoRA 和 DeepMind 的 Sparrow LM) 。PPO 算法已經存在了相對較長的時間,有大量關于其原理的指南,因而成為 RLHF 中的有利選擇。 事實證明,RLHF 的許多核心 RL 進步一直在弄清楚如何將熟悉的 RL 算法應用到更新如此大的模型。 讓我們首先將微調任務表述為 RL 問題。首先,該策略 (policy) 是一個接受提示并返回一系列文本 (或文本的概率分布) 的 LM。這個策略的行動空間 (action space) 是 LM 的詞表對應的所有詞元 (一般在 50k 數量級) ,觀察空間 (observation space) 是可能的輸入詞元序列,也比較大 (詞匯量 ^ 輸入標記的數量) 。獎勵函數是偏好模型和策略轉變約束 (Policy shift constraint) 的結合。 PPO 算法確定的獎勵函數具體計算如下:將提示 輸入初始 LM 和當前微調的 LM,分別得到了輸出文本 ,將來自當前策略的文本傳遞給 RM 得到一個標量的獎勵 。將兩個模型的生成文本進行比較計算差異的懲罰項,在來自 OpenAI、Anthropic 和 DeepMind 的多篇論文中設計為輸出詞分布序列之間的 Kullback–Leibler (KL) 散度的縮放,即 。這一項被用于懲罰 RL 策略在每個訓練批次中生成大幅偏離初始模型,以確保模型輸出合理連貫的文本。如果去掉這一懲罰項可能導致模型在優化中生成亂碼文本來愚弄獎勵模型提供高獎勵值。此外,OpenAI 在 InstructGPT 上實驗了在 PPO 添加新的預訓練梯度,可以預見到獎勵函數的公式會隨著 RLHF 研究的進展而繼續進化。 最后根據 PPO 算法,我們按當前批次數據的獎勵指標進行優化 (來自 PPO 算法 on-policy 的特性) 。PPO 算法是一種信賴域優化 (Trust Region Optimization,TRO) 算法,它使用梯度約束確保更新步驟不會破壞學習過程的穩定性。DeepMind 對 Gopher 使用了類似的獎勵設置,但是使用 A2C (synchronous advantage actor-critic) 算法來優化梯度。
作為一個可選項,RLHF 可以通過迭代 RM 和策略共同優化。隨著策略模型更新,用戶可以繼續將輸出和早期的輸出進行合并排名。Anthropic 在他們的論文中討論了迭代在線 RLHF,其中策略的迭代包含在跨模型的 Elo 排名系統中。這樣引入策略和 RM 演變的復雜動態,代表了一個復雜和開放的研究問題。
盡管 RLHF 取得了一定的成果和關注,但依然存在局限。這些模型依然會毫無不確定性地輸出有害或者不真實的文本。這種不完美也是 RLHF 的長期挑戰和動力 —— 在人類的固有領域中運行意味著永遠不會到達一個完美的標準。 收集人類偏好數據的質量和數量決定了 RLHF 系統性能的上限。RLHF 系統需要兩種人類偏好數據:人工生成的文本和對模型輸出的偏好標簽。生成高質量回答需要雇傭兼職人員 (而不能依賴產品用戶和眾包) 。另一方面,訓練 RM 需要的獎勵標簽規模大概是 50k 左右,所以并不那么昂貴 (當然遠超了學術實驗室的預算) 。目前相關的數據集只有一個基于通用 LM 的 RLHF 數據集 (來自 Anthropic) 和幾個較小的子任務數據集 (如來自 OpenAI 的摘要數據集) 。另一個挑戰來自標注者的偏見。幾個人類標注者可能有不同意見,導致了訓練數據存在一些潛在差異。 除開數據方面的限制,一些有待開發的設計選項可以讓 RLHF 取得長足進步。例如對 RL 優化器的改進方面,PPO 是一種較舊的算法,但目前沒有什么結構性原因讓其他算法可以在現有 RLHF 工作中更具有優勢。另外,微調 LM 策略的一大成本是策略生成的文本都需要在 RM 上進行評估,通過離線 RL 優化策略可以節約這些大模型 RM 的預測成本。最近,出現了新的 RL 算法如隱式語言 Q 學習 (Implicit Language Q-Learning,ILQL) 也適用于當前 RL 的優化。在 RL 訓練過程的其他核心權衡,例如探索和開發 (exploration-exploitation) 的平衡也有待嘗試和記錄。探索這些方向至少能加深我們對 RLHF 的理解,更進一步提升系統的表現。
首先介紹一些相關的開源工作: 關于 RLHF 的第一個項目,來自 OpenAI: PyTorch 的 repo: *
此外,Huggingface Hub 上有一個由 Anthropic 創建的大型數據集: 相關論文包括在現有 LM 前的 RLHF 進展和基于當前 LM 的 RLHF 工作:
本文翻譯自 Hugging Face 官方博客 () 參考資料部分鏈接請點擊閱讀原文到博客上查看。你也可以查看我們的直播活動回放了解更多: 本文譯者: 李濼秋,浙江大學計算機科學碩士,主要研究 NLP 領域。 我們正在招募更多翻譯志愿者幫助我們擴充官方公眾號內容,如果你感興趣,歡迎通過文章下方的留言功能介紹自己,并留下聯系方式。謝謝!
**刷爆的ChatGPT什么算法這么強!臺大李宏毅老師國語講解《ChatGPT (可能)是怎么煉成的 》! **
** **
** **
AIGC多模態跨模態應用逐漸成熟,市場空間廣闊。 廣義的AIGC指具備生成創造能力的AI技術,即生成式AI。可以基于訓練數據和生成算法模型,自主生成創造新的文本、圖像、音樂、視頻等內容。2022年被稱為AIGC元年,未來兼具大模型和多模態模型的AIGC模型有望成為新的技術平臺。據《中國AI數字商業產業展望2021-2025》報告,預測AI數字商業內容的市場規模將從2020年的40億元,增加到2025年的495億元。 ChatGPT產品歷經多代技術演進,產品與商業模式逐漸成熟。 ChatGPT是文本生成式AI,過去的傳統AI偏向于分析能力,主要基于已有內容;現在文本生成式AI基于底層Transformer模型,不斷訓練數據和迭代生成算法模型,歷經GPT-1、GPT-2、GPT-3,模型不斷升級,到ChatGPT的GPT3.5模型,已可以自主生成各種形式的內容。近期收費版ChatGPTPlus版本發布,AI商業化序幕逐漸拉開。 AI商業化落地在即,行業算法側和算力側投資機會有望超預期。 根據數據顯示,ChatGPT總算力消耗約為3640PF-Days,按國內的數據中心算力測算,需要7-8個數據中心才能支持其運行。各模態AI數據訓練到應用均需要算法和算力的加持,未來要想大規模應用,算法訓練和算力部署均需先行。
ChatGPT系列報告:
**刷爆的ChatGPT什么算法這么強!臺大李宏毅老師國語講解《ChatGPT (可能)是怎么煉成的 》! **
** **
** **
【芯片算力】▲芯片需求=量↑x價↑,AIGC拉動芯片產業量價齊升。1)量:AIGC帶來的全新場景+原場景流量大幅提高;2)價:對高端芯片的需求將拉動芯片均價。ChatGPT的“背后英雄”:芯片,看好國內GPU、CPU、FPGA、AI芯片及光模塊產業鏈。 相關標的:海光信息、景嘉微、龍芯中科、中國長城、安路科技、復旦微電、紫光國微、寒武紀、瀾起科技、德科立、天孚通信、中際旭創。 【深度學習框架】深度學習框架是人工智能算法的底層開發工具,是人工智能時代的操作系統,當前深度學習框架發展趨勢是趨于大模型訓練,對深度學習框架的分布式訓練能力提出了要求,國產深度學習框架迎來發展機遇。 相關標的:百度、海天瑞聲、商湯科技、微軟、谷歌、Meta。 【深度學習大模型】ChatGPT是基于OpenAI公司開發的InstructGPT模型的對話系統,GPT系列模型源自2017年誕生的Transformer模型,此后大模型數量激增,參數量進入千億時代,國內百度也發布了ERNIE系列模型并有望運用于即將發布的文心一言(ERNIEBot)對話系統,未來國內廠商有望在模型算法領域持續發力。 相關標的:百度、科大訊飛、商湯科技、谷歌、微軟。 【應用】ChatGPT火爆全球的背后,可以窺見伴隨人工智能技術的發展,數字內容的生產方式向著更加高效邁進。ChatGPT及AIGC未來有望在包括游戲、廣告營銷、影視、媒體、互聯網、娛樂等各領域應用,優化內容生產的效率與創意,加速數實融合與產業升級。 相關標的:百度、騰訊、阿里巴巴、網易、昆侖萬維、閱文集團、捷成股份、視覺中國、風語筑、中文在線、三七互娛、吉比特、天娛數科。 【通信】AIGC類產品未來有望成為5G時代新的流量入口,率先受益的有望是AIGC帶來的底層基礎算力爆發式增長。 相關標的:包括算力調度(運營商)、算力供給(運營商、奧飛數據、數據港)、算力設備(浪潮信息、聯想集團、紫光股份、中興通訊、銳捷網絡、天孚通信、光庫科技、中際旭創、新易盛)、算力散熱(英維克、高瀾股份)。
原創作者:陳一帆 轉載須標注出處:哈工大SCIR
在上篇文章中我們提到,ChatGPT的訓練過程主要分為三步:微調GPT-3模型、人工對微調后模型的生成結果打分以訓練得到一個獎勵模型、 基于微調后的GPT-3結合獎勵模型采用強化學習的方法更新策略。而第三步中強化學習的方法為OpenAI于2017年提出的Proximal Policy Optimization(PPO)算法。PPO算法提出后應用場景相當廣泛,包含圖像識別[1]、機械臂控制[2]、電子游戲[3]以及今天的ChatGPT。OpenAI基于PPO算法設計的AI程序OpenAI Five甚至在2019年4月13日擊敗了Dota 2世界冠軍戰隊OG[4]。 在接下來的部分中,我們會在第二章中介紹強化學習的基礎知識,第三章中介紹PPO算法論文并對其中的公式進行推導。
以下內容參考OpenAI Spinning Up[5],其為OpenAI公開的一份關于深度強化學習的教育資源。
強化學習(Reinforcement Learning)是一個馬爾科夫決策過程,可定義為五元組,其中為狀態空間,為動作空間,是狀態轉移函數,是獎勵函數,是初始狀態分布。狀態轉移函數是一個到的映射,有,即狀態采取動作后狀態轉移到的概率,又可以寫為或者等;獎勵函數是一個到實數域的映射,可以寫作,但多數情況下會根據問題的實際定義簡化為, 表示狀態下執行動作的獎勵,也可以記為或其他。強化學習過程中,智能體首先處于開始狀態,然后選擇動作執行,與環境產生交互,獲得獎勵并轉移到狀態,我們稱智能體經歷的狀態、動作序列為軌跡,強化學習的目標是最大化累積獎勵:要實現最大化累積獎勵,其重點在于智能體處在某個狀態時應該選擇哪個動作執行,或者其選擇動作應該服從一個怎樣的分布,記作,一般稱之為策略(Policy),策略即是強化學習中優化的變量。 圖 1強化學習示意圖 須知:
圖2 Q、V 值的定義和轉換關系[6]顯然,強化學習模型優化目標可以使用表示,其中表示智能體的開始狀態。
強化學習算法種類繁多,可按圖3所示類別粗略分類。 圖3 強化學習算法分類[5] 可以看到PPO算法是無模型的強化學習算法,屬于策略優化類算法,并且是on-policy的。本節中我們將對這些概念進行介紹,讓大家對PPO算法有一個更好的認識。這些概念一共可分為三組,分別是:
根據問題求解思路、方法的不同,我們可以將強化學習分為基于模型的強化學習(Model-based RL)、無模型的強化學習(Model-free RL),在這里“模型”的含義是對環境進行建模,具體而言,是否已知其知和,即和的取值。 如果有對環境的建模,那么智能體便可以在執行動作前得知狀態轉移的情況即和獎勵,也就不需要實際執行動作收集這些數據。否則便需要進行采樣,通過與環境的交互得到下一步的狀態和獎勵,然后僅依靠采樣得到的數據更新策略。 我們以圍棋為例舉例說明,自然而然地,我們會以棋盤上棋子的分布作為狀態,以一次落子作為動作,一般以當前棋局的勝率作為獎勵。不妨假設強化學習程序是黑方棋手,如果以黑方棋手落子前棋子分布作為狀態,那么每次狀態的改變便是兩顆棋子,由于無法預測白方棋手的落子,我們無法對狀態轉移進行建模,此場景便是無模型的強化學習。但是,我們使用搜索引擎會發現,AlphaGO、AlphaGo Zero、AlphaZero 均是基于模型的強化學習模型,其差別便在于,他們會在訓練的過程中同時扮演黑方棋手和白方棋手,這也便是“自己與自己下棋”的由來,那么狀態的定義便是任意一方落子前棋子的分布,如此狀態轉移情況顯而易見:給定當前棋子的分布(當前狀態)以及本次落子的位置(動作),求落子后棋子的分布(下一步狀態)。而獎勵值(落子后棋局的勝率)獲取的一般思路是棋局模擬,即不執行實際的落子動作,而是使用其他模型模擬棋局的進行得到獲勝概率。具體方法是蒙特卡羅樹搜索:例如將棋局繼續進行 1600 次,得到執行各候選動作的獲勝次數,除以 1600 作為獲勝概率,如此也可以找到當前最優動作,模擬棋局的進行不依賴實際落子,AlphaGo Zero 依賴一個更加小型的模型快速走子,AlphaZero 直接依賴待學習的策略幫助自己走子。這類似于人類棋手的心算,在強化學習場景下我們說這是對環境進行建模,如此我們便可以稱其為基于環境的強化學習。 上述是較為復雜的基于模型的強化學習算法,不考慮對環境的建模,基于模型的強化學習可以簡單的使用動態規劃求解,任務可定義為預測(prediction)和控制(control)。預測的輸入是和策略,目的是評估當前策略的好壞,即求解狀態價值函數。控制的輸入是,目的是尋找最優策略和。對預測任務的求解可簡單利用上述與關系的公式,易得的迭代公式:式中的均為已知,只需迭代求解即可,上述方程也稱為貝爾曼期望方程(Bellman Expectation Equations)。這里也可以列線性方程組求解,有個狀態節點,即有個方程。而對于控制任務,策略是未知、待優化的。在最優策略的求解問題上,有兩種方法:值迭代、策略迭代。策略迭代會從一個初始化的策略出發,先進行策略評估,即固定然后使用預測的方法求解最優值函數, 然后進行策略改進,可以簡單的利用來貪婪的改進策略, 不停的進行策略評估和策略改進兩個步驟,直至收斂。而值迭代方法則利用公式:相比與策略迭代的方法,其并沒有進行完成完整的預測操作, 預測操作無論是求解線性方程組或是迭代至收斂,均需要消耗較長時間, 值迭代的方法簡化了這一操作,僅根據下一個狀態的值,得到當前狀態下一個輪次的值。 相比于基于模型的強化學習,無模型的強化學習方法更具有研究價值,也更復雜。我們首先介紹強化學習領域中存在已久的兩大類方法:基于值的強化學習(Value-based RL)和基于策略的強化學習(Policy-based RL)。基于值的強化學習方法會學習并貪婪的選擇值最大的動作,即。該方法往往得到確定性策略(Deterministic Policy)。而基于策略的強化學習方法則對策略進行進行建模,直接對進行優化。該類方法一般得到隨機性策略(Stochastic Policy)。 確定性策略是在任意狀態下均選擇最優動作,它是將狀態空間映射到動作空間的函數。它本身沒有隨機性質,因此通常會結合-greedy或向動作值中加入高斯噪聲的方法來增加策略的隨機性。一般基于值的強化學習方法學習到的是確定性策略。隨機性策略是在狀態下按照一定概率分布選擇動作。它本身帶有隨機性,獲取動作時只需對概率分布進行采樣即可。一般基于策略的強化學習方法學習到隨機性策略。 需要注意的是,上文中提到的策略迭代、值迭代算法與此處基于值的強化學習方法、基于策略的強化學習方法并無對應關系,他們均是基于值函數來完成策略的更新,可以劃入基于值的強化學習方法中。 我們最后簡要介紹兩種基于值的強化學習算法Q-Learning和SARSA(State-Action-Reward-Sate-Action) 并以此為例說明on-policy和off-policy的強化學習。首先介紹他們選擇動作的策略-greedy:Q-learning算法與SARSA算法均為無模型的基于值的強化學習算法,由于不知道、,他們均需要通過與環境交互得到獎勵值和狀態轉移的結果,智能體從開始狀態到結束狀態的一條軌跡,我們稱之為episode,episode中一次狀態轉移我們稱為step,每一個step我們都更新一個值:
我們稱式(4)為行為策略(Behavior Policy),智能體遵循該策略選擇動作與環境進行交互獲取數據(獎勵值、轉移到的狀態),與之相對的為目標策略(Target Policy),目標策略依賴行為策略獲取的數據進行更新,更新也會同步到行為策略,目標策略是我們優化的對象,也是強化學習模型推斷時使用的策略。式 (5) 即為目標策略的更新公式,其中來自于行為策咯,、來自于環境,而則取決于目標策略,SARSA 算法的目標策略同樣為-greedy,目標策略與行為策略保持一致,我們稱 SARSA 是 on-policy算法。Q-learning 算法的目標策略是,目標策略與行為策略并不一致,我們說 Q-learing 是 off-policy 算法。 兩者的偽代碼如圖4、圖5所示。可以看到圖4中 來自于,而圖5中A′ 來自于上一句代碼中-greedy 策略。 圖4 Q-learning 算法:off-policy[7]
圖5 SARSA算法:on-policy[7]整體而言,on-policy是行為策略與目標策略一致,而off-policy是行為策略與目標策略不一致。除此之外還需要注意的是offline離線學習算法,該類型算法使用靜態的已經獲取好的數據用于學習和部署,與前面 提到的實時與環境交互獲得反饋的在線強化學習模型有所不同。
圖6 on-policy vs off-policy vs offline RL[8] 行為策略與目標策略的不一致有多種情況,Q-learning 中選擇 ?-greedy 作為行為策略目的是在數據獲取過程中有一定的探索性,而在圖6(b)中行為策略與目標策略的不一致在于行為策略會累積一定數據后更新目標策略,或者說目標策略的更新不會馬上同步到行為策略中,此時行為策略是舊的目標策略。圖(a)則是 on-policy 算法,圖(c)是 offline 算法,可以看到僅有簡單的數據收集-> 策略學習-> 模型部署過程。
在上文中,我們首先介紹了強化學習的定義與優化目標,并介紹了重要的兩個值函數:狀態值函數,狀態動作值函數,無論是基于值或是基于策略的強化學習方法中他們均有著重要的作用。在第二節中我們首先簡要介紹了基于模型的強化學習,分為預測和控制兩種形式,學習控制其本質是為了尋找最優策略,而學習預測是為了對策略找到一種評價標準。在無模型的強化學習方法中,我們首先介紹了基于值的強化學習法方法,并以Q-learning和SARSA為例介紹了on-policy和off-policy。基于策略的強化學習方法的介紹,我們將通過閱讀PPO論文進行。
圖7 強化學習示意圖 3. PPO論文講解 PPO算法的提出來自于論文《Proximal Policy Optimization Algorithms》,該論文內容只有8頁,首先回顧了策略梯度算法的發展,提出了兩種形式的PPO算法,并比較了其他強化學習算法的效果。在本章我們首先跟隨作者的思路,從最簡單的策略梯度算法開始,然后拓展到 Trust Region Policy Optimization(TRPO)算法,進一步得到PPO算法的兩種形式:、,最后進行實驗驗證效果。不同于論文中僅給出公式的做法,我們補全了一些公式的推導過程,并對PPO算法的特點進行了一點討論。 3.1 策略梯度定理策略梯度定理是策略梯度算法中最簡單的形式,論文中給出了策略梯度算法中梯度估計的一般形式:梯度策略算法中,策略被建模為一個神經網絡模型,神經網絡的參數決定了策略,進而決定了狀態動作值函數、狀態值函數。上式中為機會方程(Advantage Function),有。引入該變量的意義在于: “Sometimes in RL, we don’t need to describe how good an action is in an abolutesense, but only how much better it is than others on average. That is to say, we want to know the relative advantage of that action. We make this concept precise with the advantage function. ”為了使神經網絡根據這一形式進行梯度下降操作,作者構造了如下形式的目標函數,其對求導即可得到上述形式的梯度。 該方法下,模型容易在一次軌跡中進行多步優化,這并不準確,因為一次優化后其軌跡信息理應再次采樣,后續的實驗中也會證明這一方法容易導致較大的策略迭代,并造成嚴重影響。 下面我們從基本定義開始推導。最簡單的策略梯度定理
策略梯度定理以軌跡的期望收益作為優化目標,即,為了推導方便,此處將會是有窮的、無折扣的累積獎勵,但無窮的、有折扣情況下的推導也幾乎完全相同。我們首先得到軌跡在下出現的概率因此軌跡出現概率的對數形式為:注意,由于環境對于沒有任何依賴,因此,,的梯度均為0。其對梯度求導有:接下來會使用一個對數求導的恒等變換:得到以上中間結論后,可以開始以下推導: 最后得到的這一形式的公式是最簡單的策略梯度定理,大家可以參考OpenAI給出的實現代碼[9]。結合代碼我們可以更好的了解簡單的策略梯度算法訓練過程:在初始化變量代表的神經網絡模型后,我們也同時得到其代表的策略。根據模型提供的策略,智能體與環境進行交互,得到一條軌跡,在這個過程中獲取到的還有每一次動作的獎勵,每一次決策時動作的概率分布,以及選擇的動作,帶入上述公式即可計算值。對于這一條軌跡,其對應的獎勵由環境決定是一個定值,對于一條已經出現在數據集中的軌跡,其由何種策略生成已經與策略無關了,這也是前文中提到的梯度為0的理解方式。策略模型會根據值,將軌跡中出現的的的概率予以提高,這條軌跡的總收益越高,提高的幅度也越大。隨著訓練的進行,模型的參數會向著高收益軌跡出現概率更大的方向變化。悟已往之不諫,知來者之可追:僅考慮未來的獎勵(Reward-to-Go)****上述方法中每一對(s,a)增加的幅度均與成正比,這樣做并不合適,智能體只應該根據動作的結果來進行決策,在決策前已經獲得的獎勵不應該影響決策,應該只包括未來的獎勵。因此將式(6)修改為: 在代碼實現上與原來不同的僅僅只有軌跡生成后loss值的計算,loss值的計算需要(s,a)對的權重,原公式中權重均為軌跡的總收益,此處為(s,a)對之后總的獎勵。
EGLP 引理(Expected Grad-Log-Prob Lemma) ****這已經很接近論文中的形式了,我們繼續補充一些技巧進行后面的推導。不妨設隨機變量符合概率分布,則 顯然因此 即在此基礎上,只需要函數只依賴于狀態,都有: 因此式(7)可以替換為: 這里使用到的函數一般被稱為基線。最常見的是,這樣做在理論上意味著:我們并不關注當前狀態下執行這個動作的值到底有多高,而是關心該動作相比于所有動作的平均水平相比是好還是壞。在實際實驗過程中,這也會讓策略學習更快更穩定。因為, ,,若取,則此處是下多次采樣得到的軌跡的期望收益,而論文中給出的是單條軌跡下的期望收益值,成功得到論文中形式,也成功介紹了策略梯度算法的大致情況。
由于上述方法中模型迭代步長過大,并且其未在策略變化后重新進行采樣,因此作者將上述目標函數修正如下:上式中代表更新之前的參數。對目標函數進行線性近似,對約束進行二次近似后,該問題的求解可以用共軛梯度法有效求解。 這一公式的來歷我們參考了論文[10]。策略梯度算法對策略的更新均使用公式:。在這里更新步長非常重要,當步長不合適時,更新的參數所對應的策略是一個更不好的策略,當利用這個更不好的策略進行采樣學習時,再次更新的參數會更差,因此很容易導致越學越差,最后崩潰。 在這一節中,我們使用表示策略對應的累積獎勵函數,如果可以將新的策略所對應的獎勵函數分解成舊的策略所對應的獎勵函數加其他項。只要新策略所對應的其他項大于等于零,那么就能保證獎勵函數單調不減。 現證明 其中,和分別表示新策略和舊策略。證明過程如下: 我們將式(9)進一步寫為:其中為的聯合概率,為狀態s在整個動作空間求和;對整個狀態空間求和;求整個時間序列的和。 我們定義
以此去掉時間序列求和操作。得到:這一公式可以直觀解為:對原策略下任意狀態,其所有動作的機會函數值以被選中概率作權重的加權和均是0(機會函數的定義),新策略就是在保持機會函數值不變的情況下,每個狀態都有了新的動作的概率分布使得機會函數的加權和都大于等于0,那么新狀態就一定優于舊狀態。即保證的時候,就可以保證新策略是比舊策略好的。 但由于近似誤差和估計誤差的存在,可能會存在一些狀態不滿足,即。
舊策略的狀態分布代替新策略的狀態分布在上述公式中含有新策略,同樣也含有新策略,這個復雜的依賴關系 讓式(10)難以優化,即根據機會函數值調整得到時,勢必還要考慮到前面的。以此我們引入TRPO的第一個技巧對狀態分布進行處理。我們忽略狀態分布的變化,依然采用舊的策略所對應的狀態分布。這個技巧是對原代價函數的第一次近似。其實,當新舊參數很接近時,我們將用舊的狀態分布代替新的狀態分布也是合理的。式(10)變成了:此處作者使用了一個新的符號來表示相對于舊策略新策略產生的獎勵。接下來作者參考論文[11]中的結論:當策略網絡可微的時候,將和看成關于變量的函數,那么對于有: 該結論可直觀的由圖8所示。 圖8 TRPO 一階近似圖 這個式子告訴我們:在一個很小的步伐上(相當于舊策略,或者說 未更新的當前策略),若可以得到優化,那同樣可以被優化。但這個公式并未給出一個合適的步長。 式(11)提供了一個思路,就是想辦法在舊策略的鄰域內去提升,但問題在于難以找到合適的值。為了解決這個問題,Kakada提出了一種叫Conservative Policy Iteration的算法,它給出了關于的下界。 定義,將新策略表示為當前策略和貪婪 策略的混合: 接下來 Kakada 就推導出了不等式 但式(13)僅適用于式(12)所示混合策略,而式(12)是實踐中還是很難去處理的,因此接下來作者將會做一些處理使得從適用于混合策略延展到適用于普遍的策略。式(13)的意義在于如果策略的更新使得式(13)右邊的提升,那么就保證了的提升,這就是我們想要的。 記 作者在此給出了一個具有普適性的不等式 該不等式給了的下界,我們定義這個下界為,下面利用這個下界,我們證明策略的單調性: 且則: 如果新的策略能使得最大,那么有, ,這個使得最大的新的策略就是我們一直在苦苦找的要更新的策略。到這里我們的思路是:已知的下界,然后對下界求最大,從而優化出一個符合我們目標的。該算法目前僅僅只是理論層面的,距離實踐還需要接下來的一些處理。我們首先將該問題形式化為 在這里不是目標策略參數,而是指代當前策略,指未更新前的,或者說相對于新策略的舊策略。然后我們將最大KL散度這個獎懲項放到約束里去。之所以要這么做,是因為懲罰系數值太大了 (通常之間),從而在優化過程中會加大對KL散度的偏倚,又因為優化是求最大值,因此獎懲項會變得很小,根據KL散度的特點,策略的更新步伐就會很小,訓練速度很緩慢,因此顯然將最大KL散度當成獎懲項不是很合適,那么自然地做法就是將其轉變為約束。具體得到:θθ上式中的約束就是策略參數的置信區域,也就是TRPO名稱的由來,它約束了參數的值不會更新幅度太大,從而造成策略提升失效的現象,也就是說在約束范圍之內,可以放心的去按照目標函數去優化參數。對于每一個step,都會在安全的區域內進行更新。最大化KL散度轉為約束之后,取消了獎懲系數,就不存在更新步伐過小的現象了。平均KL散度代替最大KL散度之所以這么做,是因為最大KL散度需要遍歷每一個狀態,導致實際計算中計算量過大。平均KL散度通過期望的形式可以用批量樣本的方式去近似,那么我們的優化目標進一步改為:其中:
重要性采樣
觀察這樣一個變換:整理得到:上述式子的場景是:服從分布,我們想計算的期望值,但是假設我們不能在分布中采樣數據,只能從另外一個分布中去采樣數據,可以是任何分布,那么經由上述式子,我們就可以從中采樣,再去計算,最后取期望值,就是我們所求的答案。 對于我們首先將 變換成然后將目標函數中的替換為期望, 得到:引入重要性采樣操作,將替換為,得到:目標函數成功變換為所求形式,完整的公式為:
對于上述式子,如果令,那么即可得到: 上式為CPI(Conservative Policy Iteration)算法的目標函數,正如其名,CPI算法使用了一種非常保守且復雜的方式對目標函數進行優化[12]。相比之下TPRO算法并未改變目標函數的形式,而是引入約束項,使用拉格朗日對偶法處理之后采用共軛梯度法進行優化,而PPO算法的改進之處同樣是解決這一目標函數難以優化的問題:如何控制更新步伐,避免策略更新步伐過大導致效果下降、更新步伐太小導致訓練速度緩慢的問題,即使TRPO算法,也仍然遺留了實現困難,求解過程計算量大的缺點。
我們首先來看PPO算法對此問題的第一種優化方式,將上述目標函數修改為如下形式:其中表示將限制范圍,那么上式就將限制在之間,一般取,上式也就是PPO的目標函數,論文中對于其進行了繪圖表示。 圖9 CLIP 效果圖 下圖也說明了CLIP相比于CPI區間范圍更小。
圖10 CLIP、CPI 效果對比
前面講到采用罰函數法進行參數更新時,主要是罰函數系數的選取比較困難。而現在一種克服方法是自適應調整系數。其優化目標為:計算:
算法涉及3個超參數:、、 ,但這三者的敏感性很低,調節并不是很麻煩。效果比CLIP要差,但是可作為一個baseline。采用SGD做一階優化。
上一章中第三節介紹了基于TRPO的函數;第四節介紹了基于TRPO的函數。這一節開始介紹完整的PPO算法。PPO算法的完整目標函數: 式中為2個超參數,為信息熵增加探索率,為訓練Critic網絡的損失函數。這里采用作為替代函數。優勢函數的估計基于以下式子:其中。 論文隨后給出PPO算法偽代碼如下: 圖11 PPO偽代碼該算法使用固定長度的軌跡片段,每次迭代,個平行的actor中每一個均會收集個時間戳的數據,然后計算替代損失,使用小批量隨機梯度下降進行優化,或者Adam(效果更好)。
作者在7個模擬機器人任務上測試了標準策略梯度、、作為目標函數的訓練效果,以隨機初始化的策略效果作為0,最好的結果作為1,每個目標函數在每個任務上均運行3次,取平均值作為目標函數的評分。實驗結果如下所示:
圖12 不同目標函數的效果
作者將TRPO算法、交叉熵、標準策略梯度算法(使用Adam優化,每一個batch后Adam算法的步長根據類似于的方式自適應調整)、A2C、帶有置信域的A2C算法在連續空間問題下進行對比。效果如下圖所示: 圖13 連續空間下算法效果對比
為了展示PPO算法在在高維連續控制問題下的效果,作者訓練了一個3D模擬機器人,主要任務包括:向前運動、目標追逐、跌倒爬起,該任務使用作為目標函數訓練得到機器人的運動策略。其在三個任務上的學習曲線如下圖所示: 圖14 3D控制學習曲線
圖15 3D控制示意圖上圖中為12幀靜態圖像,在第7幀時目標的位置發生了變化,機器人也隨之朝向新的目標。
作者在雅達利發行的49款游戲上測試了PPO以及其他算法的效果,如下表所示:
圖16 雅達利游戲中效果3.7 論文總結 PPO 算法在 TRPO 的基礎上提出了兩種優化后的形式、,并經過大量實驗證明了其良好的效果。相比于 TRPO 算法,兩種形式均重點解決 TRPO 約束項影響迭代步伐、求解繁瑣、實現困難的特點,它們均將約束項轉為懲罰項,解決了有約束的優化問題求解繁瑣的特點,針對迭代步長過大的問題,將之限制在[1??, 1 + ?]范圍內,則自適應地調整懲罰性系數,同樣達到了限制步長的效果,與TRPO相比,它們對約束項的處理更加簡單優雅,實現也更方便,性能也得到了提升。4 總結與思考PPO 算法自 2017 年提出后,以其實現相對簡單、效果優良的特點,在 OpenAI 強化學習相關工作中出現頻率極高,在游戲、機器人控制等實際應用領域成功證明其性能,截至目前仍然是基于策略的強化學習算法中最前沿的算法,即使 OpenAI 已經解散其機器人研究組,PPO 算法卻又意外的在 NLP 領域大放異彩,其與 GPT-3 的結合成功產生了讓人驚艷無比的 ChatGPT,筆者不禁思考,這種 RLHF(Reinforcement Learning Human Feedback)范式下究竟是什么讓 ChatGPT 如此強大,是作為 Human Feedback 的高質量語料,還是 PPO 算法中蘊含的策略,還是 GPT-3 中未充分挖掘的大模型潛力?目前高質量數據逐漸成為商業公司的專屬,國內大模型的研發也落后于美國,模型提出后缺乏后續維護,沒有長期堅持下去形成自己的技術路線,不注重研究的 diversity。而國外部分頂尖研究組已經與 OpenAI 等大公司形成緊密的聯系,在相關研究上有著很大的優勢,ChatGPT 的出現已經對很多 NLP 研究領域造成了巨大的沖擊,面對美國在大模型上的封鎖,我國缺乏由商業公司主導的大模型,國內研究組只能另辟蹊徑,但大模型的出現到產生 ChatGPT 一般的成果需要漫長的技術積累,若不立刻行動起來,我國與美國在大模型上的差距恐怕會越拉越大。參考文獻[1] Barret Zoph, Vijay Vasudevan, Jonathon Shlens, and Quoc V. Le. Learning transferable architectures for scalable image recognition. CoRR, abs/1707.07012, 2017.[2] OpenAI. Learning dexterity: a human-like robot hand to manipulate physical objects with unprecedented dexterity. Web Page, 2018. Last Accessed December 23, 2022.[3] Christopher Berner, Greg Brockman, Brooke Chan, Vicki Cheung, Przemys?aw D?biak,Christy Dennison, David Farhi, Quirin Fischer, Shariq Hashme, Chris Hesse, et al. Dota2 with large scale deep reinforcement learning. arXiv preprint arXiv:1912.06680, 2019.[4] OpenAI. Openai five defeats dota 2 world champions. Web Page, 2018. Last Accessed December 23, 2022.[5] OpenAI. Openai spinning up. Web Page, 2018. Last Accessed December 23, 2022.[6] CSDN. 【強化學習筆記】強化學習中的 v 值和 q 值. Web Page, 2022. Last Accessed December 23, 2022.[7] David Silver. Lectures on reinforcement learning.URL://www.davidsilver.uk/teaching/, 2015.[8] Sergey Levine, Aviral Kumar, George Tucker, and Justin Fu. Offline reinforcement learning: Tutorial, review, and perspectives on open problems. CoRR,abs/2005.01643, 2020.[9] OpenAI. Openai implement code. Web Page, 2018. Last Accessed December 23, 2022.[10] John Schulman, Sergey Levine, Pieter Abbeel, Michael Jordan, and Philipp Moritz. Trust region policy optimization. In Francis Bach and David Blei, editors, Proceedings of the 32nd International Conference on Machine Learning, volume 37 of Proceedings of Machine Learning Research, pages 1889–1897, Lille, France, 07–09 Jul 2015. PMLR.[11] Lucian Bu?oniu, Damien Ernst, Bart De Schutter, and Robert Babu?ka. Approximate reinforcement learning: An overview. In 2011 IEEE symposium on adaptive dynamic programming and reinforcement learning (ADPRL), pages 1–8. IEEE, 2011.[12] S. Kakade and J. Langford, Approximately Optimal Approximate Reinforcement Learning. Proceedings of the Nineteenth International Conference on Machine Learning: , 2002.
陳一帆, 就讀于哈爾濱工業大學社會計算與信息檢索研究中心,對話技術(DT)組,大四本科生,師從張偉男教授。研究方向為對話式推薦系統。
本期責任編輯:趙森棟本期編輯:趙 陽
AIGC成為新的內容生產方式,跨模態生成值得重點關注。區別于PGC與UGC,AIGC是利用人工智能技術自動生成內容的新型生產方式。按照模態區分,AIGC可分為音頻生成、文本生成、圖像生成、視頻生成及圖像、視頻、文本間的跨模態生成,細分場景眾多,其中,跨模態生成需要重點關注。 自然語言處理(NLP)賦予了AI理解和生成能力,大規模預訓練模型是NLP的發展趨勢。NLP的兩個核心任務分別是自然語言理解(NLU)和自然語言生成(NLG)。以ELMo、BERT、GPT為代表的預訓練模型,降低了NLP的技術門檻。ELMo解決了“一詞多義”的問題;BERT通過MLM(類似于完形填空)和NLP(判斷句子是否相連)進行預訓練,增強了上下文的理解能力。GPT通過預測下一個詞,獲得了生成能力;GPT-3在此基礎上使用了更大的數據和更大模型,無需針對下游任務進行傳統的微調,并且采用了小樣本學習提升生成效果。 ChatGPT是NLP發展中具有里程碑式意義的模型之一。ChatGPT是OpenAI從GPT-3.5系列中的模型進行微調產生的聊天機器人模型。它能夠通過學習和理解人類的語言來進行對話,還能根據聊天的上下文進行互動,真正像人類一樣來聊天交流,甚至能完成撰寫郵件、視頻腳本、文案、翻譯、代碼等任務。 生成模型賦予了AI創造力,擴散模型是最前沿的技術之一。AIGC的快速發展歸功于生成算法領域的技術積累。GAN的核心思想是“生成”與“對抗”,相比傳統的深度神經網絡,GAN能產生更好的生成樣本,但是仍需解決應用中的問題。擴散模型較GAN更接近人的思維模式,是基于馬爾科夫鏈,通過學習噪聲來生成數據。擴散模型實現了跨模態應用,包括OpenAI的GLIDE和DALL·E2、谷歌的Imagen、StabilityAI的StableDiffusion等。 人工智能由單模態智能,向多種模態融合方向發展。建立統一的、跨場景、多任務的多模態基礎模型或將成為人工智能發展的主流趨勢之一。CLIP模型將語言信息和圖像信息聯合訓練,能夠鏈接文本和圖片,成為跨模態生成應用的一個重要節點,“CLIP+其他模型”在跨模態生成領域成為一種較為通用的做法。2022年,微軟提出的BEiT-3多模態基礎模型,在視覺-語言任務處理上具備出色表現,包括視覺問答、圖片描述生成和跨模態檢索等。多模態提高了基礎模型的靈活性,使其在其他模態的應用中發揮新的潛質。 未來,值得關注的技術要素包括:長文本生成、開放式文本生成、NeRF模型、擴散模型、跨模態大型預訓練模型(支持的模態數據類型、模態對齊架構設計、支持的下游應用)、小樣本學習及自監督算法、強化學習及環境學習等。
OpenAI 新上線的 ChatGPT 可謂是火爆出圈,這個對話模型可以回答后續問題,承認錯誤,挑戰不正確的前提,還能幫你修改代碼中的 bug……只要和它聊上幾句,一會兒功夫它就能把問題給你解決了。例如用戶要求:「ChatGPT 幫我解釋一下文中正則表達式的含義。」ChatGPT:安排。密密麻麻的解釋了一大段內容,應該是解釋清楚了。
ChatGPT 使用與 InstructGPT 相同的方法——用人類反饋強化學習 (RLHF) 訓練模型,但數據收集設置略有不同。ChatGPT 使用監督微調訓練了一個初始模型:人類 AI 訓練員提供對話,他們在對話中扮演雙方——用戶和 AI 助手,AI 訓練員可以訪問模型編寫的對話回復,以幫助 AI 調整回復內容。
為了創建強化學習的獎勵模型,該研究需要收集比較數據,其中包含兩個或多個按質量排序的模型回復。該研究收集了 AI 訓練員與聊天機器人的對話,并隨機選擇一條模型編寫的消息,抽取幾個備選回復,讓 AI 訓練員對這些回復進行排名。此外,該研究還使用近端策略優化算法(PPO)微調模型,并對整個過程進行了幾次迭代。
ChatGPT 對 GPT-3.5 系列中的某個模型進行了微調,該模型于 2022 年初完成訓練。ChatGPT 和 GPT 3.5 在 Azure AI 超級計算基礎設施上進行了訓練。
臺大李宏毅老師:Chat GPT (可能)是怎么煉成的- GPT社會化的過程
參考鏈接: