跳转至

P4-19.4 补充学习:强化学习后续分支地图

Section ID: P4-19.4 Version: v2026.07.24

副标题: DQN、PPO、RLHF 分别从强化学习的哪些问题意识中分化出来?

读完 P4-19.1 到 P4-19.3 之后,继续学强化学习时,很快就会遇到更多名字。

  • DQN
  • PPO, TRPO, A2C, A3C
  • safe reinforcement learning
  • offline reinforcement learning
  • domain randomization
  • RLHF, preference optimization

这些名字来自不同时代、不同瓶颈,但很容易一起涌进来。这一节不去学每个实现,而是集中整理为什么这些名字会分叉出来

这个补充学习 Section 不会再从头解释强化学习的基本定义。价值型强化学习的把手留在 P4-19.1,策略型强化学习的把手留在 P4-19.2,应用风险的把手留在 P4-19.3 与概念词汇表。这里做的,只是把后面出现的名字按谱系收一下。

本补充学习的范围

这一节回答下面这些问题。

  • 为什么 DQN 常被当作价值型强化学习最代表性的后续例子?
  • PPO、TRPO、A2C、A3C 想缓解策略型强化学习里的什么困难?
  • 为什么 safe RL、offline RL 会在现实应用语境里变成单独主题?
  • domain randomization 和 sim-to-real 问题是怎么连起来的?
  • 为什么 RLHF 会把一般强化学习问题和 LLM 对齐问题接起来?

RLHF 的详细训练流水线和对齐实践,会在 Part 5 再回来。

用补充学习:把 DQN、PPO、RLHF 放回强化学习的大流程里来读恢复的概念连接

  • 能把强化学习后续名字整理成四个分支:价值型扩展、策略型稳定化、现实约束强化、LLM 对齐连接。
  • 能说明 DQN 和 PPO 分别站在什么传统上。
  • 能说出 safe RL、offline RL、domain randomization 都连着现实里不能随便试这个问题。
  • 能理解 RLHF 不是把普通强化学习原样搬进 LLM,而是为了对齐问题重新变形过的后续分支。

先画一张大地图

下面这个表可以先抓住整体地图。

名字组 它主要在回答什么问题
DQN 怎样把价值型强化学习扩展到更大的状态空间?
PPO, TRPO, A2C, A3C 能不能直接学 policy,但又不要太不稳定?
safe RL, offline RL 在现实里,能不能减少危险或昂贵的 exploration?
domain randomization 能不能让 simulation 里学到的 policy 更稳地搬到现实?
RLHF, preference optimization 能不能通过人类偏好,让 LLM 输出更 desirable?

所以,这些后续算法名,不应读成更聪明的强化学习,而更应读成让强化学习在更宽现实约束下工作起来的分支

第一次看这张图时,最好不要只记名字,也一起记下最先坏掉的直觉是什么

最先坏掉的直觉 因此分出来的名字组
Q-table 装不下整个状态空间 DQN
直接更新 policy 太容易摇晃 PPO, TRPO, A2C, A3C
现实里不能自由 exploration safe RL, offline RL
simulation 成绩到了现实就保不住 domain randomization
人类偏好没法直接给成正确标签 RLHF, preference optimization

这一节也不要只列名字。哪怕都属于强化学习家族,它们想减掉的失败成本和现实约束也不一样,所以应该先写问题信号,再写名字。

名字组 最先出现的问题信号 为什么需要这个分支
DQN 单靠值表,状态空间太大了 为了把价值型直觉扩展到更大的问题
PPO, TRPO, A2C, A3C policy update 很容易摇晃 为了让策略调整更稳定
safe RL, offline RL 现实里不能随便试 为了减少失败成本和数据约束
domain randomization simulation 成绩一到现实就崩 为了缩小 sim-to-real gap
RLHF 人类偏好很难直接当正确标签 为了把人类反馈接到类似 reward 的信号上

先该找哪条后续分支

当后续名字变得很多时,先抓的不是名字,而是眼前先露出来的瓶颈是什么

