强化学习(reinforcement learning,RL)实验失败时,应先检查任务定义、隐藏任务、训练分布、回合边界、数据管线和评估协议,完成这些基础核对后再调整优化器。本文把现有常青教程与 Obsidian 中两份关于开放世界强化学习、元强化学习和预训练感知的历史笔记合并,重新按一手资料核验。它侧重跨框架仍然成立的推理与检查方法;工具链接最后核验于 2026-08-08。

算法之前,先写清实验规范

深度 Q 网络(Deep Q-Network,DQN)、软演员—评论家(Soft Actor-Critic,SAC)、近端策略优化(Proximal Policy Optimization,PPO)、基于模型的强化学习、离线强化学习和元强化学习属于不同方法族。算法优化指定的回报,研究目标可能涉及安全、完成时间、泛化、交互成本或多个竞争指标。奖励、评估指标和资源预算需要把研究目标落实到实验中,否则训练可能优化错误的代理目标。

我会在实现算法前固定一页实验规范:

部分 必须回答的问题
决策过程 观测、动作、奖励、终止、时间尺度和随机性分别是什么?
任务分布 训练、验证、测试任务怎样产生,哪些因素被刻意留出?
资源预算 环境步数、真实交互、墙钟时间、算力和调参次数如何计入?
评估单位 以回合、任务、随机种子还是完整训练运行作为独立样本?
基线 随机策略、任务专用强基线、相邻方法和理想化上界分别是谁?
失败条件 崩溃、超时、无效动作、数值异常和缺失结果怎样处理?

这份规范明确结论需要哪些证据,其中的约束也用于指导后续方法选择。

先定义决策问题

MDP、POMDP 与智能体能看到什么

马尔可夫决策过程(MDP)通常写作 $(\mathcal{S}, \mathcal{A}, P, R, \gamma)$。在时刻 $t$,环境处于状态 $S_t$,智能体选择动作 $A_t$,环境再根据转移过程给出下一状态和奖励。折扣回报为

\[G_t = \sum_{k=0}^{\infty} \gamma^k R_{t+k+1}.\]

马尔可夫性质是对所选状态表征的要求:给定该表征和动作后,下一状态与奖励的条件分布不再依赖更早的历史。最新一帧传感器读数未必满足这个条件。如果单幅画面不能反映速度,带延迟的执行器依赖先前指令,或者对手拥有私有信息,那么观测通常只是状态的局部视图,问题更适合描述为部分可观测马尔可夫决策过程(POMDP)。

选择算法前,先明确写下:

  1. 决策时可用的观测,包括单位和边界;
  2. 动作空间及其可行性约束;
  3. 转移时序——动作何时生效,结果何时被观测;
  4. 奖励,以及它试图代表的真实目标;
  5. 终止状态、外部截断、折扣率或有限时域。

如果最新观测不足,应有依据地加入历史窗口、循环状态、状态估计器或信念状态。不能指望更大的前馈网络恢复从未进入观测的信息。

长期适用的基础材料仍是 Sutton 与 Barto 的 Reinforcement Learning: An Introduction,其中的定义比特定框架教程更稳定。

状态可能混入了未知任务

“环境给出的向量”不自动等于充分状态。若相同观测在不同隐藏规则、目标或动力学下需要不同动作,智能体面对的其实是部分可观测问题。元强化学习使这个问题更明显:智能体需要从少量交互推断当前任务,再据此控制。PEARL把任务推断与控制分开,用概率上下文变量表达任务不确定性。任务表征应解释“为什么同一观测在这次任务中需要另一种行为”,并保留与行为选择有关的任务差异。

离线数据还会把任务身份与采集策略混在一起。一个任务如果恰好由较强行为策略收集,编码器可能把“轨迹看起来更好”误认成任务身份。Robust Task Representations直接研究了这种任务—行为策略混淆,以及测试时行为策略分布变化下的稳健表征。

因此,状态与任务表征至少应接受三类反事实检查:

  1. 相同任务,不同行为策略:表征是否仍接近,策略是否仍能适应?
  2. 不同任务,相似轨迹质量:表征能否区分影响最优行为的因素?
  3. 历史顺序或上下文被打乱:性能变化来自任务信息、时间信息,还是单纯的数据规模?

