十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

解密prompt系列24. RLHF新方案之训练策略:SLiC-HF DPO RRHF RSO

解密prompt系列24. RLHF新方案之训练策略:SLiC-HF  DPO  RRHF  RSO 前言之前我们梳理过OpenAIAnthropic和DeepMind出品的经典RLHF论文。现在我们会针对经典RLHF算法存在的不稳定成本高效率低等问题讨论一些新的方案。不熟悉RLHF的同学建议先看这里哦解密Prompt7. 偏好对齐RLHF-OpenAI·DeepMind·Anthropic对比分析RLHF算法当前存在的一些问题有RL的偏好样本的人工标注成本太高效率低容易存在标注偏好不一致的问题RLHF属于online训练策略在训练过程中需要让模型进行解码时间成本高训练效率低RLHF在训练过程中需要同时部署Reward模型和SFT模型和更新后的模型显存占用高训练成本高RLHF需要两阶段的训练需要先训练reward模型再使用reward模型更新SFT模S型这一章我们先聊聊训练策略的新方案。用新方案而不是优化或者改良因为平替们的效果需要更长时间的验证。SLiC-HFSLiC-HF: Sequence Likelihood Calibration with Human FeedbackCALIBRATING SEQUENCE LIKELIHOOD IMPROVES CONDITIONAL LANGUAGE GENERATION要说SLiC-HF肯定要先说下前置的Calibartion Sequence likelihood(SLiC)的对齐技术,毕竟上面这两篇论文的部分作者都相同思路自然是一脉相承。SLiCSLiC对标SFT也是post-training的指令对齐方案。方案针对指令微调阶段使用MLE也就是next token prediction带来的稀疏训练问题。因为给定context是有无数种output可能的。而微调阶段只使用唯一的答案进行训练导致模型训练不充分。一个明显的现象就是序列的解码概率越高并不意味着生成序列的质量越好这意味着生成序列其实是未修正的uncalibratedSLiC的思路有些类似半监督。也就是标注数据有限导致模型参数更新的空间有限的情况下我们可以使用半监督的平滑性和一致性原则既和标注样本相似的样本label相同反之不同的思路使用无标注样本对模型进行更新那我们把半监督的思路放到文本生成第一步.先使用SFT对齐后的模型针对标注样本每个样本生成m个推理候选结果这些就是半监督中的未标注样本第二步.使用无监督样本进行对比训练核心就是训练模型对和标注答案更相似的候选样本给予更高的解码概率反之更低这里训练就有两个细节序列相似如何定义这里没有引入新的向量模型直接使用大模型解码输出层的向量表征seq * hidden和标注结果的向量表征来计算cosine相似度相似度计算参考了BertScore的F1值。并且这里对序列进行了切分分别计算span1,2,4,8等不同长度的F1值再进行聚合。损失函数如何定义论文尝试了以下4种不同的对比损失函数主要差异在pair-wise还是list-wise拟合相似度的相对排序(i-j)还是绝对打分(P(yi|x)-P(yj|x))的高低。消融实验显示第一个Rank Loss的效果最好。也就是从所有解码生成的候选中随机采样两个以上F1更高的为正样本反之为负样本。计算解码概率的Hinge-Loss这里论文同样加入了正则项避免模型过度偏离原始SFT对齐的模型分别尝试了KL和MLE两种不同的正则。消融实验显示KL正则项的效果更好。所以综上SLiC使用了无监督的思路用对比学习来进行对齐。下面我们来看如何使用SLiC来对齐人类偏好SLiC-HF偏好样本首先SLiC-HF用的是offline的训练方案所以先说下偏好样本是如何构建的。论文尝试了Direct和Sample and Rank两种样本构建方案。Direct方案就是直接使用Reddit摘要数据集中人工标注的正负偏好样本作为\(y,y-\)优点是成本低缺点是这里的解码结果可能和SFT模型的解码分布存在偏差。Sample and Rank也就是先使用以上偏好数据训练Reward模型论文尝试了两种方案一个是绝对偏好模型预测Good/Bad使用解码概率作为label。另一个是相对偏好也就是模型学习两个摘要之间的相对好坏。之后使用SFT模型随机解码(temperature0.7)生成的8个解码候选使用以上模型打分或排序后随机采样8个正负样本对。效果上Sample and Rank要优于Direct但如果Driect部分是直接使用SFT模型生成候选再人工标注的话其实结果可能也不差。损失函数已经有了正负样本对那其实只需要用到上面的对比损失函数了不需要使用半监督了。不过这里的正则器没有选用KL而是直接使用SFT样本的MLE来防止模型能力衰减。最终的损失函数如下除了Offline的样本构建训练效率更高之外SLiC-HF直接使用序列概率表征偏好因此不需要使用reward模型同时对比来自样本而非来自模型因此也不再需要使用冻结参数的SFT模型。训练过程内容中只有一个SFT模型进行梯度更新。DPODirect Preference Optimization: Your Language Model is Secretly a Reward Modelhttps://github.com/eric-mitchell/direct-preference-optimizationhttps://github.com/huggingface/trl/blob/0a6c42c12c637bb7f28782fa72ec45dd64bce0bd/trl/trainer/dpo_trainer.pyDPO和SLiC同样是基于offline的正负偏好样本对通过对比学习来进行偏好对齐。DPO的偏好样本标注是直接基于SFT模型生成候选然后人工标注得到正负(win,loss)样本对然后直接使用损失函数进行拟合不训练reward模型。不过二者的对比损失函数不同DPO的损失函数如下以上\(\pi\)是模型解码输出层每个token的输出概率logp求和\(\theta\)是参与梯度更新的模型ref是SFT对齐后的模型参数作为基准参数被冻结。所以简单直观的理解也就是DPO的损失函数让模型对偏好样本的解码概率相比ref升高让模型对负样本的解码概率相比ref下降。和Triplet Loss的对比损失函数的思路有些相似。我们和SLiC-HF做下对比首先SLiC是hinge-lossmaximum-marginDPO不是。其次SLiC是正负样本直接对比DPO是正负样本概率分别和基准模型SFT模型进行对比二者的差异有些类似simases和triplet loss只不过DPO的锚点不是锚点样本而是基准模型。所以模型既需要拟合相对偏好也需要保证绝对分布不会答复偏离原始SFT模型。在后面的一些对比论文中普遍结论是DPO的损失函数更优SLiC的对比函数会导致一些reward hacking论文还进一步从梯度计算的角度进行了阐述如果上述损失函数对\(\theta\)求导。会得到以下公式其中\(\hat{r_{\theta}}(x,y)\beta log(\frac{\pi_{\theta}(y|x)}{\pi_{ref}(y|x)})\)是DPO的核心既对齐模型的输出层的概率偏离原始SFT模型的幅度能隐式表征偏好,作为 pseudo Reward来进行模型对齐。正负样本差异越大越多更新幅度越大梯度方向是提高偏好样本的解码概率降低负样本的解码概率。RRHFRRHF: Rank Responses to Align Language Models with Human Feedback without tearshttps://github.com/GanjinZero/RRHFRRHF同样是offline构建正负样本对再采用对比学习进行偏好对齐的方案那这里我们只看RRHF和SLiC的差异点。其一是RRHF使用了长度归一化的序列概率来表征偏好SLiC直接使用了解码概率其二是SLiC使用了Hinge-Loss而RRHF是直接拟合正负样本的概率差其三是正负样本的构建方案SLiC是基于SFT模型进行随机解码生成候选并基于Reward模型离线构建正负样本而RRHF的候选采样方案还对比了beam-searchdiversity-beam-search以及Iterate-beam-search也就是每训练一个epoch基于微调后的模型重新生成一波候选。Iterate-beam-search的采样方案会有一些效果提升考虑生成样本会随分布修正而逐渐优化可以覆盖更多的分布空间。以及Iterate-beam-search其实和PPO在线解码进行模型更新的方案更加相似但相对效率更高。三合一大礼包- RSOSTATISTICAL REJECTION SAMPLING IMPROVES PREFERENCE OPTIMIZATIONRSO方案融合了以上三者主要是DPO和SLiC分别对损失函数和偏好样本对的构建方式进行了改良。先说损失函数RSO把SLiC的Hinge-loss加入到DPO的sigmoid-norm损失函数中得到了如下的hinge-norm损失函数再有是偏好样本构建RSO指出既然以上对比函数的目标是拟合最优的Policy那理论上偏好样本对也应该从\(\pi*\)来构建。近似于以上RRHF的Iterate-beam-search的最后一个Iterate的样本分布。但\(\pi*\)还没训练出来要如何拿到它的对比样本呢这里RSO提出可以采用从\(\pi_{SFT}\)中拒绝采样来近似\(\pi_{r}\)的分布对比SLiC的SFT-sample-rank称之为RSO-Sample-Rank。具体构建方式还是从SFT生成多个解码候选并使用训练的Reward模型对每个候选进行打分接着进行拒绝采样。首先拒绝采样使用g(x)拟合f(x), 计算一个常数C使得\(c*g(x)f(x)\)。则采样过程是从g(x)中采样当随机变量\(U\sim0,1\frac{f(x)}{c*g(x)}\)则保留样本反之拒绝。这里g(x)就是SFT模型\(\pi_{sft}\)f(x)是最终对齐的模型\(\pi_{r_{\tau}}\)理论上\(m*\pi_{sft}\pi_{r_{\tau}}\)这样当\(U \frac{\pi_{r_{\tau}}}{m*\pi_{sft}}\)我们保留样本但因为这里的的\(\pi_{r_{\tau}}\)并无法获得因此我们用DPO中推导的Policy和reward的关系为了diff掉正则项Z论文使用所有随机解码样本的最大reward的x,y)来作为常数C的估计。最终得到的拒绝采样的代码如下效果上论文对比了DPO,SLiC,RSO以及不同损失函数不同采样方案的效果差异。整体上采样带来的收益是更为显著DPO的损失函数上加不加hinge差异并不大但都会优于SLiC的直接对比损失函数。最后感谢你们的阅读和喜欢我收藏了很多技术干货可以共享给喜欢我文章的朋友们如果你肯花时间沉下心去学习它们一定能帮到你。因为这个行业不同于其他行业知识体系实在是过于庞大知识更新也非常快。作为一个普通人无法全部学完所以我们在提升技术的时候首先需要明确一个目标然后制定好完整的计划同时找到好的学习方法这样才能更快的提升自己。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】一、全套AGI大模型学习路线AI大模型时代的学习之旅从基础到前沿掌握人工智能的核心技能二、640套AI大模型报告合集这套包含640份报告的合集涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示。三、AI大模型经典PDF籍随着人工智能技术的飞速发展AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型如GPT-3、BERT、XLNet等以其强大的语言理解和生成能力正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。四、AI大模型商业化落地方案五、面试资料我们学习AI大模型必然是想找到高薪的工作下面这些面试题都是总结当前最新、最热、最高频的面试题并且每道题都有详细的答案面试前刷完这套面试题资料小小offer不在话下。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
返回列表