From bf91fa3c86a85064996c215a928e498e2bb06d6a Mon Sep 17 00:00:00 2001 From: Logan Zou <74288839+logan-zou@users.noreply.github.com> Date: Sat, 26 Apr 2025 16:00:50 +0800 Subject: [PATCH] =?UTF-8?q?Update=20and=20rename=207.1=20=E5=BC=BA?= =?UTF-8?q?=E5=8C=96=E5=AD=A6=E4=B9=A0=E7=9A=84=E7=9B=AE=E6=A0=87.md=20to?= =?UTF-8?q?=206.4[WIP]=20=E5=81=8F=E5=A5=BD=E5=AF=B9=E9=BD=90.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...强化学习的目标.md => 6.4[WIP] 偏好对齐.md} | 51 +++++++++++++++++-- 1 file changed, 48 insertions(+), 3 deletions(-) rename docs/chapter6/{7.1 强化学习的目标.md => 6.4[WIP] 偏好对齐.md} (53%) diff --git a/docs/chapter6/7.1 强化学习的目标.md b/docs/chapter6/6.4[WIP] 偏好对齐.md similarity index 53% rename from docs/chapter6/7.1 强化学习的目标.md rename to docs/chapter6/6.4[WIP] 偏好对齐.md index 9ce73c0..9b27f28 100644 --- a/docs/chapter6/7.1 强化学习的目标.md +++ b/docs/chapter6/6.4[WIP] 偏好对齐.md @@ -1,10 +1,10 @@ -# 7.1 强化学习的目标 +# 6.4 通过强化学习进行偏好对齐 在我们进入强化学习的细节之前,让我们先看看它的起源。强化学习(Reinforcement Learning,简称RL)其实并不是什么新鲜事物。它的理论基础可以追溯到20世纪初的行为心理学,尤其是Edward Thorndike和B.F. Skinner对于动物学习的研究。Thorndike提出了“效果律”,即如果一个行为带来积极的结果,那么这种行为重复发生的概率会增加。Skinner则进一步发展了这种思想,提出操作性条件作用学说,通过奖励和惩罚来塑造行为。 计算机科学领域的强化学习是从这些心理学原理生发出来的。在20世纪80年代,随着计算能力的提升和数学理论的发展,人们开始尝试将这些生物心理学的学习概念应用于机器和计算机程序,从而发展出了现代意义上的强化学习。 -## 7.1.1 强化学习的基本原理 +## 6.4.1 强化学习的基本原理 现在,我们进入核心部分——强化学习的基本原理。 @@ -27,7 +27,7 @@ 将这个过程不断重复,智能体在反复的交互中不断优化其策略,目标是让它在给定的任务中表现得越来越好。 -## 7.1.2 强化学习的目标 +## 6.4.2 强化学习的目标 强化学习的目标十分明确:***通过在给定环境中反复试探和学习,使得智能体能够选择一系列动作从而最大化其总累计奖励。*** 这听起来可能有些抽象,我们可以用玩游戏来比喻。在游戏中,玩家的目标是通过一系列操作(比如走路、跳跃、打怪)来赢得高分数或完成关卡。在强化学习中,这种高分或成功通过关卡的概念对应于“最大化奖励”。 @@ -52,3 +52,48 @@ $$ 强化学习也可以用于偏好对齐问题,比如可以让大模型学习模仿人类的交流方式,也会用于自动驾驶等领域。强化学习的应用领域非常广泛,未来也会有更多的应用场景。 +## 6.4.3 奖励模型 + +在自然语言处理领域,大语言模型(如Llama 系列、Qwen系列等)已经展现了强大的文本理解和生成能力。然而,这些预训练模型并不总是能直接满足特定的业务需求和人类价值观。为此,人们通常需要对预训练模型进行“指令微调”(Instruction Tuning),即向模型提供特定的指令(prompts)和示例,使其在对话、问答、文本生成等任务中表现得更符合人类期望。 + +在完成初步的指令微调后,我们还想要使模型的回答不仅正确,还能最大程度上满足人类的审美、价值观和安全标准。为此,引入了强化学习与人类反馈(Reinforcement Learning from Human Feedback, RLHF)的概念。在 RLHF 中,我们会先从人类标注者那里获得对模型回答的偏好(例如,给出多个模型回答,让人类标注者对它们进行排名),然后通过这些反馈来指导模型学习,从而不断提高模型生成内容与人类偏好的契合度。 + +为了在 RLHF 流程中自动对模型的回答进行“打分”(赋予奖励),我们需要构建一个专门的奖励模型(Reward Model)。这个奖励模型会根据人类标注的数据进行训练,并在实际部署中独立对模型输出进行自动评分,从而减少持续人工参与的成本和延迟。 + +## 6.4.4 数据集构建 + +在构建奖励模型(Reward Model)之前,我们首先需要准备高质量的人类反馈数据集。此数据集的核心目标是为每条给定的提示(prompt)提供多个候选回答(completion),并由人类标注者对这些回答进行细致的评定与排序。通过对回答的对比和筛选,我们得以为机器模型提供明确的参考标准,帮助其进一步学习在给定任务下如何生成更符合人类期望的输出。 + +可以按照以下步骤进行数据收集: + +1. 收集初始回答:首先,我们需要从一个已经过基本微调的“大模型”(往往是具有一定指令理解和生成能力的预训练模型)中,为一组精心设计的提示生成多条回答。这些回答将作为后续人类标注工作的基础。 + + +2. 人工标注与评估:拥有多条候选回答后,我们邀请专业标注人员或众包标注者对每条回答的质量进行评价。这些评估通常会基于一系列预先设计的评价标准,如回答的准确性、完整性、上下文相关性、语言流畅度以及是否遵循道德与安全准则。对不同回答的比较与排序帮助我们识别最佳和最差的回答,从而形成有价值的训练数据。 + +3. 数据格式化与整理:标注完成后,我们将数据进行整理与格式化,通常采用 JSON、CSV 或其他便于计算机处理的结构化数据格式。数据集中需明确标识每个问题(prompt)、其对应的多个回答(completions),以及人类标注者对这些回答的选择(如标记为 "chosen" 的最佳答案与 "rejected" 的较差答案)。这些标记信息可直接作为奖励模型学习的监督信号,使其在训练中自动倾向于生成高质量回答。 + +下面是一个简单的数据示例,其中展示了两个问题(question)及其对应的回答和人类评价结果。通过 "chosen" 与 "rejected" 字段的对比,我们可以直观地看出哪条回答更为优质。 + +```json +[ + { + "question": "Python中的列表是什么?", + "chosen": "Python中的列表是一种有序的可变容器,允许存储多个元素,并且可以通过索引访问。", + "rejected": "Python中的列表用于存储数据。" + }, + { + "question": "Python中的元组是什么?", + "chosen": "Python中的元组是一种有序的不可变容器,允许存储多个元素,并且一旦创建就不能修改。", + "rejected": "Python中的元组用于存储数据。" + } +] +``` + +在上述示例中,人类标注者认为 "chosen" 字段下的回答相对于对应的 "rejected" 回答在描述、准确性和信息量等方面都更为优质。例如,对于列表的定义,"chosen" 答复更清晰地解释了列表的特征(有序、可变、支持索引访问),而非仅仅停留在“用于存储数据”这种笼统描述。 + + +## 7.2.2 奖励模型训练 + +我们可以借助大模型强化学习框架 TRL(Transformer Reinforcement Learning)来训练奖励模型。TRL 是一个基于强化学习的训练框架,旨在通过人类反馈指导模型生成更符合人类期望的回答。在 TRL 中,我们会将奖励模型作为一个独立的组件,用于评估模型生成的回答,并根据评估结果给予奖励或惩罚。 +