【Agentic RL 智能体强化学习】第 01 篇:Agentic RL 全景导论 — 从 AlphaGo 到 DeepSeek R1

本系列定位:从强化学习数学基础出发,系统讲解 LLM 对齐(RLHF/DPO/GRPO)到 Agentic RL(多轮智能体强化学习)的全链路,以 OpenRLHF 框架为实战主线。


本篇你将学到

  • 强化学习如何从游戏 AI(AlphaGo)走向语言模型(ChatGPT),再到推理模型(DeepSeek R1)的完整演进脉络
  • RLHF、DPO、GRPO、Agentic RL 四个核心概念的定义与关系
  • OpenRLHF 框架在 Agentic RL 生态中的技术定位
  • 本系列 50 篇的学习路线图与递进项目 AgentRL-Lab 的设计
  • 搭建完整的 Python + PyTorch 实验环境

学完本篇,你将对"Agentic RL 到底是什么、为什么要学、怎么学"形成清晰的认知框架。


一、从 AlphaGo 到 DeepSeek R1:强化学习驱动的 AI 进化史

2016 年 3 月,AlphaGo 击败李世石,强化学习(Reinforcement Learning, RL)一战成名。但很多人不知道的是,这个技术后来在另一个领域产生了更深远的影响——大语言模型(LLM)。

让我们用一张时间线来看这条技术进化之路:

2013 DeepMind 发布 DQN<br/>AI 学会玩 Atari 游戏 2016 AlphaGo 击败李世石<br/>策略梯度 + 蒙特卡洛树搜索 2017 PPO 算法发布<br/>成为最广泛使用的 RL 算法 2019 OpenAI Five 在 Dota 2 中获胜<br/>大规模多智能体 RL 2022 ChatGPT 诞生<br/>RLHF 技术让 LLM "听人话" 2023 DPO 论文发表<br/>绕过奖励模型的革命性方法 2024 DeepSeek R1 问世<br/>GRPO + RLVR 驱动推理能力涌现 2025-2026 Agentic RL 蓬勃发展<br/>多轮智能体强化学习成为新范式 强化学习驱动的 AI 进化史

1.1 三次范式跃迁

这条进化线上发生了三次关键的范式跃迁,理解它们就理解了本系列的核心逻辑。

第一次跃迁:从规则到学习(AlphaGo, 2016)

传统棋类 AI 靠人类编写评估函数和搜索策略。AlphaGo 颠覆了这一点——它用神经网络学习"局面评估"和"落子选择",再用自我博弈(Self-Play)不断强化。核心公式是策略梯度(Policy Gradient),我们将在第 05 篇详解。

第二次跃迁:从游戏到语言(ChatGPT, 2022)

ChatGPT 的秘密武器是 RLHF(Reinforcement Learning from Human Feedback)。它做的事情很朴素:让人类给模型的回答打分,再用这些分数训练一个"奖励模型"(Reward Model),最后用 PPO 算法优化语言模型,让它生成得分更高的回答。

这一步的伟大之处在于:它证明了 RL 可以用来微调一个有数十亿参数的语言模型,让它从"能说话"变成"说人话"。

第三次跃迁:从对齐到推理(DeepSeek R1, 2024)

RLHF 解决了"怎么让模型更讨人喜欢"的问题,但模型本身的推理能力(数学、逻辑、编程)并没有质的飞跃。DeepSeek R1 改变了这一点——它用 GRPO 算法配合 RLVR(可验证奖励强化学习),让模型通过纯 RL 训练就涌现出强大的链式推理能力。

R1 最令人震惊的实验是 R1-Zero:跳过监督微调(SFT),直接在基座模型上做 RL,模型就自发学会了长链推理、自我反思、试错纠偏。

1.2 为什么是 Agentic RL

前三次跃迁关注的都是"单轮"场景——一个问题,一个回答。但真实世界的任务远比这复杂。

场景单轮 RLHFAgentic RL
交互方式一问一答多轮对话、多步操作
动作空间生成一段文本生成文本 + 调用工具 + 执行代码
奖励来源人类偏好 / RM 分数任务完成度 + 工具使用效率 + 多维评分
典型例子ChatGPT 的对齐训练能自主使用工具的 AI Agent

