# 7.1 从反馈中学习：RLHF 与 RLAIF

**预训练** 教会了 LLM “预测下一个词”，但这并不意味着它学会了“如何做一个好的智能体”。要让智能体的行为符合人类的意图（**有用、诚实、无害**，即 3H 原则），需要引入强化学习机制。

本节深入探讨 **基于人类反馈的强化学习（RLHF）** 及其变体 **基于 AI 反馈的强化学习（RLAIF）**，展示如何通过环境反馈来优化智能体的决策策略。

## 7.1.1 为什么智能体需要强化学习

智能体的目标不是生成“看起来合理”的文本，而是在环境中完成任务并长期保持稳定行为。强化学习的价值在于把“偏好/目标”转化为可优化的信号：通过奖励函数、比较反馈或过程监督，让策略在反复试错中朝着期望方向收敛。

## 7.1.2 模仿学习的局限

**基座模型** 主要通过 **监督微调** 获得能力。给模型看 1000 个“正确行为”的例子，让它模仿。

但在智能体场景下，模仿学习面临挑战：

| 问题       | 描述                 | 例子          |
| -------- | ------------------ | ----------- |
| **多步推理** | 只有最终结果有标签，中间步骤很难标注 | “证明费马大定理”   |
| **探索性**  | 可能存在比训练数据更好的解法     | “寻找更短的排序代码” |
| **分布偏移** | 部署环境与训练数据分布不同      | 遇到的新 API 错误 |

**强化学习的优势**：强化学习（RL）通过 **奖励** 而非 **正确答案** 来指导学习。

* **SFT**: “你应该在这里输出单词 'Hello'。”
* **RL**: “你输出了什么我不关心，只要用户最后点了赞，你就赢了。”

对于智能体，RL 允许模型在试错中探索出最优的工具使用策略和规划路径。

## 7.1.3 RLHF 核心流程

RLHF 通常分为三个阶段：

1. **有监督微调 (SFT)**
   * 收集高质量的 (Prompt, Response) 对。
   * 目的：让模型先学会“像人一样说话”，进入状态。
2. **奖励模型训练 (RM)**

   * 收集比较数据：同一 Prompt，模型生成 A 和 B。
   * 人类标注员选择更好的一个（A > B）。
   * 训练一个 **奖励模型**，输入 (提示词 Prompt, 响应 Response)，输出一个标量分数。

   ```python
   def reward_model(prompt, response) -> float:
       # 这是一个被训练过的神经网络

       score = model(prompt + response)
       return score
   ```
3. **近端策略优化 (PPO)**
   * 使用强化学习算法（如 **近端策略优化（PPO）**）微调语言模型。
   * 目标：最大化 RM 给出的分数，同时防止模型偏离初始模型太远（KL 散度约束）。

## 7.1.4 在智能体中的应用

* **浏览器/工具型智能体训练**：通过对“答案质量”与“工具使用轨迹”（查询、点击、调用参数等）同时打分，让策略学会更可靠的外部信息获取与执行。
* **Tool Use**: 当智能体成功调用工具并解决问题时给予正反馈；当智能体产生幻觉参数时给予负反馈。

在实际落地中，训练一个高可用的专属智能体模型，通常参考以下 Pipeline：

```mermaid
graph TD
    %% 样式定义
    classDef data fill:#e6f7ff,stroke:#1890ff,stroke-width:2px;
    classDef process fill:#f6ffed,stroke:#52c41a,stroke-width:2px;
    classDef model fill:#fff0f6,stroke:#eb2f96,stroke-width:2px;

    Seed["1. 种子指令采样<br/>(Seed Instructions)"] --> Env["2. 沙箱环境准备<br/>(Environment Setup)"]
    Env --> Rollout["3. 轨迹采样<br/>(Trajectory Rollout)"]

    subgraph Execution ["策略执行"]
        Rollout --> Traj1["轨迹 A (成功)"]
        Rollout --> Traj2["轨迹 B (失败/低效)"]
    end

    Traj1 --> Reward["4. 偏好打分<br/>(Reward Computation)"]
    Traj2 --> Reward

    Reward --> PrefData["偏好数据对<br/>(Prompt, Win, Lose)"]
    PrefData --> Opt["5. 策略更新<br/>(DPO/PPO Optimization)"]
    Opt --> NewModel(("新一代智能体模型<br/>(Policy Model)"))

    %% 应用样式
    class Seed,Traj1,Traj2,PrefData data;
    class Env,Rollout,Reward,Opt process;
    class NewModel model;
```

