跳转到内容

策略训练流程

策略训练将已定义的任务、网络和优化算法组织成可重复执行的过程。本篇以 PPO 训练为例,说明从任务验证到采样、更新和保存的完整流程。安装命令与启动脚本属于框架实践;以下伪代码仅表达通用职责。

启动前应保存最终生效的配置,而不仅是手写配置文件。继承、默认值和命令行覆盖可能共同决定实际运行参数。

初始化对象核对内容
模型与场景机器人版本、关节顺序、初始姿态、地面和接触
任务接口观测与动作维度、缩放、控制周期、指令和奖励
网络Actor 与 Critic 输入、动作分布、历史或循环状态
训练器采样长度、批量划分、优化器、随机种子
输出目录配置快照、日志、检查点及实验标识

创建环境后先执行重置,检查首帧观测。网络能够接受相应维度,只能证明形状兼容,还应检查各观测段的数值、来源和坐标系。

设环境数为 NN,每个环境采样 TT 个控制步,则一轮获得 B=NTB=NT 条转移。以前文 45 维观测、12 维动作为例,取 N=256N=256T=32T=32,得到:

数据示意形状用途
Actor 观测(32,256,45)(32,256,45)重建采样时的策略输入
采样动作(32,256,12)(32,256,12)计算同一动作的新策略对数概率
旧对数概率(32,256)(32,256)计算 PPO 概率比,动作维已求和
奖励与价值估计各为 (32,256)(32,256)构造优势与回报目标
回合边界按接口保存相应标志控制自举、递推与隐藏状态重置
Critic 输入(32,256,dV)(32,256,d_V)当输入不同时,单独保存

末端自举所需信息也要保留。它可能是额外的末帧输入,也可能由框架在处理边界时计算为价值或奖励修正,不能仅靠上述形状推断数据已完整。

采样阶段通常关闭梯度记录,避免把整段仿真交互保留为反向传播图。收集结束后,以固定的采样数据执行更新。模型处于评估模式与关闭梯度是两个不同操作,具体设置应与网络中的归一化等模块相适应。

完成一段采样后,先按回合边界计算优势和回报目标,再按小批量组织更新。对无记忆的前馈网络,可以将时间维与环境维展平并打乱;循环网络则需要保留序列、初始隐藏状态和有效位置掩码,不能逐帧任意打乱。

一轮数据可以重复使用若干个 epoch,但采样时的旧对数概率和价值目标保持固定。完成本轮更新后,重新用当前策略采样;不要把普通 PPO 的这一流程与长期经验回放混淆。

# 结构性伪代码:具体接口、边界处理和张量布局由框架决定。
actor_obs, critic_obs = reset_environment()
for iteration in training_iterations:
rollout.clear()
for step in range(steps_per_environment):
action, old_log_prob, old_value = sample_without_grad(
actor_obs, critic_obs
)
transition = environment_step(action)
rollout.store(actor_obs, critic_obs, action,
old_log_prob, old_value, transition)
actor_obs, critic_obs = transition.next_inputs
targets = compute_targets_with_boundaries(rollout)
for epoch in update_epochs:
for batch in batches(rollout, targets):
optimize_actor_and_critic(batch)
record_training_metrics()
save_if_due()

transition 在这里概括奖励、结束标志、后续输入和必要的回合末信息;它不是现成的数据类型。循环策略还需显式管理隐藏状态。

阶段主要内容完成标准
环境验证少量环境,零动作或受控小动作模型、接口和重置符合任务定义
短程训练执行采样、更新、记录与保存损失与状态有限,参数发生预期更新,检查点可读取
策略回放载入检查点,执行固定指令序列推理链路完整,能观察行为和误差
规模扩展增加环境或训练预算资源使用可接受,采样与更新配置重新核对
周期评估固定评估条件比较检查点具备选择策略的依据,而非只保留最后一次保存

短训练用于验证流程,不要求策略已经学会稳定行走。需要区分“闭环可运行”和“策略达到任务标准”两个完成条件。

增加环境数会改变采样批量和可能的梯度更新安排。应先明确保持的是总转移数、小批量大小还是每轮更新次数,再修改配置。

异常现象优先检查内容
状态、动作或损失出现 NaN/Inf定位最早出现异常的环节,检查模型、数值范围和梯度
回合始终很短结束原因、初始穿透、关节映射、控制参数
总奖励变化但跟踪未改善指令分布、奖励分项贡献和评估条件
KL 突增或价值损失明显跳变学习率、更新次数、奖励尺度、归一化状态及恢复设置
训练回放差异较大动作采样方式、噪声、随机化、历史初始化和归一化
训练吞吐下降仿真与优化耗时、渲染、记录频率和资源占用

异常分析应从最早偏离预期的数据开始。奖励或学习率调整无法修复错误的关节索引,也无法补足丢失的回合末观测。

训练检查点通常服务于继续优化,推理产物服务于执行策略,两者内容不一定相同。保存后应实际加载一次,验证模型结构、输入处理和输出接口。

对于同一组原始输入,分别通过训练端推理路径和导出端路径计算动作,比较处理后的结果;如使用历史、估计模块或循环状态,也应纳入比较。允许的数值误差应结合精度和后端确定,不能只检查文件存在。

这类仿真与推理验证不代表已完成实机迁移,后者需要单独处理状态来源、执行差异和物理条件。

为一次短程训练制定记录表,包含环境数、采样长度、总转移数、更新次数、输出目录和回放结果。再检查一次人工触发的重置是否同时影响轨迹边界和策略历史。

完成标准是能够重现“初始化 → 采样 → 更新 → 保存 → 载入回放”的流程,并解释每一步产出的数据。首次采用 mjlab 时,可以用同一份记录表整理实测结果,具体操作参考官方文档,本站此处不提供未经验证的启动命令。