ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

happy-llm 偏好对齐指南:从强化学习原理到 RLHF 奖励模型构建

happy-llm 偏好对齐指南:从强化学习原理到 RLHF 奖励模型构建 happy-llm 偏好对齐指南从强化学习原理到 RLHF 奖励模型构建【免费下载链接】happy-llm 从零开始构建大模型项目地址: https://gitcode.com/GitHub_Trending/ha/happy-llm导读本文是 happy-llm 开源仓库第六章的进阶补充专题围绕通过强化学习进行偏好对齐展开。你将完整掌握强化学习RL的核心概念与数学目标理解为何在指令微调SFT之后还需要训练奖励模型Reward Model并学会按照 RLHFReinforcement Learning from Human Feedback的标准流程构建chosen / rejected偏好数据集、借助 TRL 框架训练奖励模型为后续开展 DPO、PPO 等后训练实验打下基础。6.4.0 前置知识为什么 SFT 之后还需要偏好对齐大语言模型如 Llama 系列、Qwen 系列经过预训练后已经具备强大的文本理解和生成能力但预训练模型并不总能直接满足特定业务需求和人类价值观。因此业界通常先对预训练模型进行指令微调Instruction Tuning即向模型提供特定的指令prompts和示例使其在对话、问答、文本生成等任务中表现得更符合人类期望。在 happy-llm 仓库中这一步的完整实践对应 第六章正文 的 6.2 节配套脚本为 docs/chapter6/code/finetune.py。从该脚本可以看到指令微调的核心机制使用|im_start|human/|im_start|assistant等角色标识符组织多轮对话在labels中通过IGNORE_TOKEN_ID屏蔽 user 侧文本只对 assistant 侧回答计算损失通过TrainerTrainingArguments完成标准的交叉熵式有监督训练。但指令微调只解决回答格式与大致内容正确的问题。我们还希望模型的回答不仅能正确还能最大程度上满足人类的审美、价值观和安全标准——这正是偏好对齐Preference Alignment要解决的问题也是本文的核心主题。6.4.1 强化学习的基本原理从行为心理学到计算强化学习在进入强化学习的细节之前先看看它的起源。强化学习Reinforcement Learning简称 RL其实并不是什么新鲜事物它的理论基础可以追溯到 20 世纪初的行为心理学尤其是 Edward Thorndike 和 B.F. Skinner 对动物学习的研究。Thorndike 提出了效果律如果一个行为带来积极的结果那么这种行为重复发生的概率会增加。Skinner 则进一步发展了这一思想提出操作性条件作用学说通过奖励和惩罚来塑造行为。计算机科学领域的强化学习正是从这些心理学原理中生发出来的。20 世纪 80 年代随着计算能力提升和数学理论发展人们开始尝试将生物心理学的学习概念应用于机器和计算机程序从而发展出现代意义上的强化学习。核心要素在强化学习中以下五个要素构成了最基本的框架状态State系统在某一时刻的具体状况。比如棋盘游戏中状态可以表示棋盘上所有棋子的当前排列情况对自动驾驶汽车来说状态可能包括汽车的速度、位置以及周围障碍物的位置等。动作Action智能体在给定状态下可执行的操作。以自行车为例动作可能包括前进、停止、转弯等。在复杂系统中动作集可以非常庞大。奖励Reward智能体执行某个动作后获得的反馈通常是一个数值。奖励可以是立即的也可以是延后的好的动作获得正奖励不好的动作获得负奖励。策略Policy一套指导智能体如何选择动作的规则即告诉智能体在每个状态下应该做什么。价值函数Value Function对策略的评估工具用于预测从当前状态出发、长期来看能够获得的总奖励帮助智能体权衡短期与长期的收益。模型Model在部分强化学习系统中我们会建立一个环境模型帮助智能体预见其动作的结果这在许多复杂计算场景下非常有用。这些元素共同作用帮助智能体通过在虚拟环境中不断试错来学习最佳行动策略智能体与环境的交互循环在强化学习中智能体是学习和决策的主体它通过以下步骤与环境交互观察状态智能体首先观察当前的状态State。选择动作根据观察到的状态和预先确定的策略智能体选择一个动作Action。执行动作智能体执行所选的动作。接收奖励和新状态执行动作后智能体从环境中接收到相应的奖励Reward和更新后的新状态State。更新策略智能体使用获得的奖励信息来调整策略以便在未来获得更好的结果。将这个过程不断重复智能体在反复交互中不断优化策略目标是在给定任务中表现得越来越好。上图仓库 docs/images/6-images/7.1-1.png直观展示了这一闭环智能体基于当前状态 $s_t$ 选择动作 $a_t$环境接收动作后更新状态并返回奖励 $r_t$如此往复进入下一轮迭代。6.4.2 强化学习的目标强化学习的目标十分明确通过在给定环境中反复试探和学习使得智能体能够选择一系列动作从而最大化其总累计奖励。可以用玩游戏来类比玩家的目标是通过一系列操作走路、跳跃、打怪来赢得高分或完成关卡在强化学习中这种高分或成功通过关卡的概念就对应于最大化奖励。数学表达在数学上这个目标可以表示为训练一个策略 $\pi$使得在所有状态 $s$ 下智能体选择的动作能够使回报 $R(\tau)$ 的期望值最大化。具体来说我们希望最大化以下期望值$$ E(R(\tau)){\tau \sim P{\theta}(\tau)} \sum_{\tau} R(\tau) P_{\theta}(\tau) $$其中$E(R(\tau)){\tau \sim P{\theta}(\tau)}$表示在策略 $P_{\theta}(\tau)$ 下轨迹 $\tau$ 的回报 $R(\tau)$ 的期望值$R(\tau)$轨迹 $\tau$ 的回报即从起始状态到终止状态获得的所有奖励的总和$\tau$一条轨迹即智能体在环境中的状态和动作序列$P_{\theta}(\tau)$在参数 $\theta$ 下生成轨迹 $\tau$ 的概率通常由策略或策略网络确定$\theta$策略的参数控制着策略 $P_{\theta}$ 的行为。为了找到这个策略我们使用梯度上升的方法不断更新策略参数 $\theta$使得 $E(R(\tau)){\tau \sim P{\theta}(\tau)}$ 不断增大。适用领域与典型代表这种学习方式非常有效因为它不依赖于大量标注数据而是通过对环境直接进行交互和反馈进行学习。这使得强化学习在机器人控制、自动驾驶、金融交易乃至游戏中都展现出巨大潜力。在大模型领域AlphaGo、AlphaZero 等系统正是通过强化学习不断优化策略最终在围棋、象棋等项目中击败人类顶尖选手。强化学习同样可以用于偏好对齐问题例如让大模型学习模仿人类的交流方式它也广泛应用于自动驾驶等领域。未来强化学习的应用场景还会更加广泛。6.4.3 奖励模型让偏好可量化从人类反馈到自动打分在完成初步的指令微调后我们还希望模型的回答不仅正确还能最大程度满足人类的审美、价值观和安全标准。为此引入了RLHFReinforcement Learning from Human Feedback基于人类反馈的强化学习。在 RLHF 中我们首先从人类标注者那里获得对模型回答的偏好例如给出多个模型回答让人类标注者对它们进行排名然后通过这些反馈来指导模型学习从而不断提高模型生成内容与人类偏好的契合度。为了在 RLHF 流程中自动对模型的回答进行打分赋予奖励需要构建一个专门的奖励模型Reward Model。这个奖励模型会根据人类标注的数据进行训练并在实际部署中独立对模型输出进行自动评分从而减少持续人工参与的成本和延迟。奖励模型在整体管线中的位置可以这样理解完整的后训练管线预训练在无标注语料上学习语言能力SFT指令微调学会按人类指令和对话格式生成内容对应 docs/chapter6/code/finetune.py 的实践奖励模型训练用人类偏好数据训练一个自动评分器替代人工打分强化学习优化以奖励模型的分数作为奖励信号通过强化学习如 PPO、DPO 等算法进一步优化策略模型。其中奖励模型是承上启下的关键组件——它将模糊的人类喜好转化为可优化的数值信号。6.4.4 偏好数据集构建在构建奖励模型之前首先需要准备高质量的人类反馈数据集。此数据集的核心目标是为每条给定的提示prompt提供多个候选回答completion并由人类标注者对这些回答进行细致的评定与排序。通过对回答的对比和筛选我们可以为机器模型提供明确的参考标准帮助其学习在给定任务下如何生成更符合人类期望的输出。数据收集三步走收集初始回答首先从一个已经过基本微调的大模型往往是具有一定指令理解和生成能力的预训练模型中为一组精心设计的提示生成多条回答这些回答将作为后续人类标注工作的基础。人工标注与评估拥有多条候选回答后邀请专业标注人员或众包标注者对每条回答的质量进行评价。评估通常会基于一系列预先设计的评价标准如回答的准确性、完整性、上下文相关性、语言流畅度以及是否遵循道德与安全准则。对不同回答的比较与排序帮助识别最佳和最差的回答从而形成有价值的训练数据。数据格式化与整理标注完成后将数据进行整理与格式化通常采用 JSON、CSV 或其他便于计算机处理的结构化数据格式。数据集中需明确标识每个问题prompt、其对应的多个回答completions以及人类标注者对这些回答的选择如标记为 chosen 的最佳答案与 rejected 的较差答案。这些标记信息可直接作为奖励模型学习的监督信号使其在训练中自动倾向于生成高质量回答。数据示例下面是一个简单的数据示例展示两个问题question及其对应的回答和人类评价结果。通过 chosen 与 rejected 字段的对比可以直观看出哪条回答更为优质[ { question: Python中的列表是什么, chosen: Python中的列表是一种有序的可变容器允许存储多个元素并且可以通过索引访问。, rejected: Python中的列表用于存储数据。 }, { question: Python中的元组是什么, chosen: Python中的元组是一种有序的不可变容器允许存储多个元素并且一旦创建就不能修改。, rejected: Python中的元组用于存储数据。 } ]在上述示例中人类标注者认为 chosen 字段下的回答相对于对应的 rejected 回答在描述、准确性和信息量等方面都更为优质。例如对于列表的定义chosen 答复更清晰地解释了列表的特征有序、可变、支持索引访问而非仅仅停留在用于存储数据这种笼统描述。从 SFT 数据到偏好数据的差异对比仓库 docs/chapter6/code/finetune.py 中 SFT 数据的conversations多轮对话格式可以发现偏好数据集的结构差异非常明显SFT 数据关注给定指令标准回答是什么监督信号是唯一的目标文本偏好数据关注多个回答中哪个更好监督信号是回答之间的相对优劣chosen vs rejected这正是奖励模型排序式训练所需的输入形式。6.4.5 奖励模型训练基于 TRL 框架说明原文此节编号为 7.2.2与本章章节号6.4不一致本文按章节顺序修正为 6.4.5内容保持一致。我们可以借助大模型强化学习框架TRLTransformer Reinforcement Learning来训练奖励模型。TRL 是一个基于强化学习的训练框架旨在通过人类反馈指导模型生成更符合人类期望的回答。在 TRL 中我们会将奖励模型作为一个独立的组件用于评估模型生成的回答并根据评估结果给予奖励或惩罚。奖励模型的核心思想奖励模型的训练本质上是排序学习Learning to Rank输入同一条 prompt 下的两条回答chosen 与 rejected模型为两条回答各输出一个标量分数训练目标就是让 chosen 回答的分数显著高于 rejected 回答的分数。在 happy-llm 中的实践定位需要注意的是当前 happy-llm 仓库第六章的配套代码docs/chapter6/code主线覆盖的是预训练pretrain.py与指令微调finetune.py两部分环境依赖见 requirements.txt其中已包含transformers、datasets、torch、deepspeed等训练基础组件。偏好对齐RLHF / 奖励模型 / DPO / KTO 等属于进阶后训练主题建议的学习路径是先完成第六章正文 6.16.3Pretrain、SFT、PEFT/LoRA的实践掌握Trainer、TrainingArguments与 DeepSpeed 的用法再按本文内容准备好偏好数据集chosen / rejected 格式最后在现有训练环境中引入 TRL 框架将奖励模型作为独立组件接入即可衔接 PPO、DPO 等偏好优化算法。小结本文围绕 happy-llm 仓库第六章的偏好对齐专题系统梳理了从强化学习原理到 RLHF 奖励模型构建的完整链条原理层面掌握状态、动作、奖励、策略、价值函数五大要素理解智能体与环境的交互闭环以及最大化累计奖励的数学目标与梯度上升优化思路动机层面理解指令微调SFT与偏好对齐的分工明确奖励模型在 RLHF 管线中的承上启下作用数据层面掌握人类偏好数据集的收集、标注、格式化流程以及 chosen / rejected 字段的标准 JSON 结构训练层面了解基于 TRL 框架训练奖励模型的定位与后续衔接方式。仓库第六章的代码资源docs/chapter6/code为上述内容提供了 Pretrain 与 SFT 的落地实践基础偏好对齐可作为掌握训练主线后的进阶方向继续深入。【免费下载链接】happy-llm 从零开始构建大模型项目地址: https://gitcode.com/GitHub_Trending/ha/happy-llm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表