LLM学习笔记5——InstructGPT
系列文章目录
参考文献
参考文献
参考文献
参考视频
文章目录
- 系列文章目录
- 前言
- 目前大模型不同的技术流派与框架路线:
- 1. BERT:Encoder-only架构
- 1) 架构特点
- 2) 训练目标
- 3) 应用场景
- 2. GPT:Decoder-only架构
- 1) 架构特点
- 2) 训练目标
- 3) 应用场景
- 3. GLM:Prefix Decoder-only架构(类encoder-decoder)
- 1) 架构特点
- 2) 训练目标
- 3) 关键技术
- 4) 应用场景
- 一、InstructGPT
- 1、简介
- 2、人类反馈强化学习(RLHF)
- 1. 监督学习微调 (Supervised Fine-Tuning - SFT)
- 2. 训练奖励模型 (Training a Reward Model - RM)
- 3. 强化学习优化 (Optimizing with Proximal Policy Optimization - PPO)
- 4. 流程核心逻辑
- 3、相关技术
- 1. 数据标注
- 1) Prompt的定义
- 2) Prompt的作用
- 3) Prompt的来源和类型
- Prompt的结构
- 2. STF(Supervised fine-tuning)模型
- 1) 无监督预训练
- 2) 有监督微调
- 3. RM(Reward modeling)模型
- 4. RL(Reinforcement learning)模型
- 1)人类偏好奖励项
- 2)KL 散度惩罚项
- 3)预训练语言模型损失项
- 4、效果
- 5、优缺点
- 1. 优点
- 2. 局限
- 未完待续。。。
前言
目前大模型不同的技术流派与框架路线:
1. BERT:Encoder-only架构
1) 架构特点
BERT完全基于Transformer的Encoder层,核心是双向自注意力机制,能同时捕捉上下文信息。
2) 训练目标
Masked Language Model (MLM):随机遮蔽15%的Token,结合上下文预测被遮蔽的词(80%替换为[MASK],10%随机替换,10%保留原词)。
Next Sentence Prediction (NSP):判断两个句子是否连续。
3) 应用场景
适用于自然语言理解(NLU)任务,如文本分类、实体识别等。
2. GPT:Decoder-only架构
1) 架构特点
GPT系列(如GPT-3)仅使用Transformer的Decoder层,采用单向自注意力机制(仅左侧上下文可见),适合生成任务。
2) 训练目标
自回归语言建模,基于上文预测下一个Token,生成连贯文本。
3) 应用场景
文本生成、对话系统等无条件生成任务。
3. GLM:Prefix Decoder-only架构(类encoder-decoder)
1) 架构特点
GLM既非Encoder-Decoder,也非纯Decoder,而是自回归空白填充(Autoregressive Blank Infilling)的变体:
前缀部分(Part A):使用双向注意力处理未被遮蔽的文本(类似Encoder)。
生成部分(Part B):使用单向注意力按顺序预测被遮蔽的Span(类似Decoder)。
2) 训练目标
空白填充任务:随机遮蔽连续Span,按打乱顺序自回归生成。
多目标扩展:增加句子级/文档级遮蔽,适应不同生成任务。
3) 关键技术
二维位置编码:分别表示Span间位置和Span内位置。
注意力掩码控制:Part A与Part B间存在受限的注意力交互。
4) 应用场景
同时支持NLU(如分类)、条件生成(如翻译)、无条件生成(如故事创作)
一、InstructGPT
1、简介
传统的语言模型往往依赖于“最大似然训练”,学会如何生成符合语法的文本,虽能处理多种自然语言任务,但常出现与用户意图不符的行为,如编造事实、产生有害或无帮助的输出,这是因为其训练目标与“遵循用户指令、有益且安全”的目标不一致。如何通过训练使语言模型与用户意图一致,具体包括遵循指令、保持真实、避免有害输出等。
1 . GPT-1 (2018): GPT-1 是生成式预训练 Transformer 系列中的第一个,向前迈出了一大步。经过大量互联网文本的训练,它可以生成有意义且与上下文相关的句子。但是,在理解复杂的指令或在较长的文本中保持故事的直白方面,它仍然有点新手。
2 . GPT-2 (2019): GPT-2 就像认真锻炼后的 GPT-1 一样。它是在更大的数据集上进行训练的,并且具有更大的模型大小,这意味着它可以生成更加连贯和细致的文本。它可以写论文、回答问题,甚至涉足语言翻译。但是,就像它的前身一样,它仍然很难理解复杂的指令并在很长的文本中保持故事的直白。
3 . GPT-3 (2020): GPT-3 是该家族的超级明星。它拥有 1750 亿个参数,能够生成令人印象深刻的类似人类的文本。它可以写论文、回答复杂的问题、翻译语言,甚至可以编写代码。但即使是这位超级巨星也有其弱点。它有时可能会使用有毒语言生成不正确的响应或潜在有害的输出,并且它并不总是适当地处理敏感主题。
4 . InstructGPT (2023):InstructGPT 继承了 GPT-3 的功能,并将其提升了一个档次。它通过监督学习进行训练,以捕获人类意图并遵循文本提示中的指令,使其成为适用于广泛应用的强大工具。但就像它的老兄弟一样,它并不完美,有时仍然会产生不正确或无意义的响应,与人类的意图或期望的行为不符。
从本质上讲,Instruct GPT 的运行原理与其他 GPT 语言模型相同,接受大量文本数据的训练,并使用这种训练根据收到的输入生成文本。然而,InstructGPT 模型的与众不同之处在于它们能够遵循文本提示中给出的指令。与之前的GPT模型相比,这是一个重大进步,之前的模型主要专注于预测句子中的下一个单词。
OpenAI 训练了三种模型尺寸(13 亿、60 亿和 1750 亿参数),所有InstructGPT模型都使用 GPT-3 架构。 即使是最小的13 亿参数的 InstructGPT 模型的输出都比 1750 亿参数的 GPT-3 更受欢迎。这些模型具有相同的架构,唯一的区别是 InstructGPT 在 OpenAI 的人工数据上进行了微调。即使向 GPT-3 添加一些提示以使其更好地遵循指令,这个结果仍然成立。 OpenAI 的 1750 亿参数 InstructGPT 的输出在 85 ± 3 % 85±3%85±3% 的时间/机会/次数里比 1750 亿参数 GPT-3 的输出更受欢迎,并且在 71 ± 4 % 71±4%71±4% 的时间/机会/次数里比 添加小样本提示 的 1750 亿参数 GPT-3 更受欢迎。根据标注员的评价,InstructGPT 模型也生成了更合适的输出,并且更可靠地遵循指令中的明确约束。
相比GPT123模型,InstructGPT 使用人类反馈强化学习 (RLHF) 进行训练,该方法涉及根据人类评估者的反馈微调模型的迭代过程。这使得模型能够随着时间的推移而改进,学习生成更好的响应并更准确地遵循指令。InstructGPT 的输出也能更好地理解人类意图,并且不太容易出现有毒语言,即使会犯一些简单的错误,但InstructGPT的思路表明,利用人类反馈强化学习进行微调是使语言模型与人类意图保持一致的一个很有希望的方向。
InstructGPT论文
2、人类反馈强化学习(RLHF)
InstructGPT的核心思路是人类反馈强化学习(RLHF)。
1. 监督学习微调 (Supervised Fine-Tuning - SFT)
采样提示:来自提示库中的问题或指令,可能采自网络或者用户提出来的数据。
人类示范:标注员 (Labeler) 根据提示,手动撰写一个高质量的、符合人类期望的答案。
训练方式:将收集到的提示+答案配对成一组完整的数据作为训练样本。使用标准的监督学习方法微调GPT3模型。使得模型学会模仿人类标注员的回答。
输出:得到监督微调模型 (SFT Model)。该模型初步掌握了所需任务。
目的:教会基础模型执行新任务的基本范式。
缺点:虽然使用SFT训练的模型也可以使用,但是无法大规模推广,因为雇佣标注员编写数据非常贵且数据不全面。
2. 训练奖励模型 (Training a Reward Model - RM)
采样提示:同样是来自提示库中的问题或指令。
生成多个输出:根据上一步得到了SFT模型,让这个SFT模型或更早期模型为同一个提示生成多个(4-9个)不同答案。
人类排序:标注员 (Labeler)根据提示和模型回答的多个答案,根据人类期望和质量从优到劣进行排序。
训练方式:将收集到的提示+多个模型输出排序配对成一组完整的数据作为训练样本。训练一个奖励模型 (RM)。该模型的输入是“(提示, 模型输出)”,其目标是预测人类标注员对模型输出的打分,也就是预测模型排序。让模型理解对于同一提示,人类排序高的输出应比排序低的输出获得更高的预测分数(奖励值或者说分值)。
输出:得到奖励模型 (RM)。它能自动为任何“(提示, 模型输出)”对打出一个反映其相对质量的分数。
目的:训练一个能自动化评估模型输出质量的“打分器”,代替人工判断好坏和人工编写数据。因为人工编写数据要比人工排序更复杂。
3. 强化学习优化 (Optimizing with Proximal Policy Optimization - PPO)
采样新提示:从提示库中选择一个未在之前步骤中出现过的新提示。
策略模型生成输出:当前要优化的策略模型 (Policy Model, 通常用SFT模型初始化) 为这个提示生成一个答案。
奖励模型给出评分:将“(提示, 策略模型生成的输出)”输入到训练好的奖励模型 (RM)中,由RM给出一个奖励分数。
训练方式:使用强化学习算法(这里特指PPO,近端策略优化)训练策略模型。
策略模型的目标:生成能最大化从RM获得的奖励分数的答案。
PPO的关键作用:在优化过程中对模型的更新幅度进行约束,防止模型通过“欺骗RM”或偏离语言本身太远来获得高分(例如生成无意义但获高分的内容,或忘记基本语言能力)。会加入一个微小的KL散度惩罚(KL Divergence Penalty),确保优化后的策略模型输出不会离原始的SFT模型太远,保持生成结果的自然性和多样性。
输出:得到优化后的策略模型 (PPO Model)。它生成答案的质量(根据RM的判断)显著优于初始的SFT模型。
目的:利用奖励模型RM的自动化反馈,让模型(策略)学习生成得分更高(即质量更好)的答案
4. 流程核心逻辑
Step 1 (SFT) 打基础:让模型初步学习任务“该怎么做”。
Step 2 (RM) 定义“好”:将人类对质量的主观排序偏好转化为可量化的自动化评分标准(奖励函数)。
Step 3 (PPO) 持续优化:利用Step 2定义的自动化标准(RM),通过强化学习引导模型持续自我改进,不断生成更好的输出以获取更高奖励。
循环迭代:可将强化学习优化的模型(PPO模型)用于训练奖励模型,生成更好的答案供人类排序,训练更强大的RM;再用更强大的RM模型用于强化学习优化策略模型,形成正向循环。
如何标注prompt数据,如何标注排序数据、如何微调SFT模型、如何训练RM模型、如何训练强化模型
3、相关技术
1. 数据标注
1) Prompt的定义
Prompt 是通过自然语言向 AI 模型传达指令的方式,可以是一个问题、一段描述、一个任务要求,或者其他任何形式的输入。这些输入帮助 AI 理解并执行特定的任务。换句话说,Prompt 就像是人类给 AI 模型提供的任务说明书。
2) Prompt的作用
引导性:有效的提示词能够引导模型朝着用户期望的方向生成内容。
灵活性:用户可以根据需求调整提示词,以适应不同的场景和任务。
效率:合理的提示词设计可以显著提高模型的响应速度和准确性。
3) Prompt的来源和类型
初始阶段:标注员撰写各种问题与指令,虽然覆盖面不全,也可能与用户画像不一致,训练一个初始模型用于内测使用。
可持续阶段:初始模型在内测阶段会收集到用户的提问数据,使用用户数据制作prompt数据,提升模型质量,重复循环这个步骤。
在对InstructGPT进行人类反馈强化学习的过程中,针对不同阶段划分和使用不同数据集,也就是SFT模型使用了13K数据,RM模型使用了33K数据,PPO模型使用了31K数据。
图片左边是数据类型,右边是数据举例,可以看出数据面还是比较广泛的,以及prompt是怎么规范的。
使用的数据类型分别是生成文本、开放问答、思考idea、聊天、重写内容、总结内容等。
举例的数据分别是思考重获热情的方法、写一个关于熊的短篇故事、重写百老汇戏剧的摘要等。
Prompt的结构
要素:
指令 + 输入数据 + 背景 + 输出要求
分隔符:
逗号,顿号、:适用于分隔不同的要素,适合简单的提示词。
分号;句号。:适用于较复杂的提示词,可以清晰地分隔不同的指令或要求。
引号" "括号( ):适用于文本提供,可以清晰地分隔指令和文本。
换行符:适用于需要分段的提示词中,换行符可以帮助模型更好地理解结构。
2. STF(Supervised fine-tuning)模型
使用13K数据对GPT-3模型进行了有监督微调。在实验中训练了 16 个 epoch ,使用余弦学习率衰减,残差正则化率为 0.2 。实验中根据模型在验证集上输出内容输入 RM 获得的分数进行最终的 SFT 模型选择。
由于13K数据对比GPT-3的原始数据量而言实在太小,SFT模型对 1 个 epoch 后的验证损失具有过拟合现象,然而随后发现,尽管存在过拟合,但训练更多的 epoch 有助于 RM 获得的分数提升和人类偏好评级。而且STF模型也不是直接使用的,而是用于初始化和训练之后的模型,所以可以接受过拟合。
在GPT-1论文中有提及如何进行无监督训练与有监督微调。
GPT1论文:Improving Language Understanding by Generative Pre-Training
1) 无监督预训练
第一阶段的预训练的训练方法可以理解为无监督方法,毕竟还是使用无标注数据为主。
在一段无标注的tokens文本数据U={u1,...,un}U = \lbrace{u_1 , . . . , u_n}\rbraceU={u1,...,un}中,UUU表示的是这段文本tokens,uiu_iui表示的是这段文本中的第i个词token,然后使用UUU来计算标准语言建模最大化似然目标函数。
在概率论和统计学中,似然函数是固定数据并视参数为变量的函数,而概率函数则是固定参数并视数据为变量的函数。
L1(U)=∑ilogP(ui∣ui−k,...,ui−1;θ)L_1(U)= \sum_{i}log_{}P(u_i∣u_{i−k} ,...,u_{i−1};θ)L1(U)=i∑logP(ui∣ui−k,...,ui−1;θ)
对于想要预测uiu_iui这个词,就需要获取uiu_iui的前一个词ui−1u_{i-1}ui−1到uiu_iui的前K个词ui−ku_{i-k}ui−k这一共K个连续词。
给定K个连续词,给定基于参数θ的语言模型L1(U)L_1(U)L1(U),预测K个词下一个词uiu_iui的概率。对所有不同的词位置i进行求和,即对整个句子中的每个位置都进行相同的操作,这样可以计算整个句子的概率。
其中 超参数k 是上下文窗口的大小限制,也就是输入序列的长度。
那么这个使用参数为 θ 的神经网络就是transformer的decoder解码器,transformer由Encoder-Decoder编解码器框架组成,其中编码器能够获取到输入文本数据U={u1,...,un}U = \lbrace{u_1 , . . . , u_n}\rbraceU={u1,...,un}中所有的元素,而解码器因为掩码的原因对第i个词抽取特征时,只会获取到i元素和i之前的元素,i之后的元素会被掩码锁住。所以使用解码器计算L1(U)L_1(U)L1(U)时预测词uiu_iui时就不会获取到uiu_{i}ui之后的数据。
h0=UWe+Wph_0 =UW_e +W_ph0=UWe+Wp
hl=transformerblock(hl−1)∀i∈[1,n]h_l =transformer_{ } block(h_{l−1})\forall{i}∈[1,n]hl=transformerblock(hl−1)∀i∈[1,n]
P(u)=softmax(hnWeT)P(u)=softmax(h_n W_e^T)P(u)=softmax(hnWeT)
其中 U=(uk,...,u1)U = ( u_{k} , . . . , u_{1} )U=(uk,...,u1)是表示K个词,也就是输入序列的长度,UWeUW_eUWe是上下文对应的embedding词嵌入投影将 token 序列转化为语义向量,WpW_pWp是词位置嵌入矩阵为每个位置分配向量,每个 token 的最终输入向量 = 语义向量 + 位置向量,两者相加得到h0h_0h0也就是初始输入。
通过上一次的输出hl−1h_{l-1}hl−1作为Transformer解码器的当前输入,得到当前输出hlh_lhl,然后重复n次,n就是transformer的层数(12层,维度768)。
重复n次后得到最后的transformer输出,最终通过softmax函数和输出词嵌入矩阵的转置WeTW_e^TWeT得到对下一个词的概率分布P(u)。
对于所有的U,得到的所有的P的对数和就是我们需要优化的目标,即上面说的L1L_1L1
2) 有监督微调
在预训练中,使用的数据是无标注的,而微调工作中,使用的数据是有标注的。
当预训练语言模型训练完成后,将其迁移到具体的NLP任务中,假设将其迁移到一个文本分类任务中,一段文本数据为CCC,在序列中有x1,..,xmx^1,..,x^mx1,..,xm的m个元素,而该序列的标注是yyy。将x1,..,xmx^1,..,x^mx1,..,xm的m个元素输入通过预先训练的模型来获得最后的transformer输出hlmh^m_lhlm,然后softmax计算预测为y的概率:
P(y∣x1,..,xm)=softmax(hlmWy)P(y|x^1,..,x^m)=softmax(h^m_l W_y)P(y∣x1,..,xm)=softmax(hlmWy)
那么预训练的时候使用的语言建模目标函数是L1(U)L_1(U)L1(U),在文本分类微调工作相应的目标函数就需要修改为L2(C)L_2(C)L2(C),根据L1(U)L_1(U)L1(U)和L2(C)L_2(C)L2(C)的思路,设计出监督微调的目标函数LSFTL_{SFT}LSFT。
L1(U)=∑ilogP(ui∣ui−k,...,ui−1;θ)L_1(U)= \sum_{i}log_{}P(u_i∣u_{i−k} ,...,u_{i−1};θ)L1(U)=i∑logP(ui∣ui−k,...,ui−1;θ)
L2(C)=∑x,ylogP(y∣x1,..,xm)L_2(C) = \sum_{x,y}log_{}P(y∣x^1,..,x^m)L2(C)=x,y∑logP(y∣x1,..,xm)
LSFT=∑logP(yi∣x,y<i;θ)L_{SFT} = \sum log_{}P(y_i∣x , y<i ; θ)LSFT=∑logP(yi∣x,y<i;θ)
yiy_iyi:输出序列中第 i 个位置的真实 token(标签)。
y<iy<iy<i:第 i 个位置之前的所有已生成 token(即上文)。
xxx:输入内容(如用户的问题、上下文等)。
θθθ:模型参数。
核心含义:模型基于输入xxx和已生成的上文y<iy<iy<i,预测第 i 个 token 为yiy_iyi的概率的对数值。
3. RM(Reward modeling)模型
Reward Modeling(RM)在InstructGPT中扮演了人类偏好的量化代理角色,其核心逻辑是通过学习人类对模型输出的排序偏好,生成可自动评估文本质量的标量奖励信号,从而驱动强化学习优化语言模型。监督微调后的SFT模型虽能初步遵循指令,但存在输出不稳定、忽略隐含约束提示词等问题,需更细粒度的优化信号。
训练一个模型,将得到的SFT模型中最后的语言建模头LM Head移除,在这个位置添加一个标量线性输出层进行投影,将输出文本中的所有词投影到一个值上,也就是输出为[0,1]的线性层,这是因为最终 RM 模型的输出就是一个标量数值,代表整个响应序列的质量评分。
首先使用使用SFT模型对同一提示(Prompt),生成4或9个候选输出(Response)。然后改造一个SFT模型(GPT-3 6B),移除语言建模头,替换为标量输出层,实现一个RM模型的基础结构。最后把提示与候选输出拼接起来作为RM模型输入 [Prompt; Response],计算得到输出标量分值r。
loss(θ)=−1(K2)E(x,yw,yl)∼D[log(σ(rθ(x,yw)−rθ(x,yl)))]\operatorname{loss}(\theta)=-\frac{1}{\binom{K}{2}} E_{\left(x, y_{w}, y_{l}\right) \sim D}\left[\log \left(\sigma\left(r_{\theta}\left(x, y_{w}\right)-r_{\theta}\left(x, y_{l}\right)\right)\right)\right]loss(θ)=−(2K)1E(x,yw,yl)∼D[log(σ(rθ(x,yw)−rθ(x,yl)))]
σ(⋅)\sigma(⋅)σ(⋅):表示为sigmoid 函数,用于将差值映射到 [0, 1] 区间,用来表示某一结果被标注员认为更优的概率。
ywy_wyw和yly_lyl:表示为SFT 模型对于给定提示x输出的两种不同内容,代表人类更偏好和次偏好的响应。
rθ(x,y)r_{\theta}(x, y)rθ(x,y):表示为奖励模型对于给定提示x和生成的回应y所输出的标量数值奖励分数。
EEE: 表示数学期望(Expectation),是概率论与统计学中的核心概念,是对随机变量的加权平均值
KKK:每个提示生成的候选响应数量。
DDD:表示为人类标注员比较的响应数据集。
1(K2)\frac{1}{\binom{K}{2}}(2K)1:表示为组合数之一,从 K 个响应中两两比较的组合对数,比如 K=4 时,(42){\binom{4}{2}}(24)=6,也就是1/6。
对于同一个提示xxx,生成K个候选输出yky_kyk,把提示与候选输出拼接起来并两两组对,得到数据对集D{[(x,y1),(x,y2)],[(x,y1),(x,y3)],...,[(x,yk−1),(x,yk)]}\{[(x, y_1),(x, y_2)],[(x, y_1),(x, y_3)],...,[(x, y_{k-1}),(x, y_k)]\}{[(x,y1),(x,y2)],[(x,y1),(x,y3)],...,[(x,yk−1),(x,yk)]},将每一对分别作为RM模型输入,得到标量数值奖励分数rθ(x,y)r_{\theta}\left(x, y\right)rθ(x,y)。然后两两计算更偏好和次偏好的奖励分差(rθ(x,yw)−rθ(x,yl))(r_{\theta}\left(x, y_{w}\right)-r_{\theta}\left(x, y_{l}\right))(rθ(x,yw)−rθ(x,yl))(默认ywy_wyw为更偏好,yly_lyl为次偏好)。使用σ(⋅)\sigma(⋅)σ(⋅)将分差转化为概率值,表达ywy_wyw与yly_lyl的偏好差距。再使用log(σ(⋅))\log(\sigma(⋅))log(σ(⋅))最大化该对数概率。
当K=4时,D数据集中有6对数据,所以针对提示xxx计算出来的损失会有6个,在实际训练中,可能无法遍历所有可能样本(x·K),因此通过批量采样近似期望1(K2)E(x,yw,yl)∼D[⋅]≈1(K2)∑i=1(K2)\frac{1}{\binom{K}{2}} E_{\left(x, y_{w}, y_{l}\right) \sim D}[⋅]≈ \frac{1}{\binom{K}{2}}∑_{i=1}^{\binom{K}{2}}(2K)1E(x,yw,yl)∼D[⋅]≈(2K)1∑i=1(2K)来平均损失函数值,从而消除 K 的影响,使损失函数值不受候选响应数量的干扰。
当奖励分差值为正且值越大,那么使用sigma函数计算的概率值就越大,取得的对数log也是越大,那么在负号的作用下,整个损失函数越来越小,最终计算得到梯度下降的方向。
对于SFT模型而言对同一个prompt提示生成的多个答案可能会比较类似,所以对于标注员而言排序4个答案和排序9个答案花费的时间不会多太多,但是对于RM模型而言数据对集D却从6个数据对提升到36个数据对,实际数据量差距6倍。所以当K=9时,相对K=4额外花费的排序时间会非常划算。在计算RM模型输出rθ(x,y)r_{\theta}(x, y)rθ(x,y)时,只需要计算K次,只需要多计算5次RM模型,但在计算得到的奖励分差却多上6倍数据量,所以在运算量方面同样非常划算。
4. RL(Reinforcement learning)模型
InstructGPT中的强化学习(RL)模型是其实现人类意图对齐的核心环节,通过将奖励模型(RM)的输出作为优化信号,驱动语言模型生成更符合人类偏好的响应。采用PPO(Proximal Policy Optimization) 算法作为优化策略,PPO 是一种策略梯度算法,常用于强化学习任务中,通过限制策略更新的步长来提高训练的稳定性。
在强化学习中,模型叫做策略器,比如SFT模型又叫SFT策略,RL模型又叫RL策略
objective(ϕ)=E(x,y)∼DπϕRL[rθ(x,y)−βlog(πϕRL(y∣x)πSFT(y∣x))]+γEx∼Dpretrain[logπϕRL(x)]\text{objective}(\phi) = \mathop{E}_{(x,y) \sim D_{\pi_{\phi}^{\mathrm{RL}}}} \left[ r_\theta(x,y) - \beta \log( \frac{\pi_{\phi}^{\mathrm{RL}}(y|x)}{\pi^{\mathrm{SFT}}(y|x)} )\right] + \gamma \mathop{E}_{x \sim D_{\text{pretrain}}} \left[ \log \pi_{\phi}^{\mathrm{RL}}(x) \right]objective(ϕ)=E(x,y)∼DπϕRL[rθ(x,y)−βlog(πSFT(y∣x)πϕRL(y∣x))]+γEx∼Dpretrain[logπϕRL(x)]
rθ(x,y)r_{\theta}(x, y)rθ(x,y):表示为奖励模型对于给定提示x和生成的回应y所输出的标量数值奖励分数。
πϕRL(y∣x)\pi_{\phi}^{\mathrm{RL}}(y|x)πϕRL(y∣x):表示为在强化学习中学习到的RL策略,输出的是y的概率分布。
πSFT(y∣x)\pi^{\mathrm{SFT}}(y|x)πSFT(y∣x):表示为通过监督学习微调得到的SFT策略,输出的是y的概率分布。
ϕ\phiϕ:表示为强化学习策略πϕRL\pi_{\phi}^{\mathrm{RL}}πϕRL中可更新学习的参数。
β\betaβ:表示为 KL 惩罚的权重系数,控制 RL 策略和 SFT 策略的偏离程度。
γ\gammaγ:表示为预训练损失项的权重,控制预训练数据与强化学习的结合程度。
E(x,y)∼DπϕRL\mathop{E}_{(x,y) \sim D_{\pi_{\phi}^{\mathrm{RL}}}}E(x,y)∼DπϕRL:表示为用户提示和 RL 策略生成的响应。
Ex∼Dpretrain\mathop{E}_{x \sim D_{\text{pretrain}}}Ex∼Dpretrain:表示为原始预训练语料(如维基百科、网页文本)。
1)人类偏好奖励项
E(x,y)∼DπϕRL[rθ(x,y)]\mathop{E}_{(x,y)\sim D_{\pi_{\phi}^{\mathrm{RL}}}}[ r_\theta(x,y)]E(x,y)∼DπϕRL[rθ(x,y)]
从数据集中拿一个Prompt提示x,提供当前RL策略πϕRL\pi_{\phi}^{\mathrm{RL}}πϕRL生成输出Response响应y,然后将提示与输出拼接起来作为上面训练好的RM模型输入 [Prompt; Response],最终输出奖励模型对提示 x 和生成响应 y 的标量评分rθ(x,y)r_{\theta}(x, y)rθ(x,y),并期望该评分足够高。随着ϕ\phiϕ超参数每次的更新学习,RL策略πϕRL\pi_{\phi}^{\mathrm{RL}}πϕRL就会发生变化,所以每一次传入同一个Prompt提示x,生成输出Response响应y都会很不一样,最终输出反馈的标量评分rθ(x,y)r_{\theta}(x, y)rθ(x,y)也会发生变化。rθr_{\theta}rθ就是模仿一个真人在时不时提醒你学习的方向是否正确,这是一种有实时反馈的在线学习。
2)KL 散度惩罚项
−βE[log(πϕRL(y∣x)πSFT(y∣x))]- \beta\mathop{E}[\log( \frac{\pi_{\phi}^{\mathrm{RL}}(y|x)}{\pi^{\mathrm{SFT}}(y|x)})]−βE[log(πSFT(y∣x)πϕRL(y∣x))]
πSFT\pi^{\mathrm{SFT}}πSFT是上面监督微调得到的SFT模型,πϕRL\pi_{\phi}^{\mathrm{RL}}πϕRL是一个需要更新学习的模型,ϕ\phiϕ是模型中需要更新学习的超参数,这个RL模型的初始来源就是SFT模型。log(πϕRL(y∣x)πSFT(y∣x))\log( \frac{\pi_{\phi}^{\mathrm{RL}}(y|x)}{\pi^{\mathrm{SFT}}(y|x)})log(πSFT(y∣x)πϕRL(y∣x))是关于两个模型逐 token 计算的y值的概率分布,并使用KL 散度评估两个输出的相似度,用于衡量当前 RL 策略与 SFT 模型的生成差异。在刚开始这两个模型的差异会非常小的,但是随着ϕ\phiϕ超参数每次的更新学习,RL策略πϕRL\pi_{\phi}^{\mathrm{RL}}πϕRL同步发生变化,两个模型之间的差距会逐渐拉大,特别是RM模型只是模仿一个真人进行奖励,但是这种奖励是机械的,容易导致RL策略πϕRL\pi_{\phi}^{\mathrm{RL}}πϕRL发生偏离,生成一些毫无意义的内容但却能在RM模型获取高分奖励的输出。所以需要约束 RL 策略与初始SFT模型的偏离程度,避免 RL 模型过度优化奖励分数而牺牲语言流畅性和合理性,基于用户提示和 RL 策略生成的响应上进行期望,但是不要和原始的SFT模型差距太大。使用系数 β(通常取 0.1–0.5)控制惩罚强度,当值过大会限制优化空间,当值过小则导致模型偏离合理范围,生成乱码或无意义内容。
3)预训练语言模型损失项
γEx∼Dpretrain[logπϕRL(x)]\gamma \mathop{E}_{x \sim D_{\text{pretrain}}}[ \log \pi_{\phi}^{\mathrm{RL}}(x)]γEx∼Dpretrain[logπϕRL(x)]
平衡系数γ\gammaγ调节预训练损失在总目标中的权重。若 γ=0,模型可能丧失基础语言能力(称为“对齐税”);若 γ 过大,则削弱人类偏好优化效果。取值范围通常为 0.01∼0.1,如 InstructGPT 中 γ=0.1保留模型在通用任务上的语言能力。如果 γ=0 成为PPO,否则称为PPO-ptx。
期望运算符Ex∼Dpretrain\mathop{E}_{x \sim D_{\text{pretrain}}}Ex∼Dpretrain中,DpretrainD_{\text{pretrain}}Dpretrain指原始预训练数据分布(如维基百科、网页文本等未标注数据),从预训练语料抽取批量样本x,计算其损失均值。
logπϕRL(x)=∑t=1TlogPϕ(xt∣x<t)\log \pi_{\phi}^{\mathrm{RL}}(x) = \sum_{t=1}^Tlog_{}P_{\phi}(x_t∣x_{<t})logπϕRL(x)=t=1∑TlogPϕ(xt∣x<t)
从预训练语料抽取批量样本x,传给强化学习优化后的RL策略模型中,在无监督Pϕ(xt∣x<t)P_{\phi}(x_t∣x_{<t})Pϕ(xt∣x<t)中给定t-1个连续词去预测第t个词,使用log计算模型对序列 x 中每个 token 的自回归生成概率之和,计算出整个句子的概率。
RL模型通过奖励信号rθ(x,y)r_{\theta}(x, y)rθ(x,y)优化人类偏好(如帮助性、真实性),但过度优化会导致语言能力退化,模型为讨好RM奖励模型生成非常规文本和不通顺语句。还会导致灾难性遗忘,丢失预训练中学到的语法、常识等通用知识。
所以在强化学习过程中,除了要推动模型生成符合人类偏好的响应,还要强制模型保持对预训练数据的生成能力,避免偏离原始语言分布。在这个过程中,KL散度约束当前响应的 token 级概率分布不偏离SFT模型,而预训练损失约束模型在整个语料上的生成能力不偏离预训练基座,使得RL模型能够在预训练模型、SFT模型和RM模型之间都得到学习与维持参数平衡。
4、效果
InstructGPT 的偏好结果以胜率的形式对标 175B SFT 模型。
在测试提示词数据集上,标注人员明显更喜欢 InstructGPT 输出,无论模型参数量大小都是如此。
GPT-3 < 少样本提示 GPT-3-prompted < SFT 模型 < RLHF 模型 = RLHF+预训练更新项模型。
在 PPO 期间添加预训练混合更新项,并没有导致标注人员偏好产生大的变化。
收益幅度:当直接比较时,175B InstructGPT 输出被偏好的频率为 85 ± 3 % 85 ± 3%85±3% ,而相较于少样本提示 GPT-3-prompted ,被偏好的频率为 71 ± 4 % 71 ± 4%71±4% 。
当在 API 上提交给 GPT-3 模型的提示词上进行评估时,模型的响应结果在大的参数体量上没有显著变化,同时 PPO-ptx 模型在较大的模型尺寸下表现稍差。
更具体的,还展示了标注人员在几个更具体的方面也较为偏好 InstructGPT 输出。具体来说,与 GPT-3 相比, InstructGPT 输出在 ”客户助理“ 的上下文中更加恰当,更频繁地遵循指令中定义的明确约束(例如 “在 2 段或更少的字数内写出你的答案” ),在完全不遵循正确指令的情况下也更少,并且在封闭域任务中编造事实(“幻觉”)的频率也更低。这些结果表明,InstructGPT 模型比 GPT-3 更可靠、更易于控制。
FLAN 和 T0 比默认的 GPT-3 表现得更好,与进入 “指令遵循” 模式的少样本 GPT-3 模型相比实力相近,且低于与经过指令微调的 SFT 模型和经过 RLHF 微调的模型。这表明这些数据集( FLAN 和 T0 )的多样性不够高,不能在 Openai API 提示词数据集中提高指标。175B InstructGPT 模型输出内容优于比 FLAN 模型的比率是 78 ± 4 % 78 ±4%78±4% ,比 T0 模型输出内容优质的概率是 79 ± 4 % 79 ± 4%79±4% 。
当被指示生成安全和尊重的输出(”尊重性提示“)时,根据 Perspective API 的评估, InstructGPT 模型生成的输出比 GPT-3 更不具有毒性。但这种优势在删除尊重性提示时消失。有趣的是,当被明确提示生成有毒输出时, InstructGPT 的输出比 GPT-3 的输出要毒性更强。
人工评估也证实了这些结果:在 ”尊重性提示“ 设置下, InstructGPT 的毒性低于 GPT-3 ,但在 ”无提示“ 设置下表现相似。Openai 的 SFT 基线模型是所有模型中毒性最低的,但同时也有最低的连续性(就是补全的内容太少了),因而在排名中最不受青睐。这可能表示该模型生成的响应很短或存在退化。
5、优缺点
1. 优点
价值观优化(3H目标):通过RLHF训练,InstructGPT在生成内容的有用性(Helpful)、真实性(Honest)和无害性(Harmless)上显著提升。人类评估显示,1.3B参数的InstructGPT输出质量优于175B参数的GPT-3,尽管模型规模小100倍。
有害输出减少:在被提示“尊重”的场景下,有害文本生成率比GPT-3降低约25%。
真实性提升:在TruthfulQA基准测试中,生成真实答案的频率是GPT-3的两倍,幻觉率(编造事实)从41%降至21%。
小模型实现高性能:通过RLHF微调,小规模模型(如1.3B)可超越未对齐的百倍规模模型,大幅降低部署成本。
标注成本可控:仅需数千级人工排序样本训练奖励模型(RM),无需海量精细标注。
多任务泛化性:在API用户提示的多样化任务(如生成、问答、头脑风暴)中表现稳定,尤其擅长遵循复杂指令。
代码能力突出:借助GPT-3的代码数据积累,在编程任务中生成质量显著优于通用模型。
2. 局限
通用能力下降:在部分NLP任务(如SQuAD问答、DROP推理)上性能弱于原始GPT-3,需通过混合预训练损失(γ项)缓解。
过度优化风险:RM倾向于奖励冗长输出,导致生成内容啰嗦;KL约束虽抑制偏离,但可能限制创新性表达。
残余有害输出:仍可能被诱导生成危险内容(如“AI毁灭人类计划”),尤其在指令含隐含恶意时。
标注偏见固化:依赖40名英美背景标注员,价值观覆盖狭窄,可能放大文化偏见。
上下文理解不足:对多轮复杂指令(如“用3句话总结且包含数字”)处理能力有限,易忽略部分约束。
奖励模型失真:RM仅评估最终输出,忽略推理过程合理性;对逻辑错误但流畅的文本可能给予高分。
多语言能力弱:训练数据96%为英文,其他语言生成质量不稳定。
动态适应性差:无法实时学习新知识或用户反馈,需全量重训。