中国免费最好用建站cms,那个网站可以做学历认证,商店小程序,win主机wordpress本文章参考#xff0c;原文链接#xff1a;https://blog.csdn.net/qq_35812205/article/details/133563158 SFT使用交叉熵损失函数#xff0c;目标是调整参数使模型输出与标准答案一致#xff0c;不能从整体把控output质量
RLHF#xff08;分为奖励模型训练、近端策略优化…本文章参考原文链接https://blog.csdn.net/qq_35812205/article/details/133563158 SFT使用交叉熵损失函数目标是调整参数使模型输出与标准答案一致不能从整体把控output质量
RLHF分为奖励模型训练、近端策略优化两个步骤则是将output作为一个整体考虑优化目标是使模型生成高质量回复
引发思考 使用排序数据集和DPODirect Preference Learning直接偏好学习或其他替代方法如RAILF、ReST等来训练模型。这可以帮助模型生成更高质量的回复而不是直接使用RLHF。 为了减少幻觉如拒绝回答可以构造排序数据集如good response为拒绝话术bad response是没拒绝的胡乱回答进行RLHF。这种方法可以帮助模型学习在拒绝回答时如何更好地处理情况。 奖励模型训练奖励模型通常也采用基于 Transformer 架构的预训练语言模型。在奖励模型中移除最后一个 非嵌入层并在最终的 Transformer 层上叠加了一个额外的线性层。无论输入的是何种文本奖励 模型都能为文本序列中的最后一个标记分配一个标量奖励值样本质量越高奖励值越大。 在RLHF中比如MOSS-RLHF是使用奖励模型来初始化评论家模型critic model和奖励模型reward model评论家模型也使用奖励模型初始化便于在早期提供较准确的状态值估计但是注意PPO会对策略模型、评论家模型训练并更新奖励模型、参考模型不参与训练。
异策略固定一个演员和环境交互不需要更新将交互得到的轨迹交给另一个负责学习的演员训练。PPO就是策略梯度的异策略版本。通过重要性采样这里使用KL散度进行策略梯度的更新。PPO解决了传统策略梯度方法的缺点高方差、低数据效率、易发散等问题。
PPO-clip算法通过引入裁剪机制来限制策略更新的幅度使得策略更新更加稳定 强化学习基础知识
1、强化学习框架的六要素 强化学习RL是研究agent智能体和环境交互的问题目标是使agent在复杂而不确定的环境中最大化奖励值。 智能体Agent强化学习的主体也就是作出决定的“大脑” 环境Environment智能体所在的环境智能体交互的对象 行动Action由智能体做出的行动 奖励Reward智能体作出行动后该行动带来的奖励 状态State智能体自身当前所处的状态 目标Objective指智能体希望达成的目标。
串起6要素一个在不断变化的【环境】中的【智能体】为了达成某个【目标】需要不断【行动】行动给予反馈即【奖励】智能体对这些奖励进行学习改变自己所处的【状态】再进行下一步行动即持续这个【行动-奖励-更新状态】的过程直到达到目标。
策略与价值
agent在尝试各种行为时就是在学习一个策略policy一套指导agent在特定状态下行动的规则agent会估计价值value即预测未来采取某个行为后所能带来的奖励 任何一个有智力的个体它的学习过程都遵循强化学习所描述的原理。比如说婴儿学走路就是通过与环境交互不断从失败中学习来改进自己的下一步的动作才最终成功的。再比如说在机器人领域一个智能机器人控制机械臂来完成一个指定的任务或者协调全身的动作来学习跑步本质上都符合强化学习的过程。 奖励模型Reward Model和评论模型Critic Model
奖励模型Reward Model奖励模型是强化学习中一个基本元素它定义了智能体执行特定动作后将得到的奖励。换句话说奖励模型为智能体在其环境中执行的每个动作提供奖励正面或惩罚负面。这个模型帮助智能体理解哪些动作是有利的哪些不是因此智能体尝试通过最大化获得的总奖励来找到最优策略。
评论模型Critic Model评论模型是一种基于值迭代的方法它在每个状态或动作上评估或者评论期望的未来奖励。评论者用来估计一个动作或状态的长期价值通常在演员-评论者模型Actor-Critic Models中使用演员选择动作评论者评估动作。 两者的主要区别在于奖励模型直接反映了每个动作的即时反馈而评论模型是对未来奖励的一个预测或估计关注的是长期价值通常基于数学期望来进行评估。 RLHF对齐
1. 训练奖励模型和RL
用奖励模型训练SFT模型生成模型使用奖励或惩罚来更新策略以便生成更高质量、符合人类偏好的文本。 奖励模型RL强化学习作用1学习人类兴趣偏好训练奖励模型。由于需要学习到偏好答案训练语料中含有response_rejected不符合问题的答案。 2奖励模型能够在RL强化学习阶段对多个答案进行打分排序。根据奖励模型训练之前的sft微调模型RL强化学习阶段可以复用sft的数据集训练语料{‘question’: ‘土源性线虫感染的多发地区是哪里’, ‘response_chosen’: ‘苏北地区贵州省剑河县西南贫困地区桂东江西省鄱阳湖区江西省’, ‘response_rejected’: ‘在热带和亚热带地区的农村。’},根据奖励模型训练之前的sft微调模型RL强化学习阶段可以复用sft的数据集 RLHFreinforcement learning from human feedback 分为三个步骤
step1 我做你看有监督学习从训练集中挑出一批prompt人工对prompt写答案。其实就是构造sft数据集进行微调。step2 你做我看奖励模型训练这次不人工写答案了而是让GPT或其他大模型给出几个候选答案人工对其质量排序Reward model学习一个打分器这个让机器学习人类偏好的过程就是【对齐】但可能会导致胡说八道可以通过KL Divergence等方法解决。 step3 自学成才PPO训练利用第二阶段的奖励模型RM计算奖励分数同时使用PPO近端策略优化更新第一步训练得到的sft模型最大优化该目标函数 常见的公开偏好数据集
源自《Llama 2: Open Foundation and Fine-Tuned Chat Models》Table 6 如https://huggingface.co/datasets/lvwerra/stack-exchange-paired PPO近端策略优化
PPO思想保证策略改进同时通过一些约束来控制策略更新的幅度在每次迭代中通过采样多个轨迹数据来更新策略
使用当前策略对环境交互收集多个轨迹数据利用第一步的轨迹数据计算当前策略和旧策略之间的KL散度通过控制KL散度大小来限制策略更新的幅度使用优化器对策略进行更新使其更加接近当前的样本策略 近端策略优化PPO涉及到四个模型
1策略模型Policy Model生成模型回复。 2奖励模型Reward Model输出奖励分数来评估回复质量的好坏。 3评论模型Critic Model/value model来预测回复的好坏可以在训练过程中实时调整模型选择对未来累积收益最大的行为。 4参考模型Reference Model提供了一个 SFT 模型的备份帮助模型不会出现过于极端的变化。
近端策略优化PPO的实施流程如下
环境采样策略模型基于给定输入生成一系列的回复奖励模型则对这些回复进行打分获得奖励。
优势估计利用评论模型预测生成回复的未来累积奖励并借助广义优势估计Generalized Advantage EstimationGAE算法来估计优势函数能够有助于更准确地评估每次行动的好处。
GAE基于优势函数加权估计的GAE可以减少策略梯度估计方差
优化调整使用优势函数来优化和调整策略模型同时利用参考模型确保更新的策略不会有太大的变化从而维持模型的稳定性。 相关强化学习概念对应
Policy现有LLM接受输入进行输出的过程。State当前生成的文本序列。Action Space即vocab也就是从vocab中选取一个作为本次生成的token。
KL散度Kullback-Leibler Divergence可以衡量两个概率分布之间的差异程度。在 PPO 算法中KL 散度Kullback-Leibler Divergence的计算公式如下 其中π_old 表示旧的策略π_new 表示当前的样本策略。KL 散度的含义是用 π_old 的分布对 π_new 的分布进行加权然后计算两个分布之间的差异程度。 具体来说KL 散度的计算方法是首先计算 π_old(i) / π_new(i) 的比值然后对其取对数并乘以 π_old(i) 来进行加权。最后将所有加权后的结果相加即可得到 KL 散度的值。这里的KL散度值是一个【惩罚项】即经过RL训练后模型和SFT后模型的KL散度繁殖两个模型偏差太多导致模型效果下降RLHF的主要目的是alignment。 注意KL 散度是一个非对称的度量即 KL(π_old || π_new) 与 KL(π_new || π_old) 的值可能不相等。在 PPO 算法中我们通常使用 KL(π_old || π_new) 来控制策略更新的幅度因为 KL(π_old || π_new) 的值通常比 KL(π_new || π_old) 更容易控制并且更能够反映出策略改变的方向。 DPO、PPO 和 BPO 都是用于训练强化学习代理的算法但它们在算法原理和实现上有一些不同之处。 DPODirect Policy OptimizationDPO 是一种直接策略优化方法它通过直接优化策略函数来提高代理的性能。与值函数价值函数相比DPO 不需要估计状态值或状态动作值而是直接优化策略函数来最大化长期累积奖励。DPO 可能包括各种方法如 REINFORCE 算法、TRPOTrust Region Policy Optimization等。 PPOProximal Policy OptimizationPPO 也是一种策略优化方法它专注于近端策略优化。PPO 通过限制每次策略更新的大小来确保稳定性和收敛性这通常通过一种叫做“近端策略裁剪”的方法来实现。PPO 在训练过程中不需要使用价值函数而是直接优化策略函数。PPO 的设计目标是简化和提高算法的稳定性。 BPOBatch Policy OptimizationBPO 是一种批量策略优化方法它使用离线收集的数据批次进行策略更新。与在线方法不同BPO 不需要与环境交互来收集数据而是使用事先收集的大量数据进行策略更新。BPO 可以更有效地利用离线数据但也面临着样本效率和数据偏差等挑战。