二维投影中的聚类只能说明编码器产生了分组;证明它“学到了任务”还需要上述反事实检查。

回合边界属于模型定义

一次轨迹停止可能有两种不同原因:

  • 终止(termination):MDP 到达任务定义内的终止条件,例如成功、失败,或者属于任务本身的有限时域终点。
  • 截断(truncation):数据收集因 MDP 之外的条件停止,例如包装器的时间上限、模拟器中断,或外部安全监控器按设计在任务定义之外停止采集。如果越过安全边界本身就是任务定义中的失败,该事件应归为终止。

这个区别会改变自举目标。以单步价值目标为例:

\[y_t = R_{t+1} + \gamma \left(1-\mathbb{1}[\text{terminated}_t]\right)V(S_{t+1}).\]

外部截断通常需要重置环境,但它本身不应抹去后继价值。反过来,如果时间上限本来就是有限时域 MDP 的一部分,它属于终止;当剩余时间会影响转移规律时,还必须把剩余时间放进观测。Gymnasium 时间上限教程给出了当前接口下的操作性区分。

实现环境契约

有意识地使用当前 Gymnasium API

当前的 Gymnasium Env 接口将重置信息、终止和截断分开:

observation, info = env.reset(seed=seed)

while True:
    action = policy(observation)
    next_observation, reward, terminated, truncated, info = env.step(action)

    replay.add(
        observation,
        action,
        reward,
        next_observation,
        terminated,
        truncated,
    )

    if terminated or truncated:
        observation, info = env.reset()
    else:
        observation = next_observation

除非学习代码已经把二者转换成明确的自举掩码,否则应分别保存 terminated 和 truncated。把它们重新合并成旧式 done 标志,是造成价值目标偏差的常见方式。

学习前先验证语义

随机策略应能连续运行数千步,而不产生无效观测、非法奖励或矛盾的回合统计。至少为以下内容编写测试:

  • 观测的形状、数据类型、有限性、单位和声明边界;
  • 动作裁剪或拒绝逻辑,以及每个边界动作;
  • 在预期确定性的条件下,固定模拟器状态后的转移是否可复现;
  • 奖励分解,以及一条人工可算轨迹的累计回报;
  • 每一种终止和截断路径;
  • 包装器顺序,因为包装器可能改变观测、奖励和回合长度;
  • 向量化环境,尤其是各工作进程的重置和最终观测处理。

环境检查器可以发现接口错误。奖励是否描述了预期目标,需要另行检查。应保留一个具有已知解的微型确定性环境,作为学习代码的回归测试。

在固定任务之外先定义分布

单一固定关卡可以回答智能体是否记住一种解法,却很难回答它学到了多少可迁移能力。开放世界或程序生成环境把研究对象改成任务分布:目标、地图、对手、资源、规则组合和时程不断变化,训练集不可能枚举未来全部情况。

XLand 的开放式学习工作把任务宇宙本身作为研究对象,并指出在大量不可直接比较的任务中,衡量学习进展也是开放问题。Procgen则用程序生成关卡把训练效率与对未见关卡的泛化分开。它们共同说明:任务越开放,越不能只报告训练分布上的平均回报。

一个可解释的协议会先把任务空间拆成轴,再定义留出方式:

  • 组合留出:训练见过技能 A 和 B,但未见过两者的测试组合;
  • 参数外推:速度、规模、噪声或地形超出训练区间;
  • 规则变化:观测外观相似,但目标或转移机制改变;
  • 长时程变化:局部技能不变,完成目标所需的依赖链更长;
  • 行为策略变化:离线或元学习数据的采集分布发生改变。

评估至少分别报告训练分布、插值任务、明确留出的组合和诊断性探针。若任务生成器在训练中持续改变,还要保存生成器版本和采样权重;否则“更开放”只是无法复现的形容词。

长时程问题不等于简单增加折扣因子

长距离规划同时包含奖励延迟、成功行为链稀疏、早期动作影响很晚才显现,以及高层目标需要调用多个低层技能等问题。增大折扣因子只改变回报权重,不能自动创建可发现的子目标或可靠记忆。

