文章目錄
- 1 背景介紹
- 2 标記員篩選
-
- 2.1 标記員篩選标準
- 3 資料集及其标注
-
- 3.1 預訓練
- 3.2 微調
-
- 3.2.1 SFT-demonstration data
- 3.2.2 RM-comparison data
- 3.3 資料集大小
- 4 模型實作
1 背景介紹
ChatGPT的訓練過程與InstructGPT相近,大緻分為三步:
- SFT:收集描述型資料,對GPT3.5有監督微調
- RM:收集對比型資料,訓練一個獎勵型模型(RM)
- PPO:使用PPO算法,用RM繼續微調GPT3.5
由上述可見,任何一個訓練過程,首當其沖的是擷取到每個任務階段所需要的标注型資料,是以本文将對ChatGPT可能使用到的資料及其标注方法進行介紹。
2 标記員篩選
由于在ChatGPT微調的過程中,對資料極為敏感,人們所希望的語言對話模型所生成的回答應該是真實、無害、有幫助的,并且在模型評估時,真實、無害是基本要素。在這樣的需求下,openAI在挑選标記員時進行了一系列的篩選測試,進而保證結果的可靠性。
2.1 标記員篩選标準
- 對敏感言論的看法。敏感言論指的是能夠引起人的強烈負面情緒的言論,openai要求标記者對其看法應盡量一緻;
- 答案排名能力。要求标記員與研究人員,就模型給出的問題回答排序應一緻;
- 識别不同領域的敏感内容的能力。
3 資料集及其标注
3.1 預訓練
由于無論是ChatGPT所采用的GPT3.5,還是InstructGPT所采用的GPT3,都是事先訓練好的預訓練模型進行微調,是以無需太多關注預訓練階段所使用的資料。
在預訓練階段,模型采用無監督學習方式,所采用資料集來自大規模文本資料,如網頁、電子書、新聞文章、部落格等,無需進行标注。訓練過程中,模型接受一個輸入序列(通常是文本的一部分),通過前面已經生成的部分來預測接下來的一個單詞。在訓練過程中,模型會根據預測結果和實際标簽的差異來更新模型的參數,以使得模型能夠更好地預測下一個單詞(與GPT訓練方式相似)。

上式描述了預訓練階段模型的似然函數,模型設定了大小為k的視窗,每次用k個單詞去預測随後出現的單詞,使整體預測機率最大。
https://www.cs.ubc.ca/~amuham01/LING530/papers/radford2018improving.pdf
3.2 微調
在有了預訓練模型階段,我們将用具體的下遊任務類型出現的資料,對模型進行微調,進而産生符合預期的效果。在InstructGPT中,訓練過程分為了三個階段為有監督微調(SFT)、獎勵模型訓練(RM)、基于RM模型使用PPO微調SFT。本節内容将對各階段出現的資料及标注,各資料集的大小進行介紹
3.2.1 SFT-demonstration data
在微調階段,模型會使用人類對話資料進一步優化模型,微調階段屬于有監督學習,需要對文本進行标注。對于這個階段的資料(demonstration data),将會構造或針對給定的問題,由标注工對這些問題進行回答,問題-回答對構成有标簽的資料,用于對模型微調。出現的問題形式共有3種:
- plain:直接給出需求問題,如“世界上最大的河?”;
- few-shot:先給出一些問題和回答,再提出新問題。如“給出此條微網誌的情感分析?”先提供若幹條微網誌資訊,并給出其“正面”或者“負面”的标簽,再給出一條新的微網誌内容;
- user-based:根據具體的使用者場景設計出的問題,場景類型共10類,如生成類問題,問答,頭腦風暴,聊天,重寫,總結,分類,抽取等。如頭腦風暴場景下的“學習古希臘時應該知道的重點?”,生成類場景下的“寫一篇短篇小說,講述一隻棕熊到海灘上,和一隻海豹交朋友,然後回家的故事”,對故事進行續寫。
3.2.2 RM-comparison data
在RM階段,針對給定問題,由SFT微調得到的模型先産生對原問題的不同答案,由标注工對答案的正确性進行排序(comparison data),并選擇更傾向于模型輸出的哪一個答案,如下:
Q:“解釋什麼是資料結構?”
A. 資料結構是計算機的一門專業課,可用特殊的結構對資料進行存儲,為高效的算法提供條件
B. 資料結構涉及數學知識
C. 資料結構屬于生物學領域
D. 資料結構屬于材料學領域
标注結果:A>B>C=D
以上結果的排序依據,遵從從有幫助性、真實性、無害性三個評估角度出發,其中對絕大多數任務來說,無害性、真實性的權重會遠高于有幫助性(訓練時則有幫助性權重更高)。但也有特殊情況,如:
- 某一個答案相較于其它提供的幫助非常明顯;
- 該輸出僅有些許不真實/有害;
- prompt不屬于高風險領域(貸款申請、治療、醫療、法律咨詢等),那麼将提高“有幫助性”所占的權重。如果出現幫助性相同,但不真實/有害在不同的地方,那麼将從使用者角度判斷哪種可能對使用者造成更大的損失,進而将它的排序結果置後。
此外,我們還希望模型具備“ 當輸入是一些有害的言論時,希望輸出是無害的 ” 的能力。該能力的評價标準将從無害性和連續性出發,這裡的連續性指的是輸入和輸出在邏輯上可以構成一個文本,而不會讀起來明顯像兩個文本的情況。我們将從輸出的有害度,輸入輸出相對有害度,輸入輸出文本連續性上進行打分,進而依據打分結果獲得排序結果。
标記員的在第二個階段RM标注工作在如下圖所示的界面完成。
在第一張圖中,标注員首先會給出1-7範圍内的得分,得分更高的回答品質也更高,并且基于真實性,無害性,有幫助性,給出中繼資料的标簽。而第二張圖指的是在上一張圖的工作完成以後,對模型的所有輸出進行排序。
3.3 資料集大小
在InstructGPT上,雇傭了40人進行标注及API中獲得的。
訓練集上,SFT标注了13k條資料(API+人工),RM标注了33k(API+人工),PPO标注了31k(API)。
驗證集上,SFT任務有1653條,RM有18k條,PPO中有16k條。
4 模型實作
在資料集采集及标注完全後,需要分别訓練出兩個不同的模型,即SFT和RM。
在SFT階段,使用采集的問答對資料,對GPT進行有監督微調。
在RM階段,使用對比資料集,訓練RM獎勵模型。
RM模型是将SFT去掉softmax層,改成輸出為1的線性層,進而在以問答為輸入的情況下,輸出得到獎勵值。
在訓練過程中,為了避免過拟合現象的出現,采用成對展示輸出結果的方式,然後使用者從中選擇更好的結果輸出。
RM所定義的損失函數會最大化兩者之間的內插補點。RM損失函數:x代表prompt,yw代表的是品質較高的回答,yl代表品質較低的,r為獎勵模型的輸入結果。每輪對prompt的所有回答進行兩兩比較,這樣設計損失函數使得yw(品質較高回答)的得分盡可能高,最大化兩個回答之間的內插補點。
在最後PPO階段,是利用第二步得到的獎勵模型,指導SFT訓練,用PPO算法微調SFT。針對給定的問題,由SFT生成回答。問題-回答作為輸入,用RM模型得到獎勵值,用獎勵值使用PPO更新SFT,為一次疊代。由于SFT每輪參數都會發生變化,導緻強化學習的環境也改變,是以在損失函數中加入KL散度。
InstructGPT