精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
深度ChatGPT(三):InstructGPT&ChatGPT-用人的反饋引導大規模語言模型變得更...

用人的反饋引導大規模語言模型變得更有價值

InstructGPT論文精讀

模型:有監督+增強學習

模型中各個任務的backbone都是GPT-3的架構,支持的context length是2k的token(其中數據處理中prompt選擇不超過1k,response不超過1k)【chatGPT的context長度更長】

  1. Step1:有監督學習(SFT),Supervised Fine-tuning:在GPT-3的基礎上用人工標注的prompt-reponse進行finetune,幾個有意思的細節
  • a. 16epoch,基本是overfitting,但是效果卻更好
  • b. 用RM Score來做選點而非validation的metrics

2. Step2:強化學習

2.1 生成問題的強化學習建模

如上圖所示,文本生成的問題,可以建模為一個token空間上的序列決策問題(選擇一個token后繼續選擇另一個token)

  • state:context
  • action:reponse的token space上的token
  • reward:生成的質量判別
  • episode:一次完整的decode生成response的過程

RLHF中通過人工標注生成結果的排序數據中學習和建立reward模型,進而把human對結果質量的判斷引入到生成模型中。而生成模型就對應的是Policy模型,通過學習和調整policy模型就是在做生成模型的finetune。

2.2 獎勵模型(Reward model)

  • SFT Model為基礎,6B規模(175B規模的太大,不太穩定)(以GPT-3 6B的差別也不大)
  • 任務:給定prompt,response出分檔的打分
  • Loss:一個prompt內的N個response的pairwise-loss

2.3 PPO模型及訓練

PPO(Proximal Policy Optimization[2])是RL中AC類(Actor/Critic)的經典算法,既有Policy Gradient方法的優勢,同時基于importance sampling實現experience buffer的利用,發揮類似DQN類算法的數據利用優勢,OpenAI非常喜歡用來作為baseline的算法。該算法的具體細節就不展開介紹,感興趣的可以閱讀原論文。

  • Policy(Actor)起點模型:Step1中的SFT模型
  • Reward模型:2.2中的模型
  • Value模型(Critic):初始化自Reward模型
  • 數據:經過實驗發現,全部使用線上真實的Prompt數據+Reward模型(3.1W)會導致模型在人工評估中效果好,但是損失在開放的NLP任務測試集上的效果(作者稱之為alignment tax),最后采用的是10%的預訓練數據保留+PPO Training,這種混合的模型,作者稱之為PPO-ptx
    • PPO Training loss + pretrain loss + KL Pernalty(正則,防止RL overfit)
    • pretraning樣本:RL樣本 = 8:1
    • Loss及目標函數

魔鬼的細節:human feedback的數據構建

整體而言人工標注的數據量級比想象中的小(萬級別),但是質量、數據分布、不同階段的數據標注方式等設計十分精細,再次體現了OpenAI研究員們非常落地的做事風格也體現數據作為模型效果燃料的關鍵之關鍵(不少人也認為之前的GPT-3比同期的不少社區開源的同級別參數量的預訓練模型效果好也很大程度來自于其精細化的訓練數據構建和數據處理)。

1. 40個精心挑選的標注員

  • screen test:為了保證標注的質量,設計了測試來篩選標注人員,主要包含幾個部分
    • i. 識別不安全回復的能力
    • ii. 回復質量排序能力
    • iii. 敏感問題的回復能力:1-7分的打分及平均
    • iv. 按照不同的人群和文化進行分組

2. 標注數據來源:Prompts的數據來源及類型

  • a. 人工撰寫,三種類型的數據
    • i. plain:直接給出需求問題,比如:世界上最大的河是什么?
    • ii. few-shot:即給出一些問題和結果示例,再帶上新的問題,比如:問:世界上最高的山?答:世界上最高的山是喜馬拉雅山,問:世界上最長的河是?
    • iii. user-based:根據一些use case場景進行設計
  • b. Open AI之前GPT-3等開放模型中的API請求(相當于真實的線上Query)為了保證多樣性
    • i. 對相同的prompt前綴進行去重
    • ii. 每個機構限制采樣數量(200)

3. 標注的任務及目標

  • a. 構造和撰寫一些prompt并且寫出對應的結果 -- for SFT任務
  • b. 針對給定的prompt,撰寫對應的結果  --- for SFT任務
  • 針對給定的prompt、模型給出的多個結果,標注結果的好壞排序 --- for Reward Model