最先露出的瓶颈 先想到的分支 为什么
状态空间太大,Q-table 直觉已经撑不住 DQN 系 中心问题是用 function approximation 扩展价值型视角
policy update 经常摇晃 PPO、TRPO、actor-critic 系 这会直接连到如何让直接学 policy 更稳定
现实里不能自由 exploration safe RL、offline RL 更急迫的是降低失败成本和数据约束
simulation 成绩在现实里保不住 domain randomization、sim-to-real 强化 需要先缩小部署环境差异
人类偏好必须作用到语言模型输出 RLHF、preference optimization 这里 alignment 与人类反馈解释比普通控制更居中

所以,找后续名字,不是在选哪个算法更有名,而是在先分:现在的瓶颈更像是状态表达、策略稳定化、现实约束,还是人类偏好接入。

为什么 DQN 总被单独拿出来说

P4-19.1 里的 Q-learning 很有直觉,但一旦状态和行动变大,表(table)就写不下所有值。DQN 就是在这个地方出现的。

也就是说,DQN 是一种不用表而改用函数近似器来表达 Q-value,从而处理更大状态空间的路径。

所以,DQN 不是全新哲学,而是价值型强化学习往更大问题扩展时最代表性的案例。

把这条流再写得紧一点,就是下面这样。

从 Q-learning 直觉里保留下来的东西 在 DQN 里改变的东西
仍然在问哪个行动的 value 更大 值不再由表表达,而改由近似器表达
仍然通过 value 比较来选行动 让更大的状态空间变得可处理
继续保留价值型视角 一旦引入神经网络等近似器,解释会变得没那么直观

所以,DQN 更适合被读成把价值型直觉搬到更大状态空间里的名字,而不是抛弃了价值型学习的名字

为什么 PPO 和 actor-critic 系这么常用

P4-19.2 里的策略型强化学习有一个优势:可以直接调行动方式。但它也容易摇晃。PPO、TRPO、A2C、A3C 这些名字,大多都在回应这个问题。

  • 希望 policy 不要一下子变太大
  • 希望学习信号不要忽上忽下
  • 希望 actor 与 critic 的分工能更稳定地工作
家族 入门式读法
TRPO, PPO 一条不想让 policy 一次晃太大的路线
A2C, A3C 一条想更实际地运营 actor-critic 结构的路线

所以,这些名字是对策略型强化学习在实践里容易摇晃的后续回答。

如果把它再读直接一点,就是下面这样。

最先看到的困难 后续家族想减掉什么
一次更新会把 policy 改得太大 update 幅度
reward signal 起伏太大 学习方差
想直接学 policy,但又舍不得完全丢掉 value 信息 actor 与 critic 分工的不稳定

因此,PPO、TRPO、A2C、A3C 虽然名字不同,但共享的方向都是:保留直接学 policy 的优点,同时别让它不稳定地崩掉

为什么 safe RL 和 offline RL 会变成单独主题

正如 P4-19.3 所说,现实里 exploration 本身就可能危险或昂贵。所以后来长出了两条单独分支。

  • safe RL:即使继续探索和改 policy,也要更严格处理风险约束
  • offline RL:少做新的探索,优先在已经收集好的数据里学 policy

这两条都来自同一个现实问题:我们不能想试什么就试什么

但把它们并在一起时,差异也要一起留下。

分支 最先想减少的风险 基本想法
safe RL 尝试过程中可能直接发生的风险 继续探索和学习,但加更严格约束
offline RL 新尝试本身带来的成本和风险 先在已有数据里学习

所以,两者都来自现实约束,但 safe RL 更接近还要试,但要更安全,offline RL 更接近少试,先用现成数据学

为什么 domain randomization 会和 sim-to-real 连起来

simulation 里学得好的 policy 到现实里失败,其中一个原因就是环境差异。domain randomization 可以被理解成:故意把 simulator 条件摇得更丰富一些,让 policy 对现实差异没那么脆弱。

它的核心想法就是:

如果没法完美复制现实,那就别让系统只在一种过于干净的模拟条件里学。

再具体一点,可以写成下面这样。

只贴着一种模拟条件去训练时 故意摇动条件时期待得到什么
policy 过度适应某一种光照、摩擦或延迟 希望得到对现实差异不那么敏感的 policy
在 simulator 里分数很高 希望降低现实里突然崩掉的机会

