Files
happy-llm/docs/chapter7/7.2 奖励模型.md
2024-12-09 17:43:53 +08:00

46 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 7.2 奖励模型
在自然语言处理领域大语言模型如Llama 系列、Qwen系列等已经展现了强大的文本理解和生成能力。然而这些预训练模型并不总是能直接满足特定的业务需求和人类价值观。为此人们通常需要对预训练模型进行“指令微调”Instruction Tuning即向模型提供特定的指令prompts和示例使其在对话、问答、文本生成等任务中表现得更符合人类期望。
在完成初步的指令微调后我们还想要使模型的回答不仅正确还能最大程度上满足人类的审美、价值观和安全标准。为此引入了强化学习与人类反馈Reinforcement Learning from Human Feedback, RLHF的概念。在 RLHF 中,我们会先从人类标注者那里获得对模型回答的偏好(例如,给出多个模型回答,让人类标注者对它们进行排名),然后通过这些反馈来指导模型学习,从而不断提高模型生成内容与人类偏好的契合度。
为了在 RLHF 流程中自动对模型的回答进行“打分”赋予奖励我们需要构建一个专门的奖励模型Reward Model。这个奖励模型会根据人类标注的数据进行训练并在实际部署中独立对模型输出进行自动评分从而减少持续人工参与的成本和延迟。
## 7.2.1 数据集构建
在构建奖励模型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 奖励模型训练
我们可以借助大模型强化学习框架 TRLTransformer Reinforcement Learning来训练奖励模型。TRL 是一个基于强化学习的训练框架,旨在通过人类反馈指导模型生成更符合人类期望的回答。在 TRL 中,我们会将奖励模型作为一个独立的组件,用于评估模型生成的回答,并根据评估结果给予奖励或惩罚。