4. 標注的標準,三個維度:有用(Helpful)、真實(truthful)、無害(harmless)

  • a. Helpful:意圖理解精準,能夠對模糊的需求提出澄清以及解釋為什么模糊,結果描述清晰,沒有反復重復的無用詞匯等
  • b. Truthful:正確、真實(不同場景下有所不同,比如 closed q&a或者summarization,則不應該跳出參考的信息進行編造)
  • c. Harmless:無害,包括黃色、暴力、歧視、敏感政治回答等各類不合理有爭議的言語

5. 標注的數據量及各個任務的訓練數據量

  • a. SFT任務中人工撰寫的prompt占比較高(1.3w)
  • b. RM任務中以真實的prompt為主(3.3w)
  • c. PPO任務完全以真實的prompt為主(3.1w)

數據類型中包含了不少模糊的、不清晰意圖的、敏感內容等。

評估和實驗結論

1. 實驗評估和驗證的方式

  • a. 數據集
    • i. 真實的prompt數據
    • ii. 公開的NLP任務:包含一些是否真實結果的數據集TruthfulQA,是否有害回復的Realtoxicityprompts等
  • b. 評估方式
    • i. 人工標注的打分分檔,問題細分
    • ii. 模型對比:以175B的SFT為對標,看人工對結果質量打分的GSB(Good/Same/Bad)
    • iii. 其他公開NLP任務的數據集自動指標

2. 關鍵和有啟發性的一些實驗結論

  • a. 在生成的回復質量的人工評估上,GPT-3->+SFT->+PPO的效果逐級變好,PPO的表現作為優異,1.3B的模型規模上就能beat SFT 175B的模型
  • b. 表現出很強的泛化能力,在沒有見過的測試集上依然效果很好
  • c. 公開的instruct類的數據集有用但是并不能完全體現真實場景下語言模型的使用(這點非常重要,不如OpenAI線上用戶使用的Prompt價值高,數據價值再次顯現)
    • 訓練成本,SFT:0.49PFlops/s-days vs RLHF:60PFlops/s-days vs GPT-3 175B:3640 PFlops/s-days
    • 其中1PFlops/s-days在175B規模的模型下大概對應8卡 V100/天(A100雖然算力更好,但是顯存依然無法突破限制)
    • 用FLAN和T0(剛好懟一波G廠Flan-T5)的數據集做SFT相比GPT-3有效果,但是不如用OpenAI自己數據訓的(當然評估的數據集也是OpenAI的customer prompt)
    • 兩個原因:1)真實的prompt中有比較多比例開放式的問題(頭腦風暴類的),由于沒有客觀答案,往往公開數據集不太會納入 2)公開數據集沒有很好的條件收集到足夠多樣性的數據
    • 在truthful上instructGPT大幅提升,避免有害信息上小幅提升
    • instructGPT(+PPO)表現出非常強的訓練集外的泛化能力,尤其是的的的的泛化能力(訓練的語料中,尤其是SFT/RM/RLHF,非英文語言的語料比例非常少,但是卻表現出很強的其他語言的能力,在我們測試的中文場景下也能看到)。反過來說,跨語言的語料的學習也應該同樣有可能帶來整體效果性能的提升
    • f. 訓練成本遠低于預訓練,相比于繼續增大預訓練模型的參數規模Alignement是一個更具性價比且正確的方向

ChatGPT實現推測

ChatGPT官方并沒有像instructGPT那樣給出詳細的實現論文,僅有官網Blog[11]上比較概要性的描述,以下通過這些描述來盡量推測其實現的一些細節。

ChatGPT is fine-tuned from a model in the GPT-3.5 series, which finished training in early 2022. You can learn more about the 3.5 series here.

ChatGPT的底座模型,如上述,是GPT 3.5系列,基于推測至少可能是text-davinci-002(即既有text能力又有code能力)

We trained this model using Reinforcement Learning from Human Feedback (RLHF), using the same methods as InstructGPT, but with slight differences in the data collection setup.

整體的技術方案和InstructGPT類似,并且官網的blog中給的圖也和instructGPT論文中的示例圖相似,于是顯然數據的構造、標注的方式成為關鍵,尤其是如何構造對話的語料

對話語料的構造推測

以如果是我在這個設定下去考慮構造對話語料訓練出擁有這類對話能力的模型,我該怎么去構造語料出發,來思考。整個RLHF的訓練涉及到3個關鍵階段:

1. 有監督的微調(SFT:Supervised Finetune)

We trained an initial model using supervised fine-tuning: human AI trainers provided conversations in which they played both sides—the user and an AI assistant. We gave the trainers access to model-written suggestions to help them compose their responses. We mixed this new dialogue dataset with the InstructGPT dataset, which we transformed into a dialogue format.

語料構成:人工交互標注產生 + instructGPT轉化為對話語料

Q:如何人工標注產生對話語料?

