策略训练流程
策略训练将已定义的任务、网络和优化算法组织成可重复执行的过程。本篇以 PPO 训练为例,说明从任务验证到采样、更新和保存的完整流程。安装命令与启动脚本属于框架实践;以下伪代码仅表达通用职责。
1. 训练初始化与配置解析
Section titled “1. 训练初始化与配置解析”启动前应保存最终生效的配置,而不仅是手写配置文件。继承、默认值和命令行覆盖可能共同决定实际运行参数。
| 初始化对象 | 核对内容 |
|---|---|
| 模型与场景 | 机器人版本、关节顺序、初始姿态、地面和接触 |
| 任务接口 | 观测与动作维度、缩放、控制周期、指令和奖励 |
| 网络 | Actor 与 Critic 输入、动作分布、历史或循环状态 |
| 训练器 | 采样长度、批量划分、优化器、随机种子 |
| 输出目录 | 配置快照、日志、检查点及实验标识 |
创建环境后先执行重置,检查首帧观测。网络能够接受相应维度,只能证明形状兼容,还应检查各观测段的数值、来源和坐标系。
2. 并行轨迹采样与数据存储
Section titled “2. 并行轨迹采样与数据存储”设环境数为 ,每个环境采样 个控制步,则一轮获得 条转移。以前文 45 维观测、12 维动作为例,取 、,得到:
| 数据 | 示意形状 | 用途 |
|---|---|---|
| Actor 观测 | 重建采样时的策略输入 | |
| 采样动作 | 计算同一动作的新策略对数概率 | |
| 旧对数概率 | 计算 PPO 概率比,动作维已求和 | |
| 奖励与价值估计 | 各为 | 构造优势与回报目标 |
| 回合边界 | 按接口保存相应标志 | 控制自举、递推与隐藏状态重置 |
| Critic 输入 | 当输入不同时,单独保存 |
末端自举所需信息也要保留。它可能是额外的末帧输入,也可能由框架在处理边界时计算为价值或奖励修正,不能仅靠上述形状推断数据已完整。
采样阶段通常关闭梯度记录,避免把整段仿真交互保留为反向传播图。收集结束后,以固定的采样数据执行更新。模型处于评估模式与关闭梯度是两个不同操作,具体设置应与网络中的归一化等模块相适应。
3. 优势计算与参数更新
Section titled “3. 优势计算与参数更新”完成一段采样后,先按回合边界计算优势和回报目标,再按小批量组织更新。对无记忆的前馈网络,可以将时间维与环境维展平并打乱;循环网络则需要保留序列、初始隐藏状态和有效位置掩码,不能逐帧任意打乱。
一轮数据可以重复使用若干个 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 在这里概括奖励、结束标志、后续输入和必要的回合末信息;它不是现成的数据类型。循环策略还需显式管理隐藏状态。
4. 分阶段验证与训练扩展
Section titled “4. 分阶段验证与训练扩展”| 阶段 | 主要内容 | 完成标准 |
|---|---|---|
| 环境验证 | 少量环境,零动作或受控小动作 | 模型、接口和重置符合任务定义 |
| 短程训练 | 执行采样、更新、记录与保存 | 损失与状态有限,参数发生预期更新,检查点可读取 |
| 策略回放 | 载入检查点,执行固定指令序列 | 推理链路完整,能观察行为和误差 |
| 规模扩展 | 增加环境或训练预算 | 资源使用可接受,采样与更新配置重新核对 |
| 周期评估 | 固定评估条件比较检查点 | 具备选择策略的依据,而非只保留最后一次保存 |
短训练用于验证流程,不要求策略已经学会稳定行走。需要区分“闭环可运行”和“策略达到任务标准”两个完成条件。
增加环境数会改变采样批量和可能的梯度更新安排。应先明确保持的是总转移数、小批量大小还是每轮更新次数,再修改配置。
5. 训练监测与异常定位
Section titled “5. 训练监测与异常定位”| 异常现象 | 优先检查内容 |
|---|---|
| 状态、动作或损失出现 NaN/Inf | 定位最早出现异常的环节,检查模型、数值范围和梯度 |
| 回合始终很短 | 结束原因、初始穿透、关节映射、控制参数 |
| 总奖励变化但跟踪未改善 | 指令分布、奖励分项贡献和评估条件 |
| KL 突增或价值损失明显跳变 | 学习率、更新次数、奖励尺度、归一化状态及恢复设置 |
| 训练回放差异较大 | 动作采样方式、噪声、随机化、历史初始化和归一化 |
| 训练吞吐下降 | 仿真与优化耗时、渲染、记录频率和资源占用 |
异常分析应从最早偏离预期的数据开始。奖励或学习率调整无法修复错误的关节索引,也无法补足丢失的回合末观测。
6. 检查点保存与推理验证
Section titled “6. 检查点保存与推理验证”训练检查点通常服务于继续优化,推理产物服务于执行策略,两者内容不一定相同。保存后应实际加载一次,验证模型结构、输入处理和输出接口。
对于同一组原始输入,分别通过训练端推理路径和导出端路径计算动作,比较处理后的结果;如使用历史、估计模块或循环状态,也应纳入比较。允许的数值误差应结合精度和后端确定,不能只检查文件存在。
这类仿真与推理验证不代表已完成实机迁移,后者需要单独处理状态来源、执行差异和物理条件。
为一次短程训练制定记录表,包含环境数、采样长度、总转移数、更新次数、输出目录和回放结果。再检查一次人工触发的重置是否同时影响轨迹边界和策略历史。
完成标准是能够重现“初始化 → 采样 → 更新 → 保存 → 载入回放”的流程,并解释每一步产出的数据。首次采用 mjlab 时,可以用同一份记录表整理实测结果,具体操作参考官方文档,本站此处不提供未经验证的启动命令。