所以,domain randomization 更适合被读成不让学习器只看到过于干净世界的强化手段,而不是最大化 simulator 分数的技巧

为什么 RLHF 在这里重要,而且还要在 Part 5 再看

RLHF,reinforcement learning from human feedback,从名字上看像是强化学习的一条分支。但在 LLM 语境里,它并不是把普通的游戏或机器人控制问题直接搬过去。

  • 在 LLM 里,人类偏好和评价标准往往很难直接变成正确标签
  • 所以才出现了把人类反馈转换成类似 reward 的信号,再由此调整 policy 的流
  • 在这里,强化学习语言和 alignment 语言会碰到一起

所以,RLHF 虽然属于强化学习一般论的一部分,但因为它又属于 LLM 对齐这个单独语境,所以还必须在 Part 5 里再详细看一遍。

如果把它和一般强化学习问题并排,会更清楚。

比较点 一般控制问题里的强化学习 RLHF 主要处理的一边
行动对象 移动、控制、选择动作 文本输出 policy
和人类目标的连接 通过 reward 设计间接连接 更直接地把人类偏好反馈反映进去
为什么会单独变难 exploration 与环境反馈本身很难 偏好解释与 alignment 目标很难

所以,RLHF 不该只被读成LLM 也用了 RL,而应该被读成如何把人类反馈解释成类似 reward这个问题被推到台前的一条分支。

现在在 Part 4 先固定的东西 在 Part 5 再看的东西
RLHF 为什么会和强化学习谱系连起来 RLHF 在 LLM 训练流水线里处在什么位置
人类反馈可以被当成类似 reward 的东西 reward model、preference data、alignment procedure

案例与例子

案例 1. 当 DQN、PPO、RLHF 同时出现时,最先要分开什么

强化学习初学者找资料时,很容易在同一个位置连续碰到 DQN 的游戏表现、PPO 的策略稳定化、RLHF 的 LLM 对齐说明。人最先容易使用的标准,通常是最近常见的强化学习名字更强的新算法这种归法。

但这个标准很快就会露出限制。只按新旧或知名度把名字放在一起,为什么 DQN 会出现为什么 PPO 会被广泛使用为什么 RLHF 必须和普通控制问题分开读都会变模糊。实际上,这三个名字并不是因为都属于更好的强化学习才并排出现,而是因为它们分别回应了不同的瓶颈。

flowchart TD
  A["同时遇到 DQN、PPO、RLHF"]
  B["先问最先出现的瓶颈是什么"]
  C["状态空间太大"]
  D["策略更新不稳定"]
  E["输出必须由人类偏好引导"]
  F["按 DQN 分支去读"]
  G["按 PPO 或 actor-critic 分支去读"]
  H["按 RLHF 或偏好学习分支去读"]

  A --> B
  B --> C --> F
  B --> D --> G
  B --> E --> H
遇到的名字 人最先容易按什么标准归组 很快露出的限制 当前这一节要切换到的读法
DQN 著名的游戏强化学习算法 会遮住它为什么出现在价值型路线里 把它读成 Q-table 在更大状态空间里撑不住之后的分支
PPO 表现很强的新 RL 算法 会遮住策略稳定化才是中心问题 把它读成减少 policy update 摇晃的分支
RLHF 把强化学习接到 LLM 上的名字 会把人类偏好与 alignment 问题抹掉 把它读成人类反馈像 reward 一样接进来的对齐分支

如果把这个案例压成 handoff memo,可以写成下面这样。

遇到的名字 先要读的问题意识 下一步要确认的连接
DQN 价值型方法是怎样被扩到更大状态空间的? function approximation 与神经网络连接
PPO policy update 是怎样被做得更不摇晃的? actor-critic 与策略稳定化
RLHF 人类反馈是怎样接到类似 reward 的信号上的? Part 5 的 alignment 与 preference optimization

同一个地方名字越多,越要先记最先出问题的是什么,而不是只记它在算什么。这个案例里真正要确认的结果,也不是我知道 DQN、PPO、RLHF 这几个名字了,而是我看到这些名字时,最先想到的瓶颈问题有没有变得不同。这个补充学习的目的,也正是把这种分叉感固定下来。

练习与示例

这次练习把重点放在:不是把后续强化学习名字当成算法名背诵,而是把它们重新读成瓶颈与分支