兩個標注人員分別作為用戶以及AI進行對話,那么對話的起點以及場景從哪里來,從instructGPT的數據構造參考的話,可以有兩種:

  1. 場景構造,然后開始自由發揮
  2. 開頭的prompt基于線上API請求中的抽樣,后面的多輪對話過程按照人工標注的思路開展

值得注意的是應該構建不只一個需求的對話過程,包含一些插入、多個需求等復雜的場景情況

而其中chatBOT的標注人員的回復策略以及user的回應的策略、采樣的數據等,根據最終期望模型獲得能力需要有精心的設計。其中回復的策略對照chatGPT的能力以及理想對話中的action strategy應該有幾種

  1. follow the instruction:按照用戶的需求直接給滿足的response,這個和instructGPT中類似
  2. clarify:對于模糊的需求進行澄清和詢問。
  3. admit the mistakes:要求user側應該能夠指出response的錯誤,同時chatBOT側的標注人員能夠根據指出的錯誤進行回復和答案的修改
  4. challenge the premise:對于不符合邏輯的問題,chatBot側的標注人員能夠生成對不合理邏輯的挑戰和解釋的答案
  5. reject inappropriate requests:對于邊界的問題和不安全的問題,不回復(數據的抽樣以及標注人員的回復策略都需要對應的設計)

另外,從多輪的一些指代消解維度來看,抽樣的數據和對話語料構建的過程中也應該可以仿照對話的一些維度的能力進行標注的引導和數據分布的均衡:Query中指代、結果中指代等。

Q:instructGPT中的數據轉化為對話的語料?

instructGPT中都是單輪的Prompt-Response的語料,要轉化為對話的語料。能想到的最簡單的是把單輪的語料做一些隨機的組合形成一些對話的語料,這種組合出來的對話語料可以體現用戶不同的需求切換,在對話場景中依然能夠正確的理解。但是如果只是這樣子的話,感覺并沒有充分的利用起來,如果可以的話,應該可以對其中的一些原本的prompt就屬于模糊需求、有錯誤的、邊界能力以及不安全類的挑出來,再過人人交互的對話標注方式進行延展產生這些場景下更豐富的多輪語料。

2. 獎勵模型(RM,Reward Model)

RM的標注數據在instructGPT中主要是對一個prompt下的不同response標注結果的質量排序,而對話中需要把prompt換成一個context。

To create a reward model for reinforcement learning, we needed to collect comparison data, which consisted of two or more model responses ranked by quality. To collect this data, we took conversations that AI trainers had with the chatbot. We randomly selected a model-written message, sampled several alternative completions, and had AI trainers rank them.

上述的描述中,有個細節是用標注人員與chatbot的交互中的某一輪,展開來看對應的多個結果,讓標注人員進行結果的質量排序。那么這個時候的chatbot用什么模型,最原始的底座模型顯然沒有對話能力。所以我推測應該是在第一步SFT之后。

3. 增強學習訓練(with PPO)

we can fine-tune the model using Proximal Policy Optimization. We performed several iterations of this process.

用PPO進行finetune,這塊的數據instructGPT中完全采用的是線上API的prompt,但那里面更多的應該都還是單輪的。我翻看了下,也有很多GPT-3之后下游的生態中用來做chatbot的,所以應該可以從這個里面抽取數據。當然也可以采用之前人工標注數據中起點的prompt從線上來人人對話繼續延展產生的對話語料。

References

  1. OpenAI官網:https://openai.com/
  2. instructGPT:https://arxiv.org/abs/2203.02155
  3. ChatGPT,https://openai.com/blog/chatgpt/
本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
獨家 | ChatGPT工作原理:機器人背后的模型
ChatGPT以及LLM(大語言模型)的思考 | 一起用AI
RLHF何以成LLM訓練關鍵?AI大牛盤點五款平替方案,詳解Llama 2反饋機制升級
萬字長文解讀:ChatGPT的前世今生
ChatGPT的前世今生——原理解析和拓展思考
大模型研發核心:數據工程、自動化評估及與知識圖譜的結合
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 沁阳市| 南岸区| 镇赉县| 五原县| 江山市| 海口市| 茶陵县| 峨山| 临海市| 阿巴嘎旗| 浑源县| 瓮安县| 方山县| 广丰县| 海宁市| 土默特左旗| 鄂托克前旗| 韶山市| 甘洛县| 宁晋县| 阿巴嘎旗| 寿阳县| 上饶市| 新建县| 儋州市| 墨玉县| 会泽县| 巴中市| 铁岭县| 宜君县| 岳西县| 文昌市| 铁岭县| 平谷区| 辽源市| 旌德县| 荥经县| 巴彦县| 治县。| 武汉市| 寿光市|