ChatGPT背后的智能炼金术:如何用GPT-3强化学习打造对话超能力?🔥提问与评分的秘密武器?✨

学会提问 1年前 (2023) lida
49 0 0

文章主题:

666ChatGPT办公新姿势,助力做AI时代先行者!

用人的反馈引导大规模语言模型变得更有价值

InstructGPT论文精读

模型:有监督+增强学习

🌟🚀 文章改写大挑战!🌟🚀🔥 高端模型火力全开!🔥在我们精心构建的架构中,每个核心任务都配备了GPT-3这款尖端科技的引擎,它以强大的2k token context为后盾,为知识的深度探索提供了无尽可能。🔍💡 提示与响应,精准到每一个字节!💡特别值得一提的是,我们在数据处理环节进行了优化,确保prompt和response都精确在1k以内,既保证了信息的丰富性,又避免了超长带来的困扰。📝别忘了,相较于ChatGPT,我们的优势在于更精细的控制与更高的响应质量。🔥SEO友好,搜索引擎喜爱的语言,我们用专业守护你的每一次阅读体验。🌍让每个想法都跃动在2k的大舞台上,释放无限创意!🚀记得,这里没有作者的名字,也没有联系方式哦~ 😊

Step1:有监督学习(SFT),Supervised Fine-tuning:在GPT-3的基础上用人工标注的prompt-reponse进行finetune,几个有意思的细节a. 16epoch,基本是overfitting,但是效果却更好b. 用RM Score来做选点而非validation的metrics

2. Step2:强化学习

2.1 生成问题的强化学习建模

ChatGPT背后的智能炼金术:如何用GPT-3强化学习打造对话超能力?🔥提问与评分的秘密武器?✨

✨🚀通过分析图像中的文本信息,我们将其转化为一个🌟tokenizer的宇宙,每个字符都是一个潜在的选择,在这个无限序列中进行深度思考。您提供的问题就像启动了时间机器,每个决定都引领我们穿越字符的时空隧道,探索知识的奥秘。🤔然后,我们构建了一个动态决策模型,每个token选择都是对未来序列的一次关键投票,投票的结果塑造着问题的答案。🏆通过这样的方式,我们不仅保留了原始问题的精髓,还赋予了它强大的预测力量。🌍现在,让我们一起用智慧的光束照亮知识探索的道路吧!🌟

state:contextaction:reponse的token space上的tokenreward:生成的质量判别episode:一次完整的decode生成response的过程

🌟在RLHF过程中,我们利用人工标注的数据来训练奖励模型,从而将人类对结果质量的主观评估融入到生成模型的设计中。而这生成模型,正是策略(Policy)模型的核心所在。通过对Policy模型的持续学习和优化,实质上是在进行深度微调,以提升生成效果。🚀

2.2 奖励模型(Reward model)

基于SFT模型架构,我们提供6B参数量的任务服务(175B过大可能带来不稳定性,GPT-3的6B规模作为参考),专注于满足各类prompt的需求。每对响应生成的pairwise-loss是评估打分的关键指标,通过精确计算来确保输出质量。🚀

2.3 PPO模型及训练

🏆【RL深度解析】🌟PPO:Actor/Critic领域的革新者🔍Actor/Critic架构下的RL算法,PPO以其卓越的平衡力脱颖而出——它汲取了Policy Gradient的锐意进取,又巧妙地借用了Importance Sampling的智慧,让经验缓冲区的利用如虎添翼。就像DQN家族的能手,PPO在数据利用上独树一帜,是OpenAI钟爱的基准算法选择。但对于技术爱好者,想要深入了解其核心原理,原论文无疑是最佳探索路径。🚀#PPO #RL #ActorCritic #ImportanceSampling #ExperienceBuffer #OpenAI #深度学习基础