Agentic RL 就是把强化学习的框架从"单轮生成"扩展到"多轮交互"。模型不再只是一个回答问题的工具,而是一个能与环境交互、使用工具、从反馈中学习的智能体。


二、四大核心概念:一张图理清它们的关系

在深入学习之前,先把四个最容易混淆的概念理清楚:

强化学习 RL
(总称:用奖励信号优化策略)

RLHF
从人类反馈中学习

RLVR
从可验证规则中学习

Agentic RL
多轮交互中的 RL

PPO
经典 RLHF 算法

DPO
绕过 RM 的简化方法

GRPO
DeepSeek 的无 Critic 算法

工具调用 RL
训练 Agent 用工具

代码执行 RL
训练 Agent 写代码

自博弈训练
模型自我对抗

2.1 RLHF(Reinforcement Learning from Human Feedback)

一句话定义:收集人类对模型输出的偏好(哪个回答更好),训练奖励模型,再用 RL 优化语言模型。

核心流程:SFT(监督微调)→ RM(奖励模型训练)→ PPO(强化学习优化)

适用场景:让模型更符合人类偏好(有用、无害、诚实),适用于对话、写作等主观任务。

2.2 DPO(Direct Preference Optimization)

一句话定义:不需要训练奖励模型,直接用偏好数据通过一个分类损失优化策略。

核心洞察:RLHF 的最优策略有解析解,可以把 RL 目标转化为监督学习问题。

适用场景:资源有限、希望快速对齐、偏好数据充足时。比 PPO 简单且稳定,但对数据质量要求更高。

2.3 GRPO(Group Relative Policy Optimization)

一句话定义:DeepSeek 提出的算法,去掉 Critic 网络,用同一 prompt 的多个采样结果的组内相对优势来优化策略。

核心优势:省去 Critic 模型,大幅降低显存需求;适合推理任务(数学、代码)。

适用场景:推理能力训练,是 DeepSeek R1 的核心算法。

2.4 Agentic RL(Agent Reinforcement Learning)

一句话定义:在多轮交互环境中(而非单轮一问一答)用强化学习优化 Agent 的策略。

核心特征:Episode(回合)由多次交互组成,Agent 每轮可以生成文本、调用工具、观察环境反馈,在 Episode 结束时获得奖励。

适用场景:训练能自主使用工具、执行代码、多步推理的智能体。


三、OpenRLHF:Agentic RL 的工业级框架

本系列以 OpenRLHF 作为实战主线框架。它不是唯一的 RLHF 框架(还有 TRL、Verl 等),但它在工程化、分布式能力、Agentic RL 支持上有独特优势。

3.1 为什么选 OpenRLHF

特性OpenRLHFHuggingFace TRLVerl
分布式架构Ray + vLLMAccelerateRay
支持算法PPO/REINFORCE++/GRPO/DPO 等PPO/DPO/GRPO 等PPO/GRPO 等
多轮 Agent✅ 原生支持❌✅
自定义奖励函数✅ Python 文件直接传入✅✅
最大模型规模70B+70B+70B+
推理引擎vLLM(极快)无内置vLLM
RLVR 支持✅ 原生✅✅
异步训练✅❌✅

OpenRLHF 的核心优势在于 Ray + vLLM 的分布式架构——vLLM 负责高速生成(Rollout),DeepSpeed ZeRO-3 负责大模型训练,Ray 负责编排所有组件。

3.2 架构全景

OpenRLHF 训练架构

生成 rollout

打分

KL 约束

优势估计

权重同步

Actor Model
策略模型(被训练的 LLM)

vLLM Engine
高速推理引擎

Reward Model
奖励模型 / 自定义函数

Reference Model
参考模型(KL 约束)

Critic Model
价值模型(估计优势)

在后续模块 4 中,我们会逐层拆解每个组件的原理和使用方法。

3.3 OpenRLHF 版本基线