问题场景:

  • 当 DQN、PPO、offline RL、RLHF 这些名字一起出现时,它们很容易都被看成更好的强化学习

输入(input):

  • 四种最先露出的瓶颈
  • 对应这些瓶颈的后续分支候选

期待输出(output):

  • 一张先该查哪条分支的对应表

要检查的概念:

  • 后续算法名首先该按它是从什么瓶颈里长出来的来读,而不是按知名度来读
  • 价值型扩展、策略稳定化、现实约束强化、LLM 对齐连接是彼此不同的分支
最先露出的瓶颈 容易仓促贴上的名字 更该先对应的分支
状态空间太大,Q-table 已经撑不住 PPO DQN 系
policy update 太摇晃 DQN PPO、TRPO、A2C、A3C
现实里没法做很多新 exploration RLHF safe RL、offline RL
人类偏好必须作用到语言模型输出 DQN RLHF、preference optimization

同样的判断,也可以用一个很小的向量比较来确认。下面的代码会给每条后续分支设置一个问题轴分数向量,然后用 cosine_similarity 找出和当前瓶颈最接近的分支。这个例子不是要用这些数字证明研究谱系,而是把“先看瓶颈,再看名字”的习惯变成一次可运行的小检查。

import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity

axes = ["state_space", "policy_stability", "real_world_constraint", "human_preference"]
branches = pd.DataFrame(
    [
        [0.95, 0.10, 0.05, 0.05],
        [0.20, 0.95, 0.10, 0.05],
        [0.10, 0.25, 0.95, 0.05],
        [0.05, 0.25, 0.20, 0.95],
    ],
    index=["DQN", "PPO", "offline_RL", "RLHF"],
    columns=axes,
)

bottlenecks = pd.DataFrame(
    [
        [1.00, 0.10, 0.10, 0.00],
        [0.10, 1.00, 0.20, 0.10],
        [0.10, 0.20, 1.00, 0.10],
        [0.00, 0.20, 0.10, 1.00],
    ],
    index=[
        "huge_state_space",
        "unstable_policy_update",
        "cannot_explore_online",
        "human_preference_feedback",
    ],
    columns=axes,
)

scores = cosine_similarity(bottlenecks, branches)
score_table = pd.DataFrame(scores, index=bottlenecks.index, columns=branches.index)

for bottleneck, row in score_table.iterrows():
    best_branch = row.idxmax()
    print(bottleneck, "->", best_branch, "score=", round(row[best_branch], 3))

运行结果如下。

1
2
3
4
huge_state_space -> DQN score= 0.998
unstable_policy_update -> PPO score= 0.989
cannot_explore_online -> offline_RL score= 0.997
human_preference_feedback -> RLHF score= 0.992

这个输出不是要做一个 DQN 永远是答案 之类的自动分类器。它说明的是:如果先把瓶颈写成 状态空间策略稳定性现实约束人类偏好 这些轴,就会更容易判断该先查哪条后续分支。

直接判断一下

看下面这些观察,先选哪种解释更安全。

观察 仓促结论 更安全的解释
DQN 和 PPO 都很常被提起 它们都是同一种性能升级 一个是价值型扩展,一个是策略稳定化路线
offline RL 会单独分出来 只是因为数据不够才有这个名字 它直接连着现实里不能做很多新探索的约束
RLHF 出现在强化学习列表里 是把普通控制问题里的 RL 原样搬进 LLM 应该把它重新读成把人类偏好像 reward 一样接进去的对齐问题

这张表的目的不是背名字,而是养成一种习惯:立刻先分最先露出的瓶颈是什么,以及因此先该看哪条分支

检查清单

  • 能不能说明 DQN 是把价值型强化学习扩展到更大状态空间的一条路线,而 PPO、TRPO、A2C、A3C 是试图减少策略型强化学习不稳定性的路线?
  • 能不能说明 safe RL、offline RL、domain randomization 都是因为现实约束与部署风险才长出来的分支?
  • 能不能说明 RLHF 是强化学习和 LLM 对齐相遇的地方?
  • 当很多名字一起出现时,是否已经养成先问这个名字是从什么瓶颈里长出来的的习惯?

来源与参考资料