我会把长时程能力分成三层检验:

  1. 技能层:导航、交互、躲避或资源获取等局部技能能否独立完成?
  2. 组合层:两个已学技能按新顺序连接时,错误发生在哪个接口?
  3. 计划层:中间奖励稀少时,智能体能否保持目标、恢复失败并选择替代路线?

分层策略、记忆模型、世界模型和序列建模都可能有帮助,但它们解决的瓶颈并不相同。截断时程、打乱历史、提供或移除子目标、替换低层技能等消融,可以避免把“模型更大”误解成“学会规划”。

根据约束选择学习或评估方法

算法名称应排在数据生成过程之后。动作类型会缩小选项,但交互成本、并行能力、部分可观测性、安全约束和是否已有日志数据往往更重要。

情境 合理的起始方法 主要成本或风险
小型且已知的有限 MDP 动态规划或表格型时序差分方法 状态空间增长
离散动作、有在线模拟器且转移可复用 DQN 家族等基于价值的离策略方法 探索与价值高估;经验回放假设
连续动作且环境交互昂贵 SAC、双延迟深度确定性策略梯度(Twin Delayed Deep Deterministic Policy Gradient,TD3)等离策略演员—评论家方法 组件耦合更多,且对尺度敏感
有大量并行模拟器,需要简单且经过验证的基线 PPO 等同策略策略梯度方法 旧策略数据难以复用,可能需要大量交互
只有固定日志,目标是学习新策略 采用与数据覆盖范围和部署约束匹配的离线强化学习方法 分布偏移和动作覆盖不足无法只靠优化修复
只有固定日志,目标是评估既有策略 采用与行为策略和覆盖假设匹配的离策略评估 不受数据支持的动作及未知行为概率会使估计不可识别或方差很高
存在可信模型,或模型可以被学习并验证 规划或基于模型的强化学习 模型偏差会沿虚构轨迹累积

这张表只提供工程起点的启发式总结。可从 DQN、TD3、SAC 与 PPO 的原始工作开始,再参考离线强化学习教程与综述和双重稳健离策略评估这一原始研究实例。迁移方法前,应先核对其假设和实验协议。Stable-Baselines3 算法指南可用于核对当前动作空间支持与实现细节。先采用一个成熟基线,并把预算控制在能够调试的范围。简单系统建立可信学习信号后,再加入循环结构、价值分布估计(distributional value estimation)、优先经验回放、辅助损失或模型学习。

同策略与离策略描述的是更新所用数据和生成数据的策略之间的关系。同策略方法把复用范围限制在与当前策略接近的数据;离策略方法可以复用旧数据,通常提高样本效率,但必须管理行为分布与当前目标之间的不匹配。这两个标签都不能推出某一族永远更稳定或更准确。

把奖励与尺度纳入实验设计

优化预期结果

稠密奖励可能降低信用分配难度。每一项塑形奖励都会改变容易优化的方向,也可能制造捷径。奖励劫持指智能体在书面目标下取得高分,却没有完成设计者预期目标的普遍失败模式。

可采用以下流程:

  1. 定义成功指标,并保留未作为训练奖励的独立指标;
  2. 用人工构造的良好、失败、停滞和对抗轨迹检查奖励;
  3. 分别记录每项奖励分量;
  4. 同时查看高回报轨迹与标量曲线;
  5. 在能破坏已知捷径的环境变化下评估;
  6. 如果违反安全约束不可接受,应采用动作屏蔽、安全盾、约束优化或独立监控等显式约束与运行时保护;软奖励惩罚只承担辅助作用。

势函数塑形在特定假设下具有策略不变性结论。形如

\[F(s,a,s') = \gamma\Phi(s') - \Phi(s)\]

的塑形项可以在改变学习信号的同时保持最优策略;任意的“进度奖励”并不会继承这一保证。该保证还要求一致处理回合边界:有限回合实现通常把终止状态的势函数设为零,而外部截断不能被悄悄当成终止状态。参见 Ng、Harada 与 Russell 的奖励变换论文。

明确观测、动作和奖励尺度