本系列使用 OpenRLHF v0.10.4(2026-06-08 发布),这是目前最新的稳定版本。关键特性:

  • Ray + vLLM 分布式架构:支持 70B+ 模型训练
  • Agent-Based 设计范式:单轮和多轮模式通过统一管道处理
  • 六种 RL 算法:PPO、REINFORCE++、REINFORCE+±baseline、GRPO、Dr. GRPO、RLOO,一个参数切换
  • Hybrid Engine:所有模型共存于同一组 GPU,通过 sleep mode 共享显存
  • 多轮 Agent 训练:通过 AgentInstanceBase 接口实现自定义多轮环境
  • 自定义奖励函数:直接传入 Python 文件实现 Reinforced Fine-Tuning
  • 异步训练:Rollout 与 Training 重叠执行
  • Off-Policy 校正:TIS / ICEPOP / Seq-Mask-TIS 处理精度差异

四、本系列学习路线图

4.1 七大模块总览

模块1
RL数学基础
8篇

模块2
LLM对齐基石
8篇

模块3
RLHF算法全景
8篇

模块4
OpenRLHF精讲
8篇

模块5
Agentic RL核心
9篇

模块6
高级训练技术
6篇

模块7
综合实战
3篇

每个模块都有明确的"毕业能力"——学完之后你能做到什么:

模块篇数主题毕业能力
101-08RL 数学基础理解 RL 核心数学,手写 PPO
209-16LLM 对齐基石用 SFT+RM 搭建 RLHF pipeline
317-24RLHF 算法全景选择和配置合适的 RLHF 算法
425-32OpenRLHF 精讲用 OpenRLHF 独立完成 RL 训练
533-41Agentic RL 核心设计和实现 Agentic RL 训练
642-47高级训练技术优化和调试生产级 RL 训练
748-50综合实战交付端到端 Agentic RL 项目

4.2 递进项目:AgentRL-Lab

贯穿全系列 50 篇,我们将构建一个递进式实战项目 AgentRL-Lab,从零开始逐步进化为完整的 Agentic RL 系统:

版本对应模块能力说明
v0.1模块 1手写 RL 算法(REINFORCE → PPO)
v0.2模块 2SFT + RM 训练 pipeline
v0.3模块 3RLHF 多算法对比实验框架
v0.4模块 4基于 OpenRLHF 的完整 RLVR pipeline
v0.5模块 5多轮 Agentic RL 训练环境
v1.0模块 7生产级 Agentic RL 系统

你不需要 GPU 集群就能跟随大部分内容——前期用经典 RL 环境(CartPole、GridWorld)学习算法,后期用小模型(Qwen3-4B)在单卡上跑通完整流程。需要大规模训练的章节会标注 GPU 要求。

4.3 阅读建议

读者类型建议
完全没学过 RL按顺序从第 01 篇开始,模块 1 是地基
有 RL 基础可跳过模块 1,直接从模块 2 开始
有 LLM 对齐经验可跳过模块 2-3,直接从模块 4 OpenRLHF 开始
想快速上手 Agentic RL先看模块 4-5,需要时回查前置内容

五、环境搭建

5.1 硬件要求

用途最低配置推荐配置
模块 1(经典 RL)任意 CPU,无 GPU普通笔记本即可
模块 2-3(小模型训练)16GB RAM8GB+ VRAM GPU
模块 4-7(OpenRLHF)单卡 A100 80G多卡 A100 / H100

💡 没有本地 GPU 的读者,可以使用 Google Colab(免费 T4 GPU)、AutoDL、阿里云 PAI 等云平台。

5.2 Python 环境安装

推荐使用 Miniconda 管理环境:

# 1. 创建虚拟环境
conda create -n agentic-rl python=3.10 -y
conda activate agentic-rl

# 2. 安装 PyTorch(以 CUDA 12.1 为例)
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121

# 3. 安装本系列核心依赖
pip install gymnasium[classic-control] matplotlib numpy

# 4. 安装 HuggingFace 生态(模块 2 开始使用)
pip install transformers accelerate datasets

# 5. 安装 OpenRLHF(模块 4 开始使用,需要 GPU)
# pip install openrlhf[vllm]