1. **环境与沙箱准备 (Environment Setup)**：构建包含预定义 API、数据库快照和可控返回值的隔离容器，确保训练轨迹的无状态与安全。
2. **种子指令采样 (Seed Instruction Sampling)**：从生产日志中抽取多样化的用户高频指令（如“提取上月销售额”、“排查 Pod 崩溃原因”）。
3. **轨迹采样 (Trajectory Rollout)**：让当前策略模型（Policy Model）在沙箱中多次运行，生成带工具调用的全连接轨迹（Thought $\rightarrow$ Action $\rightarrow$ Observation $\rightarrow$ Response）。
4. **奖励计算/偏好打分 (Reward Computation)**：
   * *基于环境断言 (Hard Reward)*：提取“测试是否通过”、“API 状态码是否为 200”、“Token 消耗量”。
   * *基于 AI (RLAIF)*：使用强模型裁判、规则+模型混合评审器，或基于宪法原则的裁判器，对多条完成轨迹做成对比较或量规打分。
5. **策略更新 (Policy Optimization)**：收集 `(Prompt, Trajectory_Win, Trajectory_Lose)` 数据对，使用 DPO（直接偏好优化）或 PPO 算法微调并更新模型权重。

## 7.1.5 RLAIF 与 Constitutional AI：关系与边界

### 人类反馈的瓶颈

RLHF 效果虽好，但面临三大瓶颈：

1. **昂贵**：高质量的人类标注非常贵。
2. **缓慢**：无法实时反馈。
3. **能力上限**：对于超复杂的任务（如编写操作系统内核），普通标注员无法判断对错。

### 三者关系：RLHF、RLAIF、Constitutional AI

这三个概念经常被混用，但它们并不等价：

* **RLHF**：反馈主要来自人类标注、比较或评分。
* **RLAIF**：反馈主要来自 AI 评审器或 AI 生成的偏好数据。它描述的是“反馈来源”，而不是唯一的训练配方。
* **Constitutional AI**：Anthropic 在 2022 年提出的一套更具体的方法。它先让模型依据一组自然语言原则进行**自我批评与修订**，再在 RL 阶段使用 **AI 生成的偏好** 训练偏好模型并做强化学习。也就是说，**Constitutional AI 是 RLAIF 的一种典型实现，但 RLAIF 不等于 Constitutional AI**。

因此，不能把 RLAIF 简化为“AI 偏好替代人类偏好”。更准确的理解是：

* 人类通常仍在上游定义目标、原则、红线和评测方法。
* AI 反馈只是把这些目标更低成本地扩展成大规模训练信号。
* 在工业实践里，**人类反馈、AI 反馈、环境断言、程序验证** 往往是混合使用的，而不是二选一。

### 宪法 AI：Constitutional AI

**宪法 AI（Constitutional AI）** 的核心不是“让 AI 自己决定价值观”，而是**把人类写下的原则显式化**，再让模型依据这些原则进行批评、修订和偏好判断。

**基本流程**：

1. **制定宪法 (Constitution)**： 一组自然语言原则。例如：“请选择那个更有帮助、更诚实、且更不容易造成伤害的回答。”
2. **监督阶段：自我批评与修订**： 先让模型根据宪法批评初始回答，再生成修订后的回答，用这些“批评 + 修订”样本做监督微调。
3. **RL 阶段：AI 偏好反馈**： 让评审模型依据宪法对两个候选回答做比较，生成 AI 偏好数据，再训练偏好模型并进行 RL。

   ```python
   prompt = """
   你是一名依据以下原则进行评审的助手：
   {constitution}

   请比较以下两个回答，说明理由，并选择更符合原则的一项：
   回答 A: {response_a}
   回答 B: {response_b}
   """
   ```

**优势**：

* **可扩展性**：AI 可以持续生成批评、修订和偏好信号，显著降低人工标注成本。
* **可审计性**：原则写成文本后，训练目标比“隐含的人类偏好”更容易讨论、修改和审查。
* **并不排斥人工**：Constitutional AI 与 RLAIF 都可以继续叠加人工审查、红队测试和环境奖励，不必把系统压缩成“只听 AI”。