当特征尺度相差多个数量级时,许多常见函数近似器与优化配置会更难训练。应把预处理写进环境契约:

  • 用仅从训练数据获得的统计量标准化无界连续观测;
  • 用不引入任意距离的编码明确表示类别变量;
  • 条件允许时,令策略输出采用简单、对称的连续动作范围,再转换为执行器单位;
  • 显式保留裁剪并统计发生频率;
  • 即使学习器使用归一化或缩放后的奖励,也要记录原始任务回报。

改变奖励尺度、折扣率或动作变换会影响优化,有时也会改变实际目标,因此必须作为实验参数显式记录。

网络结构规则需要条件

卷积、池化和批归一化的适用性取决于观测与训练分布,应据此选择归纳偏置:

  • 当局部空间结构有意义时,卷积很有用;
  • 当被丢弃的位置信息确实无关时,池化才有帮助;需要精确坐标的任务可能因此受损;
  • 当样本相关、回放数据混合多代策略、批量较小,或者行动阶段与学习阶段的统计量不一致时,批归一化可能难以处理;如果能控制统计量和训练/评估模式,它仍然可以工作;
  • 只有当输入的历史确实包含消除部分可观测性所需的信息时,循环或注意力模型才会有帮助。

准确术语是“正交初始化(orthogonal initialization)”,它是一种可选的参数初始化方式,也不保证收敛。每次改变网络结构,都应在相同的环境步数、预处理、优化预算和种子协议下比较。

视觉预训练是一项需要测量的迁移假设

从像素学习控制会把大量交互花在感知上。预训练编码器可能降低这部分成本;不同预训练方法、数据和更新方式需要分别验证跨域价值。Pre-trained Vision Models for Control系统比较了多个控制域中的预训练方法、增强与特征层级;ATC把表征学习与策略学习解耦,并比较冻结编码器、多任务数据和时序对比目标;VC-1 的跨具身任务评估进一步说明,平均表现较强的视觉表征仍需逐个验证下游任务。

最低限度的预训练实验应在同预算下比较:

条件 编码器如何得到 训练时如何更新 主要识别对象
从零开始 随机初始化 与策略端到端更新 当前任务数据能学到什么
冻结预训练 外部或多任务数据 完全冻结 现成表征是否直接可用
微调预训练 同一预训练检查点 全部或分层更新 适配是否弥补域差异
冻结与在线特征融合 预训练分支加任务分支 分支独立或部分更新 通用感知与任务信息是否互补

四组条件应共享策略算法、环境步预算、动作输入、随机种子和评估任务。除了最终回报,还应报告早期样本效率、墙钟与显存成本、域外任务、任务推断稳定性和不同层特征的敏感性。冻结方式、增强、批量构成与非平稳数据会共同影响结论,迁移有效性需要完整对照实验支持。

把经验回放视为变化中的数据集

经验回放的前提是更新规则支持离策略数据,缓冲区容量需要权衡:

  • 覆盖性:保留稀有结果和状态空间的不同区域;
  • 新鲜度:避免已不相关的旧策略行为占据主导;
  • 内存与吞吐:存储图像或长序列可能成为瓶颈;
  • 序列完整性:循环方法可能需要连续片段和预热。

应测量数据年龄分布、奖励或终止事件频率及采样比。如果环境或任务发生变化,要给数据标注版本或清空缓冲区,否则学习器可能静默混合不兼容的转移过程。

优先经验回放(PER)使用时序差分误差等优先级采样转移,并用重要性权重减小采样偏差。原始 PER 论文描述的是覆盖整个训练过程的回放方案。PER 可能提高学习效率,但在奖励含噪、存在离群值、优先级陈旧或多样性降低时,高误差未必代表高价值。应以均匀回放为对照,记录有效样本权重,并调整优先级强度。

分离训练、选择与评估

训练曲线提供诊断证据,最终估计还需要区分三种环境用途:

  1. 训练环境收集更新数据并拟合归一化统计量;
  2. 验证环境选择检查点和超参数;
  3. 测试环境只用于最终报告的比较。

在需要一致的地方保持包装器和任务定义相同。评估使用训练阶段归一化统计量的冻结副本,运行期间不再更新;评估数据流与经验回放保持隔离。运行前就根据最终部署策略决定评估使用确定性动作、从随机策略采样,还是同时报告二者。

