LLM大模型:Process Reinforcement through Implicit Rewards:PRIME 强化学习模型分析,超过GPT-4o?
1、众所周知,可商用的成熟大模型训练分四个步骤:
- pre-train:大量未标记的语料做auto-regression,此步骤初步完成LLM权重的赋值。经过此阶段的LLM,类似人类小学生的水平,还无法有针对性的回答问题;
- supervised Fine-tuning:用 {instruction,input,output} 这种格式的训练样本对LLM做fine-tuning,目的: 让LLM学会聊天对话、回答问题,这一阶段类似人类中学生的水平
- 让LLM具备问答的能力,很多LLM带上了instruction或chat字样,就是这么微调后得到的
- 让LLM具备某些细分领域的知识,比如医疗、法律、财会、互联网等
- 这个阶段的缺陷也很明显:
- LLM的prompt仅限于训练样本的input,其response同样仅限于训练数据集中的output;一旦超出训练数据集的范围,LLM的response效果会大大折扣;并且SFT只提供正确答案,但正确答案可能不止1个,还有其他正确答案没提供
- SFT无法提供负反馈,举个例子:训练语料为 "I don't like cat",那么P(cat|I don't like)的概率较高,这会顺带让P(cat|I like)的概率也较高,这明显是不符合训练语料逻辑的,这也是产生hallucination的原因之一
- SFT不具备向后看的能力,举个例子:训练语料为 ”深圳是中国首都,这个是错误的“。 如果根据概率模型预测next token(主要是根据上文预测next token),那么P(首都|深圳是中国)的概率会很大,但这明显也不符合训练语料的逻辑;
总结:SFT的反馈颗粒度是token级别的,每次只会选择next token概率高的,这样做不代表整个text的逻辑就是正确的!
- reward modeling:让LLM对同一个prompt输出多个不同的response,然后人功能挨个对所有的response打分。可以根据这个人工打分作为loss微调LLM,让其回答更接近用户的偏好,此阶段类似大学生水平;训练样本格式:
{ "prompt": <输入文本>, "responses": [ {"response": <候选回答1>, "score": <分值1>}, {"response": <候选回答2>, "score": <分值2>}, ... ] }
这个步骤不能再指望着“被监督着学习”,而是要学会评估自己的学习情况,进行自我监督。需要注意的是,这个阶段输出的评分,并不是给最终的用户,而是在第四个阶段 —— reforcement learning —— 发挥重大作用。
- reforcement learning: 此阶段的训练目标又回归到与预训练和有监督微调阶段相同,进行语言建模,预测接下来要输出的内容。这个阶段非常“聪明”的整合了前面2、3阶段的成果,具体过程如下:
- 针对特定的输入文本,通过 SFT 模型获得多个输出文本。
- 基于 RM 模型对多个输出文本的质量进行打分,这个打分实际上已经符合人类的期望了,达到“见人说人话,见鬼说鬼话”的目的
- 基于这个打分,为多个输出的responce加入权重。这个weight其实会体现在每个输出 Token 中
- 将加权结果反向传播,对 SFT 模型参数进行调整,就是所谓的强化学习;再说直白点:人工输入prompt,LLM根据prompt回答,然后人工对response打分,后面继续用这些有score的数据对LLM做微调,以期望LLM的回答能对齐用户偏好!
所以reforcement learning其实是建立在SFT和RM基础之上。上述的reforcement learning是一个反复迭代的过程,特别像大学生走出大学校园后,在社会上不断被锤炼毒打,接收了各式各样的正反馈与负反馈,不断修正自己的行为,达到了最终的目的。reforcement learning效果如下:
这里总结一下这4个阶段的详细信息:
2、仔细分析上述训练流程的每个步骤,其中第三步reward modeling是需要人工标注response的score,有明显的缺陷:
- 耗时耗力
- 不同人员的主观偏好也不同,可能导致标注数据的质量参差不齐!
LLM在pre-train阶段使用的是auto-regression,是不需要人工标记数据的,所以能获取大量token,训练真正的large model;根据scaling law:token越多、模型越大,reasoning的效果越好。但是到了SFT和RM阶段,就需要人工标注数据了,问题是优质的标记数据成本越来越高,怎么减少对优质数据的依赖了?用论文作者的原话:We believe the key to overcoming such challenges lies in transforming data-driven approaches into exploration-based methods, as exemplified by reinforcement learning (RL);需要将基于数据驱动的方式转成基于探索的方式!这里的exploration-based该怎么理解了?原论文作者自己声称,达到这个目的,有两个关键点: To this end, two critical challenges need to be addressed to bridge this transformation: (1) how to obtain precise reward signals efficiently and scalably, especially for dense ones? (2) how can we build effective RL algorithms to fully unleash the potential of these signals? 对于这两点,我个人是这么理解的:
- obtain precise reward:奖励就奖励嘛,什么叫精确的奖励?
- 如果用人工标注,每个人的偏好是不一样的,比如有些标注人员是文艺青年,对艺术创作类文本评分较高,但是对逻辑严密的技术类评分可能就低了;同理,text还有context完整性、语义一致性等评价维度,人工标记不可能在多个维度都尽善尽美,导致奖励不精确;
- 近些年,随着移动互联网的发展,玩梗的越来越多:字符表面是这个意思,但实际可能表达的是其他含义,比如 “耗汁尾知”、“火钳刘明”、“蓝瘦香菇” 等;
- dense ones:RM阶段的人工标注,是对整个response的评分,并不是每个token做评分,这个颗粒度是比较粗、sparse的,能不能更精细化了?
- fully unleash the potential of these signals:对于response,站在不同的维度评价可能有不同的score,比如文艺性、严谨性、完整性、语义一致性(这就是所谓的implicity隐试信息,这类信息多且隐蔽,人工score难以全部发现)等,每个评价的维度都能得到不同的score,但人工评分的时候不太可能每个维度都考虑到,这么多维度的信息,怎么充分挖掘利用?
- 总结一下,直接训练policy model的问题:
- 训练预料标注的score维度单一,无法充分体、多维度地体现response价值
- 直接训练policy mode可能导致模型参数偏离base model过多,发生灾难性遗忘、崩溃等现象
- 很多任务的奖励信号(例如准确率、BLEU分数等)只有在整个输出完成后才能给出,并且很少直接与生成过程的每一步挂钩。这会导致策略模型在训练过程中难以高效地改进。
原作者提出的 implicit process reward modeling 解决了三个问题:
- Dense Reward: Implicit PRM 提供了Q-function,可以对每个token提供reward,极大缩小了reward的颗粒度; 理论上讲:reward越多,越密集,LLM在生成每个token的时候能得到及时的反馈(而不是等response全都结束后才评分,导致纠错或激励不及时),调整的参数更能符合用户的偏好;并且这种及时的reward是不需要额外单独训练value model的!
- scalability: Implicit PRM can be online updated with only outcome label,直接用outcome的标签在线更新 Implicit PRM,直接解决扩展性问题
- simplicity:使用SFT训练好的model用于PRM,无需事先单独训练PRM
3、(1)上面吹了辣么多牛逼,这些advantage到底是怎么实现的了?整体的实现思路和功能拆分如下:
- 需要训练一个用于inference的模型,这个是最终目的,reforcement learning中俗称Policy model,通常使用PPO的方式更新
- 既然人工无法充分、完全挖掘LLM response的Implicity rewards,这个工作就只能交给另一个LLM来干了,这里称之为Implicity process rewards model,这也是这个论文的重点
- 同样:原来人工对完整的response score,这个比较sparse,score的颗粒度太粗,所以也需要对policy mode输出的每个token打分,让reward更细腻、平滑,这个工作肯定也是需要model来做的!论文作者选择了Implicity PRM干这活!
- policy model输出的response整体也要评分啊!不能只对每个token评分,不对完整的response评分啊,论文作者使用了outcome verifier干这活!
- 最后,对policy mode做fine-tune,注意不能偏离base过多(既要符合用户的偏好,又不能过度偏离sft阶段得到的base model,避免灾难性遗忘),这里需要一个reference model提供参考生成分布
需要的功能模块设计好了,接下来就是最重要的网络架构了,论文作者图示如下:
- 作者用230K条数据训练出了SFT model作为基座,policy mode和implicity model初始化用的都是这个SFT model
- 训练样本的prompt进入policy model后会有一个输出多个response,这些response会进入outcome verifier得到整体的reward,记作r0;但仅有这个reward明显是不够的,还需要Implicity model挖掘implicity information,所以也要用Implicity model对policy model的response做reward,记作rp;所以对于这个response,r0和rp按照一定的权重相加才是最终的score;
- 为了不让policy mode和Implicity model偏离base model太多导致灾难性遗忘,还需要使用最初的SFT model作为参考
详细的伪代码如下:
(2)整个fine-tune的过程中,只有policy model和Implicity model在update,这两个model的loss分别是什么?
- 计算第t个token的implicity reward(分母冻结不变,分子调整;目的是最大化分子,也就是鼓励变异,尝试新的可能),本质就是reference mode和implicity mode对同样prompt输出的token差异!最核心的问题来了:下面这个公式为什么能挖掘implicity information?
这里扯远一点:人类之所以能进步,科技之所以能发展,就是因为下一代不完全尊从上一代,否则下一代的技术天花板不会比上一代高,所以需要适当的“变(叛)异(逆)”!在reforcement learning这里也一样:如果implicity model和sft model产生token的概率完全一样,怎么进一步挖掘隐藏信息了?所以对于同一个token,如果impolicity PRM的概率比sft model大,说明这个token可能蕴含有用的信息(发生变异了,达到了exploration的目的),需要适当地奖励,鼓励implicity PRM挖掘和sft model不一样的信息!
implicity model:用于计算生成过程中每个时间步的细粒度奖励,解决reward sparse的问题,同时挖掘response的implicity信息!对于这个model,既要生成reward,又不能严重偏离sft model,所以每次生成的token也要尽量靠近sft model!L_ce公司的核心目的:implicity PRM的输出最终匹配outcome rewrads分布(implicity rewards的总分数接近outcome verifier,保证大方向不偏离),但中间步骤、过程自己决定,更利于“模型变异”:
- policy molde参数的更新方式:
(3)设计了这么复杂的架构,究竟带来了多少好处了?We first present the effect of dense rewards in reinforcement learning. Here we compare PRIME with RLOO w/ outcome verifier (OV) only, which means there are only ground truth outcome rewards for each trajectory. We trained this model for 240 steps. For PRIME, we use the same setting and trained the model for 592 steps. We plot the training rewards measured by outcome verifier and test accuracy in the following figures. Compared with sparse reward, PRIME accelerates RL training to 2.5\times and improves the final rewards by 6.9%, with lower variances. On downstream tasks, PRIME also consistently outperforms OV only setup. 比sparse rewards相比,PRIME训练model时加速了2.5倍,并且提升了6.9%的奖励,方差还更低了(波动小)!
基于Qwen2.5-Math-7B-Instruction微调后,效果比GPT-4o还要好;注意:既然着重于逻辑推理,最好的应用场景肯定是数学啦,所以这里主要用的数学类数据验证!
总结:
1、PRIME中各个模块的作用:
2、各大辅助模块的功能:核心目的是解决有效的score数据sparse系数、训练不稳的问题!
3、PRIME 的核心优势在于:它能帮助模型跳出“imitation ”和“distillation”的框架,形成更强的推理能力和探索能力【reforcement learning 的精髓就是 Exploration and Exploitation】,从而解决复杂问题。
4、大模型效果提升三板斧:第一点和第三点都有loss函数,都要更新网络节点权重,只是更新的业务意义不同罢了!
- 网络架构创新:比如transformer、resnet这种突破性的;各种各样网络结构的最终目的还是在提取特征!本质还是feather enigneering!
- 底层训练和推理创新:完善工程实现的细节,比如deepseek的FP8、MOE、MLA、流水线并行DualPipe
- reinforcement推理路径创新:COT、TOT、GOT等
5、 理论上讲:只要训练model的数据足够多,model能得到任何问题的正确答案,无非就是概率大小和token多少的问题(比如无穷尽生成token)!所以判定答案对错的标准、奖励标注就异常重要了!
参考:
1、https://curvy-check-498.notion.site/Process-Reinforcement-through-Implicit-Rewards-15f4fcb9c42180f1b498cc9b2eaf896f#16e4fcb9c421801ebb7be689dbc2c24e
https://arxiv.org/pdf/2412.01981
2、https://www.bilibili.com/video/BV1iarUY6E7o/?spm_id_from=333.337.search-card.all.click&vd_source=241a5bcb1c13e6828e519dd1f78f35b2 清华团队PRIME 强化学习模型分析
3、https://blog.csdn.net/xxue345678/article/details/140920427
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
2022-01-13 linux源码解读(十四):红黑树在内核的应用——红黑树原理和api解析