## 7.1.6 过程监督：结果奖励与过程奖励

在传统的 RLHF 中，我们通常使用：

* **结果奖励**：仅对任务的最终成败进行评价。
  * 问题：**稀疏奖励**。智能体走了 50 步，最后一步错了导致失败，模型不知道前 49 步其实是对的。
* **过程奖励**：对每一步推理及行动进行打分。
  * 优势：**密集奖励**。能更精准地指导模型。

## 7.1.7 过程奖励模型

在数学推理等任务中，过程奖励模型（PRM）常被用来提升多步推理的稳定性：相比只在最终结果打分，它能更早发现错误并指导剪枝。**实现方式**：

1. 让模型生成思维链（CoT）。
2. 人类（或 AI）标注每一步推理是“正确”、“错误”还是“中性”。
3. 训练一个 PRM，能够给推理的中间步骤打分。

```python
# PRM 的应用：Best-of-N 采样

def generate_best_solution(problem):
    solutions = []
    for _ in range(N):
        # 逐步生成

        steps = []
        current_context = problem

        while not done:
            step = generate_step(current_context)
            score = prm_model(current_context + step)

            # 如果某一步分数太低，直接剪枝

            if score < THRESHOLD:
                break

            steps.append(step)
            current_context += step

        if done:
            solutions.append((steps, final_score))

    return max(solutions, key=lambda x: x[1])
```

## 7.1.8 直接偏好优化

### PPO 的复杂性

PPO 需要训练一个 Reward Model，还需要在训练中加载四个模型（Policy, Reference, Reward, Value），显存消耗极大，且极其不稳定。

### DPO

斯坦福团队提出的 **直接偏好优化（DPO）** 证明了：可以跳过 Reward Model 训练阶段，直接在偏好数据上优化语言模型。

$$L\_{DPO} = -E\[\log(\sigma(\beta(\log(p\_w/p\_{w,ref}) - \log(p\_l/p\_{l,ref}))))]$$

* **$y\_w$**: 胜出的回答 (Winner)
* **$y\_l$**: 失败的回答 (Loser)
* **$p\_w$ / $p\_l$**: 当前策略 $\pi\_\theta$ 对 $y\_w$ / $y\_l$ 的概率
* **$p\_{w,ref}$ / $p\_{l,ref}$**: 参考策略 $\pi\_{ref}$ 对 $y\_w$ / $y\_l$ 的概率

**DPO 的意义**：它将强化学习问题转化为了一个简单的分类损失函数优化问题。这大大降低了智能体微调的门槛，使得个人开发者也能在消费级显卡上微调出符合特定偏好的智能体。

## 7.1.9 组内相对优化

在推理模型训练中，一类常见思路是用“组内相对比较”来优化策略：对同一个提示采样多条候选输出，在组内比较高低优劣，并据此更新策略。

这种做法的工程价值通常在于：

* **降低额外模型开销**：减少对独立价值网络（Critic/Value Model）的依赖或其规模。
* **训练更稳健**：相对比较往往能降低方差，减少训练抖动。
* **促进自检行为**：在合适的奖励设计下，模型更容易学会验证、反思、回溯等策略。

## 7.1.10 小结

强化学习是智能体从“可用”走向“好用”的关键技术。

* **RLHF** 让智能体对齐人类价值观。
* **RLAIF** 把 AI 评审扩展成大规模反馈信号，但通常仍与人工和环境反馈结合使用。
* **Process Supervision** 提升了复杂推理的可靠性。
* **DPO** 降低了算法落地的门槛。

未来的智能体训练将更多地依赖 **环境反馈**（例如编译器报错、API 调用结果）而非单纯的人类标注，形成自我进化的数据飞轮。

下一节将探讨如何科学地评估智能体的能力。

***

**下一节**: [7.2 评估体系：AgentBench 与基准测试](/agentic_ai_guide/di-er-bu-fen-qun-ti-zhi-neng-yu-jin-hua/07_evolution/7.2_evaluation.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://yeasy.gitbook.io/agentic_ai_guide/di-er-bu-fen-qun-ti-zhi-neng-yu-jin-hua/07_evolution/7.1_rl.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