评估报告至少应包含:

  • 环境与包装器版本、代码版本、硬件和数值设置;
  • 环境交互次数及其它重要计算预算;
  • 多个独立训练种子及其各自的评估回合;
  • 各种子的回报与回合长度、失败、约束违反和任务专属指标;
  • 预先定义的检查点选择规则,以及同预算下的基线实现;
  • 区间估计或自助法不确定性,以及预先规定的聚合指标。

Deep Reinforcement Learning that Matters记录了实现和报告选择如何改变实验结论。Deep RL at the Edge of the Statistical Precipice说明少量运行的点估计为何脆弱,并倡导区间估计、性能剖面和稳健的聚合指标。PyTorch 也提醒,不同版本、平台以及 CPU 与 GPU 之间不能保证完全复现;其可复现性说明介绍了如何控制随机源,以及在调试收益值得付出性能代价时请求确定性算法。

分层调试

学习失败时,每次只检查一层:

  1. 环境:重放一条人工轨迹,验证每项观测、奖励分量、边界和指标。
  2. 数据:检查采样批量、自举掩码、动作范围、序列边界和回放数据年龄。
  3. 损失:用小张量验证目标,检查广播、目标网络停止梯度、符号、归约和重要性权重。
  4. 优化:记录梯度与参数范数、非数值、裁剪频率、熵或探索噪声,以及更新/数据比。
  5. 学习信号:先解决老虎机或微型确定性 MDP,再解决标准小环境,最后进入完整任务。
  6. 评估:让随机策略、固定动作、脚本策略和旧策略基线通过完全相同的评估器。

PyTorch 提供 gradcheck、自动微分异常检测和 torch.profiler。耐久诊断应使用断言和结构化日志;Python 的 print() 仅用于狭窄的局部检查。

把自我博弈作为种群评估

自我博弈会使数据分布移动,因为每次更新策略都会改变环境的一部分。只对战最新对手可能掩盖遗忘和循环。简单的“高等级策略压制低等级策略”阶梯假定了传递性,但许多博弈可能出现石头剪刀布式关系:$A$ 击败 $B$,$B$ 击败 $C$,而 $C$ 又击败 $A$。

应建立当前与历史检查点、固定脚本对手和独立训练种群之间的收益矩阵;报告角色或先后手不对称性,在可以计算时报告可利用度,并测试未参与训练的留出对手。训练时从种群或混合策略中采样对手,避免只对一个移动目标过拟合。Alpha-Rank是多智能体交互中进行种群级评估的一项研究实例。AlphaZero 展示了完全信息零和博弈中的成功自我博弈;将结论推广到其它环境时,仍需单独验证朴素“只对战最新策略”的效果,参见 AlphaZero 论文。

把工具库视为可替换仪器

截至 2026-08-08,可以从以下入口开始:

  • Gymnasium:环境接口与包装器;
  • PyTorch:可微模型、优化与诊断;
  • Stable-Baselines3:紧凑的参考实现和实验工具;
  • RLlib:分布式采样和多智能体工作负载;
  • ElegantRL:可供检查的另一实现来源。

记录确切的软件包版本,并依据其测试和文档验证行为。工具库可以提供正确接口,任务语义、奖励有效性、超参数预算和统计结论仍由实验者负责。长期有效的流程是:定义决策过程、测试环境、建立简单基线、检查数据、分离评估、量化不确定性,再增加算法复杂度。

一张研究检查表

在相信一条强化学习曲线之前,应确认:

  • 任务、状态、隐藏上下文和评估指标已分别定义;
  • 训练、验证和测试任务的生成与留出规则可复现;
  • 终止、截断和自举掩码的语义经过人工轨迹测试;
  • 长时程困难已分解为技能、组合与计划;
  • 预训练编码器有从零、冻结、微调或融合的同预算对照;
  • 奖励塑形没有未经检查地改变预期目标;
  • 回放容量、采样、年龄与行为分布均有记录;
  • 基线覆盖随机策略、任务专用强方法和相邻研究路线;
  • 每个任务和种子的曲线、失败与不确定性都保留下来;
  • 关键结论有能够推翻它的消融或分布外测试。

这张表用于在选择算法前澄清问题,并在曲线出现后继续检验结论。