5.3 验证安装

创建一个 verify_env.py 文件,运行以下代码确认环境就绪:

"""
AgentRL-Lab 环境验证脚本
检查核心依赖是否正确安装
"""
import sys

def check_python():
    version = sys.version_info
    print(f"[1/5] Python 版本: {version.major}.{version.minor}.{version.micro}")
    assert version.major == 3 and version.minor >= 10, "需要 Python 3.10+"

def check_torch():
    import torch
    print(f"[2/5] PyTorch 版本: {torch.__version__}")
    print(f"      CUDA 可用: {torch.cuda.is_available()}")
    if torch.cuda.is_available():
        print(f"      GPU: {torch.cuda.get_device_name(0)}")
        print(f"      GPU 数量: {torch.cuda.device_count()}")

def check_gym():
    import gymnasium as gym
    print(f"[3/5] Gymnasium 版本: {gym.__version__}")
    # 创建一个简单的环境验证
    env = gym.make("CartPole-v1")
    obs, info = env.reset(seed=42)
    print(f"      CartPole 观测空间: {env.observation_space.shape}")
    print(f"      CartPole 动作空间: {env.action_space.n}")

def check_transformers():
    try:
        import transformers
        print(f"[4/5] Transformers 版本: {transformers.__version__}")
    except ImportError:
        print("[4/5] Transformers 未安装(模块 2 之前不需要)")

def check_numpy():
    import numpy as np
    print(f"[5/5] NumPy 版本: {np.__version__}")

    # 运行一个简单的矩阵运算
    a = np.random.randn(100, 100)
    b = np.random.randn(100, 100)
    c = a @ b
    print(f"      矩阵乘法验证: 输入{a.shape} × {b.shape} → 输出{c.shape}")

if __name__ == "__main__":
    print("=" * 60)
    print("AgentRL-Lab 环境验证")
    print("=" * 60)
    check_python()
    check_torch()
    check_gym()
    check_transformers()
    check_numpy()
    print("=" * 60)
    print("✅ 环境验证通过!你已准备好开始 Agentic RL 之旅。")
    print("=" * 60)

运行验证:

python verify_env.py

预期输出类似:

============================================================
AgentRL-Lab 环境验证
============================================================
[1/5] Python 版本: 3.10.14
[2/5] PyTorch 版本: 2.4.0
      CUDA 可用: True
      GPU: NVIDIA A100 80GB
      GPU 数量: 1
[3/5] Gymnasium 版本: 1.0.0
      CartPole 观测空间: (4,)
      CartPole 动作空间: 2
[4/5] Transformers 版本: 4.50.0
[5/5] NumPy 版本: 1.26.4
      矩阵乘法验证: 输入(100, 100) × (100, 100) → 输出(100, 100)
============================================================
✅ 环境验证通过!你已准备好开始开始 Agentic RL 之旅。
============================================================

5.4 一个快速体验:AgentRL-Lab 的第一个实验

在正式进入数学推导之前,先用一个 15 行代码的实验让你直观感受 RL 的本质——通过试错来学习:

"""
AgentRL-Lab v0.1 预览:随机策略 vs 学习策略的直观对比
用最简单的多臂老虎机问题展示 RL 的核心思想
"""
import numpy as np

class MultiArmedBandit:
    """多臂老虎机:RL 的最简模型"""
    def __init__(self, n_arms=5):
        # 每个臂的真实期望奖励(玩家不知道)
        self.true_values = np.random.randn(n_arms)
        self.n_arms = n_arms
        self.best_arm = np.argmax(self.true_values)

    def pull(self, arm):
        # 拉动臂,返回有噪声的奖励
        return self.true_values[arm] + np.random.randn() * 0.5

    def is_optimal(self, arm):
        return arm == self.best_arm


def random_strategy(bandit, n_steps=1000):
    """随机策略:每步随机选臂"""
    rewards = []
    optimal_count = 0
    for _ in range(n_steps):
        arm = np.random.randint(bandit.n_arms)
        reward = bandit.pull(arm)
        rewards.append(reward)
        if bandit.is_optimal(arm):
            optimal_count += 1
    return np.mean(rewards), optimal_count / n_steps