Policy(Actor)起点模型:Step1中的SFT模型Reward模型:2.2中的模型Value模型(Critic):初始化自Reward模型数据:经过实验发现,全部使用线上真实的Prompt数据+Reward模型(3.1W)会导致模型在人工评估中效果好,但是损失在开放的NLP任务测试集上的效果(作者称之为alignment tax),最后采用的是10%的预训练数据保留+PPO Training,这种混合的模型,作者称之为PPO-ptxPPO Training loss + pretrain loss + KL Pernalty(正则,防止RL overfit)pretraning样本:RL样本 = 8:1Loss及目标函数

ChatGPT背后的智能炼金术:如何用GPT-3强化学习打造对话超能力?🔥提问与评分的秘密武器?✨

魔鬼的细节:human feedback的数据构建

🌟人工标注虽规模有限,但精益求精!💡OpenAI团队匠心独运,每个细节都透露出务实精神。从数据质量到分布,再到不同阶段的标注策略,无不体现出他们对数据价值的深刻理解。🔥正如GPT-3的成功,与其精细化的数据训练和处理密不可分,这正是模型效果的真正推动力。相比于同级别参数的开源项目,OpenAI的数据处理更胜一筹,为卓越成果奠定了基础。🏆SEO优化词汇:人工标注规模虽小众,却精准无瑕;OpenAI务实精神,数据质量独占鳌头;GPT-3成效显著,精细训练功不可没;与社区开源相比,OpenAI数据优势明显。

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任务

ChatGPT背后的智能炼金术:如何用GPT-3强化学习打造对话超能力?🔥提问与评分的秘密武器?✨

针对给定的prompt、模型给出的多个结果,标注结果的好坏排序 — for Reward Model

ChatGPT背后的智能炼金术:如何用GPT-3强化学习打造对话超能力?🔥提问与评分的秘密武器?✨

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)

ChatGPT背后的智能炼金术:如何用GPT-3强化学习打造对话超能力?🔥提问与评分的秘密武器?✨

数据类型中包含了不少模糊的、不清晰意图的、敏感内容等。

ChatGPT背后的智能炼金术:如何用GPT-3强化学习打造对话超能力?🔥提问与评分的秘密武器?✨

评估和实验结论

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. 表现出很强的泛化能力,在没有见过的测试集上依然效果很好

ChatGPT背后的智能炼金术:如何用GPT-3强化学习打造对话超能力?🔥提问与评分的秘密武器?✨

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:如何人工标注产生对话语料?

ChatGPT背后的智能炼金术:如何用GPT-3强化学习打造对话超能力?🔥提问与评分的秘密武器?✨

两个标注人员分别作为用户以及AI进行对话,那么对话的起点以及场景从哪里来,从instructGPT的数据构造参考的话,可以有两种:

场景构造,然后开始自由发挥开头的prompt基于线上API请求中的抽样,后面的多轮对话过程按照人工标注的思路开展

值得注意的是应该构建不只一个需求的对话过程,包含一些插入、多个需求等复杂的场景情况。

而其中chatBOT的标注人员的回复策略以及user的回应的策略、采样的数据等,根据最终期望模型获得能力需要有精心的设计。其中回复的策略对照chatGPT的能力以及理想对话中的action strategy应该有几种

follow the instruction:按照用户的需求直接给满足的response,这个和instructGPT中类似clarify:对于模糊的需求进行澄清和询问。admit the mistakes:要求user侧应该能够指出response的错误,同时chatBOT侧的标注人员能够根据指出的错误进行回复和答案的修改challenge the premise:对于不符合逻辑的问题,chatBot侧的标注人员能够生成对不合理逻辑的挑战和解释的答案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

OpenAI官网:https://openai.com/instructGPT:https://arxiv.org/abs/2203.02155ChatGPT,https://openai.com/blog/chatgpt/

ChatGPT背后的智能炼金术:如何用GPT-3强化学习打造对话超能力?🔥提问与评分的秘密武器?✨

AI时代,掌握AI大模型第一手资讯!AI时代不落人后!

免费ChatGPT问答,办公、写作、生活好得力助手!

扫码右边公众号,驾驭AI生产力!

相关文章