def epsilon_greedy_strategy(bandit, n_steps=1000, epsilon=0.1):
    """ε-贪心策略:90% 选最优,10% 探索"""
    q_values = np.zeros(bandit.n_arms)  # 估计值
    counts = np.zeros(bandit.n_arms)    # 拉取次数
    rewards = []
    optimal_count = 0

    for step in range(n_steps):
        # 探索 vs 利用
        if np.random.random() < epsilon:
            arm = np.random.randint(bandit.n_arms)  # 探索
        else:
            arm = np.argmax(q_values)                # 利用

        reward = bandit.pull(arm)
        counts[arm] += 1
        # 增量更新估计值:Q_new = Q_old + (R - Q_old) / n
        q_values[arm] += (reward - q_values[arm]) / counts[arm]

        rewards.append(reward)
        if bandit.is_optimal(arm):
            optimal_count += 1

    return np.mean(rewards), optimal_count / n_steps


if __name__ == "__main__":
    np.random.seed(42)
    bandit = MultiArmedBandit(n_arms=5)

    print(f"老虎机真实奖励值: {bandit.true_values.round(3)}")
    print(f"最优臂: 第 {bandit.best_arm} 个臂 (值={bandit.true_values[bandit.best_arm]:.3f})")
    print()

    # 随机策略
    avg_r, opt_rate = random_strategy(bandit, n_steps=2000)
    print(f"随机策略:        平均奖励={avg_r:.3f}, 最优臂选择率={opt_rate:.1%}")

    # ε-贪心策略(RL 的最基本思想)
    avg_r, opt_rate = epsilon_greedy_strategy(bandit, n_steps=2000, epsilon=0.1)
    print(f"ε-贪心策略(0.1): 平均奖励={avg_r:.3f}, 最优臂选择率={opt_rate:.1%}")
    print()
    print("💡 这就是 RL 的本质:通过试错和估计,学会做出更好的决策。")
    print("   后续 49 篇,我们将把这个思想扩展到 LLM 和 Agent 上。")

运行后你会看到类似输出:

老虎机真实奖励值: [ 0.497  0.785 -0.235  1.464  1.579]
最优臂: 第 4 个臂 (值=1.579)

随机策略:        平均奖励=0.818, 最优臂选择率=20.0%
ε-贪心策略(0.1): 平均奖励=1.451, 最优臂选择率=90.5%

💡 这就是 RL 的本质:通过试错和估计,学会做出更好的决策。
   后续 49 篇,我们将把这个思想扩展到 LLM 和 Agent 上。

ε-贪心策略只比随机策略多做了一件事——记住过去的经验并利用它——就把最优臂的选择率从 20% 提升到了 90%。这就是强化学习的核心力量。在后续文章中,我们把这个"记住经验并利用"的思想一步步升级到 PPO、GRPO,最终到 Agentic RL。


本篇小结

知识点核心内容
RL 进化史AlphaGo(游戏)→ ChatGPT(对齐)→ DeepSeek R1(推理)→ Agentic RL(多轮交互)
RLHF人类反馈 → 奖励模型 → PPO 优化,让 LLM 符合人类偏好
DPO绕过奖励模型,直接用偏好数据优化策略
GRPO去掉 Critic,用组内相对优势,适合推理任务
Agentic RL多轮交互中的 RL,训练能使用工具的智能体
OpenRLHFRay + vLLM 分布式 RLHF 框架,本系列主力工具(v0.10.4)
AgentRL-Lab贯穿全系列的递进项目,从 v0.1 进化到 v1.0

下篇预告

第 02 篇:马尔可夫决策过程 — 强化学习的数学语言
从五元组 (S, A, P, R, γ) 出发,建立 RL 的数学框架。我们将用 ChatGPT 对齐场景类比 MDP,让抽象的数学变得触手可及。


如果本篇内容对你有帮助,欢迎点赞收藏!有任何疑问,欢迎在评论区交流。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