跳转到内容

算法参数说明 ​

已经选定算法、需要确认参数如何填写或默认值是多少时,可以从本页查找。每个算法先列出适用场景、常用参数节选和调整顺序,完整参数表按需展开。尚未决定算法时,先看选择建模与控制算法。

填写参数与确认取值 ​

您要完成的任务可查询的算法
学习设备或系统的响应BC、REVIVE-P、ADM2
模仿历史操作或优化控制动作策略 BC、PPO、SAC
在线规划,或调整 PID 控制器MPC、前馈 PID、残差 PID

用阶段的 algorithm 选择算法,将调整项写入同一阶段的 hyperparameters。例如 PPO 的 rollout_horizon 直接放在 hyperparameters 下;REVIVE-P 的 bc.optimizer.lr 则依次写入 hyperparameters、bc、optimizer,最后设置 lr。验证规则单独写入 validation。

参数表中的值是算法默认值,可以作为首次训练的起点。换任务后,动作节点、奖励、数据覆盖与采样周期需要按业务确认。示例中的 inherit_from: venv 应替换为自己的世界模型阶段名。填写配置后,在任务目录执行下面的命令,config.yaml 替换为实际文件名:

bash
revive validate --config config.yaml --show-defaults

输出包含合并后的完整配置,可确认每个阶段真正使用的值。任务定义、常用调整与专项设置的阅读顺序见配置填写与调整顺序。

世界模型参数 ​

BC:拟合系统响应 ​

算法名称:venv.bc。通过监督学习拟合世界模型,可先建立单步预测基线,再评估多步训练。

例如冰箱温控中,用当前温度、制冷动作和门状态预测下一时刻温度。先检查稳定运行和开门片段的误差,再决定是否增加历史或多步训练。

使用条件说明
世界模型直接从数据训练
奖励函数不要求奖励函数
恢复训练支持完整检查点恢复

下面是阶段配置节选,不是完整任务配置。参数展示本算法默认值;将需要调整的项合入自己的阶段,并保留任务的图、数据、动作节点、奖励和依赖设置。

yaml
training:
  stages:
  - name: venv_bc
    algorithm: venv.bc
    hyperparameters:
      epochs: 100
      optimizer:
        lr: 0.001
      sequence_train:
        enabled: false

调整顺序

  1. 固定预测节点、数据划分和选模指标,建立可比较的结果。
  2. 根据训练与验证曲线调整学习率、批量和轮数。
  3. 单步预测稳定后,再评估多步联合训练及业务相关损失。

  • 单步误差较小仍需检查连续推演的误差积累。
  • 增加多步训练长度会提高显存占用与计算量,必要时降低批量。

查看 venv.bc 的完整参数与默认值

参数路径均相对于本阶段的 hyperparameters,点号表示 YAML 嵌套层级。

参数路径使用需求默认值说明
epochs常用调整100本阶段的最大训练轮数。启用早停或 patience 时,训练可能提前结束。
batch_size常用调整null本阶段的批大小。None 表示沿用 data.batch_size。课程训练可在各阶段分别设置,例如 H=1 时使用 4096、H=200 时使用 256。
optimizer.type常用调整adam优化器类型:adam | adamw。
optimizer.lr常用调整0.001基础学习率。过高可能引起训练震荡或发散,过低可能增加收敛所需轮数,可结合损失与验证曲线调整。
optimizer.weight_decay常用调整0.0001参数权重衰减(L2)系数。可与 dropout 联合使用,正则强度过大时可能导致欠拟合。
optimizer.scheduler常用调整cosine学习率调度器:none | step | cosine | exponential。
optimizer.lr_decay常用调整0.99step / exponential 调度的衰减因子。
optimizer.scheduler_interval专项设置epoch学习率的更新频率:epoch 表示每轮更新,update 表示每次参数更新后调整。update 仅支持 scheduler='cosine'。
optimizer.eta_min_ratio专项设置0.0cosine 调度的学习率下限,按 lr 的比例给出。仅 scheduler_interval='update' 有效。
loss常用调整nll主监督损失类型,如 nll / mse。
grad_clip常用调整50.0梯度范数裁剪阈值。0 表示关闭(个别算法另有自己的关闭语义)。
aggregation_mode专项设置dim_weighted多节点误差的汇总方式:dim_weighted 让每个维度权重相同,维度较多的节点贡献较大;node_mean 让每个节点权重相同。
node_weights常用调整{}按节点覆盖 venv 阶段的监督损失权重,默认全为 1.0。
target_nodes专项设置[]用于选择目标节点。BC 设置该项会采用策略训练方式;仅调整世界模型的监督目标时,请使用 venv_target_nodes。
venv_target_nodes专项设置[]世界模型参与损失计算的目标节点。可指定可微函数节点,例如用下一状态特征作为监督目标,让误差沿函数传回上游网络;不改变阶段的训练类型。
frozen_nodes常用调整[]显式冻结的节点,训练中不更新其参数。
rollout_horizon常用调整100训练时连续推演的步数,未单独设置验证长度时也用于验证。温控、机械运动等任务的误差积累速度不同,应根据本任务的多步误差曲线选择。可使用 revive suggest-rollout 获取建议;SAC 的训练推演长度使用 rollout_length。
reward任务定义null奖励函数的来源(文件路径 + 函数名)。策略类算法必填。
reward_supervision专项设置null把奖励作为监督信号一起训练的配置。
sequence_train.enabled常用调整false是否启用多步联合优化。关闭时仅进行单步监督训练;多步推演表现需要单独验证。
sequence_train.horizon常用调整100一次联合优化累加多少步的 loss(H)。venv.revive_p 下它同时也是判别器看到的序列长度。加大它会明显抬高显存与计算量,batch_size 通常要反向调。
sequence_train.train_mode常用调整tf多步训练的输入模式。tf 使用教师强制,每步输入真实值;rollout 使用自回归,每步输入前一步的预测值,用于在训练中考虑误差累积。
sequence_train.observed_keys专项设置[]rollout 模式下仍从数据读取的键。
sequence_train.forced_nodes专项设置[]rollout 模式下强制用真值的节点。
sequence_train.detach_after_bootstrap专项设置falsebootstrap 阶段之后切断梯度。
sequence_train.detach_history_override专项设置null覆盖历史窗口是否切断梯度;None 表示随算法默认。
sequence_train.step_mode专项设置rsample每步取值方式:rsample 可重参数采样 | sample | mode。
sequence_train.loss_aggregation专项设置meanH 步 loss 的聚合方式:mean | discounted。
sequence_train.loss_discount专项设置1.0discounted 聚合时的折扣率。
sequence_train.target_map专项设置{}预测键到监督目标键的映射覆写。
sequence_train.direct_sequence_supervision专项设置false直接在序列层面监督,而不是逐步监督。
sequence_train.initial_state_override专项设置null部署初始状态设置:state 指定状态变量,source 指定数据中的因果估计变量。替换预测起点后仍使用真实标签监督,并将初始偏差计入累计状态损失;null 表示不替换。
sequence_train.trend_loss_weight专项设置0.0趋势项损失权重,0 表示关闭。
sequence_train.trend_loss_sample_minutes专项设置5.0趋势项的采样间隔,单位分钟。
sequence_train.trend_loss_half_life_minutes专项设置30.0趋势项的半衰期,单位分钟。
sequence_train.integrated_velocity_loss_weight专项设置0.0长时位移目标的权重。指定节点被当作速度向量:预测与目标先还原到原始量纲,选中分量的误差沿时间积分,归一化后的位移误差再与基础序列损失混合。0 表示关闭。
sequence_train.integrated_velocity_node专项设置null被当作速度向量的节点。
sequence_train.integrated_velocity_dims专项设置[]该节点的哪几维参与积分。
sequence_train.integrated_velocity_dt专项设置0.1积分步长。
sequence_train.integrated_velocity_scales专项设置[]各维的归一化尺度。
sequence_train.batches_per_epoch常用调整null每轮抽取 batch_size × batches_per_epoch 个窗口,在合法起点中有放回均匀抽样。null 表示每轮无放回遍历全部合法窗口。
sequence_train.sampling_replacement专项设置false窗口采样是否有放回。
sequence_train.objective专项设置null在原始单位下计算复合序列损失;null 时使用逐步归一化监督损失。可设置 type、node、dims、circular_dims、scales、dim_weights,以及用于累计变化的 displacement 子项。
sequence_train.state_noise专项设置null训练时向反馈到下一步的状态添加噪声,损失仍使用未加噪的预测计算,帮助模型学习从扰动中恢复。null 表示关闭,仅在 train_mode=rollout 时使用。scale 设置强度,keys 选择状态,unit_pairs 可指定 sin/cos 维度对,以旋转方式加噪并保持单位模长。
phases专项设置[]phase 级参数更新配置,仅 algorithm='bc' 时有效。

完整配置及使用条件见选择建模与控制算法。

REVIVE-P:改善连续推演 ​

算法名称:venv.revive_p。在监督世界模型基础上加入对抗训练,学习更接近真实数据的连续变化。

例如机器人单步关节状态预测较准,但连续运动时速度或姿态逐渐偏离。可在保留监督基线的基础上比较 REVIVE-P,检查多步误差及主要工况的变化。

使用条件说明
世界模型直接从数据训练
奖励函数不要求奖励函数
恢复训练支持完整检查点恢复

下面是阶段配置节选,不是完整任务配置。参数展示本算法默认值;将需要调整的项合入自己的阶段,并保留任务的图、数据、动作节点、奖励和依赖设置。

yaml
training:
  stages:
  - name: venv_revive_p
    algorithm: venv.revive_p
    hyperparameters:
      bc:
        optimizer:
          lr: 0.001
      adversarial:
        enabled: true
        ood:
          weight: 0.1

调整顺序

  1. 先关闭 adversarial.enabled,确认监督训练能够得到稳定的预测结果。
  2. 固定推演长度与选模指标,再启用对抗训练并比较误差。
  3. 从较小对抗权重开始,确认验证改善后再调整判别器和其他专项设置。

  • 判别器准确率较高不代表世界模型预测一定更好,应结合独立验证结果。
  • anchor_checkpoint 用于约束相对参考模型的变化,init_from_checkpoint 用于初始化权重,两者用途不同。

查看 venv.revive_p 的完整参数与默认值

参数路径均相对于本阶段的 hyperparameters,点号表示 YAML 嵌套层级。

参数路径使用需求默认值说明
epochs常用调整100本阶段的最大训练轮数。启用早停或 patience 时,训练可能提前结束。
batch_size常用调整null本阶段的批大小。None 表示沿用 data.batch_size。课程训练可在各阶段分别设置,例如 H=1 时使用 4096、H=200 时使用 256。
init_from_checkpoint专项设置null从一个已有 checkpoint 初始化本阶段的权重(venv.revive_p 的 bc 与 adversarial 两侧共用这个值)。None 表示随机初始化。
reward任务定义null奖励函数的来源(文件路径 + 函数名)。策略类算法必填。
reward_supervision专项设置null把奖励作为监督信号一起训练的配置。
bc.optimizer.type常用调整adam优化器类型:adam | adamw。
bc.optimizer.lr常用调整0.001基础学习率。过高可能引起训练震荡或发散,过低可能增加收敛所需轮数,可结合损失与验证曲线调整。
bc.optimizer.weight_decay常用调整0.0001参数权重衰减(L2)系数。可与 dropout 联合使用,正则强度过大时可能导致欠拟合。
bc.optimizer.scheduler常用调整cosine学习率调度器:none | step | cosine | exponential。
bc.optimizer.lr_decay常用调整0.99step / exponential 调度的衰减因子。
bc.optimizer.scheduler_interval专项设置epoch学习率的更新频率:epoch 表示每轮更新,update 表示每次参数更新后调整。update 仅支持 scheduler='cosine'。
bc.optimizer.eta_min_ratio专项设置0.0cosine 调度的学习率下限,按 lr 的比例给出。仅 scheduler_interval='update' 有效。
bc.loss常用调整nll主监督损失类型,如 nll / mse。
bc.grad_clip常用调整50.0梯度范数裁剪阈值。0 表示关闭(个别算法另有自己的关闭语义)。
bc.aggregation_mode专项设置dim_weighted多节点误差的汇总方式:dim_weighted 让每个维度权重相同,维度较多的节点贡献较大;node_mean 让每个节点权重相同。
bc.node_weights常用调整{}按节点覆盖 venv 阶段的监督损失权重,默认全为 1.0。
bc.target_nodes专项设置[]用于选择目标节点。BC 设置该项会采用策略训练方式;仅调整世界模型的监督目标时,请使用 venv_target_nodes。
bc.venv_target_nodes专项设置[]世界模型参与损失计算的目标节点。可指定可微函数节点,例如用下一状态特征作为监督目标,让误差沿函数传回上游网络;不改变阶段的训练类型。
bc.frozen_nodes常用调整[]显式冻结的节点,训练中不更新其参数。
bc.rollout_horizon常用调整100训练时连续推演的步数,未单独设置验证长度时也用于验证。温控、机械运动等任务的误差积累速度不同,应根据本任务的多步误差曲线选择。可使用 revive suggest-rollout 获取建议;SAC 的训练推演长度使用 rollout_length。
bc.sequence_train.enabled常用调整false是否启用多步联合优化。关闭时仅进行单步监督训练;多步推演表现需要单独验证。
bc.sequence_train.horizon常用调整100一次联合优化累加多少步的 loss(H)。venv.revive_p 下它同时也是判别器看到的序列长度。加大它会明显抬高显存与计算量,batch_size 通常要反向调。
bc.sequence_train.train_mode常用调整tf多步训练的输入模式。tf 使用教师强制,每步输入真实值;rollout 使用自回归,每步输入前一步的预测值,用于在训练中考虑误差累积。
bc.sequence_train.observed_keys专项设置[]rollout 模式下仍从数据读取的键。
bc.sequence_train.forced_nodes专项设置[]rollout 模式下强制用真值的节点。
bc.sequence_train.detach_after_bootstrap专项设置falsebootstrap 阶段之后切断梯度。
bc.sequence_train.detach_history_override专项设置null覆盖历史窗口是否切断梯度;None 表示随算法默认。
bc.sequence_train.step_mode专项设置rsample每步取值方式:rsample 可重参数采样 | sample | mode。
bc.sequence_train.loss_aggregation专项设置meanH 步 loss 的聚合方式:mean | discounted。
bc.sequence_train.loss_discount专项设置1.0discounted 聚合时的折扣率。
bc.sequence_train.target_map专项设置{}预测键到监督目标键的映射覆写。
bc.sequence_train.direct_sequence_supervision专项设置false直接在序列层面监督,而不是逐步监督。
bc.sequence_train.initial_state_override专项设置null部署初始状态设置:state 指定状态变量,source 指定数据中的因果估计变量。替换预测起点后仍使用真实标签监督,并将初始偏差计入累计状态损失;null 表示不替换。
bc.sequence_train.trend_loss_weight专项设置0.0趋势项损失权重,0 表示关闭。
bc.sequence_train.trend_loss_sample_minutes专项设置5.0趋势项的采样间隔,单位分钟。
bc.sequence_train.trend_loss_half_life_minutes专项设置30.0趋势项的半衰期,单位分钟。
bc.sequence_train.integrated_velocity_loss_weight专项设置0.0长时位移目标的权重。指定节点被当作速度向量:预测与目标先还原到原始量纲,选中分量的误差沿时间积分,归一化后的位移误差再与基础序列损失混合。0 表示关闭。
bc.sequence_train.integrated_velocity_node专项设置null被当作速度向量的节点。
bc.sequence_train.integrated_velocity_dims专项设置[]该节点的哪几维参与积分。
bc.sequence_train.integrated_velocity_dt专项设置0.1积分步长。
bc.sequence_train.integrated_velocity_scales专项设置[]各维的归一化尺度。
bc.sequence_train.batches_per_epoch常用调整null每轮抽取 batch_size × batches_per_epoch 个窗口,在合法起点中有放回均匀抽样。null 表示每轮无放回遍历全部合法窗口。
bc.sequence_train.sampling_replacement专项设置false窗口采样是否有放回。
bc.sequence_train.objective专项设置null在原始单位下计算复合序列损失;null 时使用逐步归一化监督损失。可设置 type、node、dims、circular_dims、scales、dim_weights,以及用于累计变化的 displacement 子项。
bc.sequence_train.state_noise专项设置null训练时向反馈到下一步的状态添加噪声,损失仍使用未加噪的预测计算,帮助模型学习从扰动中恢复。null 表示关闭,仅在 train_mode=rollout 时使用。scale 设置强度,keys 选择状态,unit_pairs 可指定 sin/cos 维度对,以旋转方式加噪并保持单位模长。
bc.phases专项设置[]phase 级参数更新配置,仅 algorithm='bc' 时有效。
adversarial.enabled任务定义true对抗侧总开关。false 时本算法逐比特退化为 venv.bc。
adversarial.start_epoch常用调整0对抗修正开始前的监督预热轮数。此期间仅执行 BC,判别器不更新。
adversarial.interleave专项设置epoch对抗步插在哪个粒度:epoch(整个 BC epoch 之后做一次)或 minibatch(每个监督 minibatch 之后各一次)。minibatch 与 bc.phases 互斥。
adversarial.rollout.horizon常用调整100对抗 rollout 的自回归步数,决定复合误差被暴露到多深。
adversarial.rollout.batch_size常用调整1024对抗 rollout 的片段数。与监督批大小无关,单独占显存。
adversarial.rollout.init专项设置expertrollout 初值来源:expert(从专家片段起步)。
adversarial.rollout.anchor专项设置freerollout 的锚定方式:free(自由推演)。
adversarial.rollout.node_clip专项设置null对 rollout 中间量的裁剪半径;null 表示不裁。
adversarial.rollout.random_segment_sampling专项设置epoch_shuffle片段采样方式:epoch_shuffle(每 epoch 重排一次,保证一个 epoch 内不重样)。
adversarial.reference.horizon常用调整10参考损失的推演步数,用于计算 PCGrad 的 g_sup 方向与回溯检查值。该损失不直接更新参数,监督更新由 bc 配置控制。
adversarial.reference.nodes常用调整auto参考损失在哪些节点上求。auto = 由 DefaultsResolver 对着图填成该 stage 的监督目标节点。
adversarial.reference.objective专项设置null参考损失的目标函数;null 退化为逐步 MAE。通常直接复制 bc.sequence_train.objective,好让 g_sup 与监督主干同度量。
adversarial.anchor.enabled常用调整false是否启用冻结锚点 KL 信任域,限制模型偏离锚点的幅度。
adversarial.anchor.checkpoint常用调整null锚点权重来源;null 时退回 init_from_checkpoint。
adversarial.anchor.from_current常用调整false是否将当前模型复制并冻结为锚点。适用于复用当前或继承模型的课程训练,无需外部检查点。
adversarial.anchor.kl_terms专项设置fullKL 计算方式:full(含 scale)或 loc(仅均值偏移,以锚点 sigma 为度量)。
adversarial.anchor.kl_epsilon专项设置0.05KL 信任域半径,拉格朗日对偶的约束右端。
adversarial.anchor.kl_dual_lr专项设置1.0对偶变量 lambda 的上升步长。
adversarial.anchor.kl_lambda_init专项设置0.0对偶变量 lambda 的初值。
adversarial.anchor.kl_lambda_max专项设置50.0对偶变量 lambda 的上界,防止约束项吃掉整个梯度。
adversarial.anchor.kl_batch_size专项设置256估计 KL 用的片段数。
adversarial.anchor.kl_nodes专项设置null在哪些节点上算 KL;null = 全部可训练节点。
adversarial.anchor.kl_horizon专项设置null算 KL 的 rollout 步数;null = 跟随 reference.horizon。
adversarial.output_anchor.enabled常用调整false是否启用输出锚点:在输出空间而非参数空间上限制偏离,比 KL 信任域更直接。
adversarial.output_anchor.horizon专项设置10输出锚点比较的 rollout 步数。
adversarial.output_anchor.weight专项设置0.1输出锚点罚项在总损失里的系数。
adversarial.output_anchor.tolerance专项设置0.001输出偏离的容忍带,带内不罚。
adversarial.safe_projection.enabled常用调整truePCGrad 投影开关,用于约束对抗梯度与监督梯度的关系。关闭后不执行该投影约束;实际监督损失变化仍需结合回溯检查与验证指标判断。
adversarial.safe_projection.max_adv_to_sup_norm常用调整0.1投影后对抗步长相对监督步长的范数上限。这是信任域的主参数。
adversarial.safe_projection.step_size常用调整5e-05对抗步的基础步长;未设时取 stage 的 lr。
adversarial.safe_projection.guard_tolerance专项设置0.0001回溯护栏的容忍度:参考损失抬高超过它才算这一步不可接受。
adversarial.safe_projection.backtrack_factor专项设置0.5回溯时步长的收缩倍率。
adversarial.safe_projection.max_backtracks专项设置5单步最多回溯几次;用尽仍不可接受则放弃这一步。
adversarial.safe_projection.freeze_parameters专项设置[]对抗步不更新的参数名前缀列表。
adversarial.safe_projection.sup_source专项设置train参考梯度 g_sup 的语料:train 或 val。选 val 时留出集会把模型拉向自己。
adversarial.safe_projection.guard_source专项设置train回溯检查使用的数据集,可选 train 或 val。选择 val 时,验证集参与更新结果的接受判断,但不提供梯度;这与使用 sup_source=val 计算梯度的作用不同。
adversarial.safe_projection.adv_momentum专项设置0.0对投影后的方向执行 EMA,再次投影后进行更新,用于降低方向噪声。0.0 表示关闭。该参数控制方向平滑,不直接设置步长。
adversarial.safe_projection.adaptive.enabled专项设置false任务级自适应信任域。关闭时保持历史的 weight×step_size×ratio 算术。注意它的无量纲基准是一个 BC epoch 的参数位移,ratio 需按任务重新标定。
adversarial.safe_projection.adaptive.initial_update_ratio专项设置0.01自适应比率的初值。
adversarial.safe_projection.adaptive.min_update_ratio专项设置1e-05自适应比率的下界。
adversarial.safe_projection.adaptive.max_update_ratio专项设置0.5自适应比率的上界。
adversarial.safe_projection.adaptive.growth_factor专项设置2.0连续被接受后比率的放大倍率。
adversarial.safe_projection.adaptive.shrink_factor专项设置0.5被护栏否决后比率的收缩倍率。
adversarial.safe_projection.adaptive.full_accept_patience专项设置3连续多少次「不回溯即被接受」才放大比率。
adversarial.safe_projection.adaptive.persist_accepted_alpha专项设置true把被接受的比率写进续训态,使 resume 从同一个信任域继续而不是从初值重来。
adversarial.safe_projection.adaptive.meta_guard.enabled专项设置false交叉验证式元护栏:把片段分折,用留出折判断这一步是否真的有益。要求 rollout.random_segment_sampling=epoch_shuffle。
adversarial.safe_projection.adaptive.meta_guard.folds专项设置5元护栏的分折数。折越多留出的那一折越小,「这一步是否有益」的判断越噪。
adversarial.safe_projection.adaptive.meta_guard.seed专项设置0元护栏分折的随机种子。
adversarial.coverage.enabled常用调整false覆盖估计器开关。开启后根据数据覆盖程度调整对抗权重,并随模型保存 OOD 检测器。
adversarial.coverage.feature_nodes常用调整auto覆盖估计器使用的特征节点。auto 由 DefaultsResolver 解析为决策流图的外部输入节点。启用 use_coverage_weight 时,节点列表必须与 ood.x_nodes 的内容和顺序一致。
adversarial.coverage.hidden_dims专项设置[256, 256]c_omega 网络的隐层宽度。
adversarial.coverage.use_spectral_norm专项设置truec_omega 是否用谱归一化约束 Lipschitz 常数。
adversarial.coverage.lr专项设置0.0003c_omega 的学习率。
adversarial.coverage.warmup_steps专项设置200c_omega 在参与加权之前先单独训练多少步。
adversarial.coverage.segment_batch专项设置64训练 c_omega 每步取多少片段。
adversarial.coverage.horizon专项设置nullc_omega 的片段长度;null = 跟随 ood.horizon。
adversarial.coverage.delta专项设置0.5覆盖判定的软阈值。
adversarial.coverage.alpha专项设置10.0覆盖分数到权重的映射陡度。
adversarial.coverage.hard_delta专项设置0.3覆盖判定的硬阈值,低于它一律视为未覆盖。
adversarial.coverage.refresh_freq专项设置10每多少个 epoch 刷新一次 c_omega。
adversarial.coverage.refresh_steps专项设置10每次刷新训练多少步。
adversarial.coverage.replay_ratio专项设置0.5刷新时来自重放池的样本比例。
adversarial.coverage.replay_size专项设置200000重放池容量(片段数)。
adversarial.coverage.probe_shift专项设置4.0探针负样本的平移幅度,用于标定覆盖分数的量纲。
adversarial.coverage.neg_mix.rollout专项设置0.4负样本里来自闭环 rollout 的比例。
adversarial.coverage.neg_mix.shuffle专项设置0.3负样本里来自时间打乱的比例。
adversarial.coverage.neg_mix.noise专项设置0.3负样本里来自加噪的比例。
adversarial.coverage.noise_scale_range专项设置[0.5, 4.0]加噪负样本的噪声尺度区间 [下界, 上界]。
adversarial.ood.x_nodes常用调整auto判别器 D(x, y) 的条件输入节点。auto = 由 DefaultsResolver 填成图的外部输入节点(即不由任何节点产出、也不是 next_/delta_ 派生的那些)。
adversarial.ood.y_nodes常用调整auto判别器要判真伪的输出节点。auto = 由 DefaultsResolver 填成该 stage 的监督目标节点。
adversarial.ood.hidden_dims专项设置[256, 256]判别器隐层宽度的缺省值;被 discriminator.hidden_dims 覆盖。
adversarial.ood.use_spectral_norm专项设置true判别器是否谱归一化的缺省值;被 discriminator 块覆盖。
adversarial.ood.discriminator.backbone常用调整step_mlp判别器骨架:step_mlp(逐步)、window_mlp(滑窗)或 gru(时序)。其余字段的适用骨架由 applies_to 指定。
adversarial.ood.discriminator.loss常用调整hinge判别器损失形状:hinge(历史默认,样本越过 margin 1 后梯度精确为 0)或 logistic(D 领先时仍给 G 保留可下降的分数场)。
adversarial.ood.discriminator.hidden_dims专项设置[256, 256]MLP 类骨架的隐层宽度。
adversarial.ood.discriminator.window专项设置8滑窗骨架一次看多少个时间步。
adversarial.ood.discriminator.hidden_size专项设置128GRU 隐状态宽度。
adversarial.ood.discriminator.num_layers专项设置1GRU 的堆叠层数,必须 >= 1。
adversarial.ood.discriminator.head_hidden专项设置64GRU 之上判别头的宽度。
adversarial.ood.discriminator.input_dropout专项设置0.0GRU 输入的 dropout 比例。
adversarial.ood.discriminator.use_spectral_norm专项设置true判别器线性层是否谱归一化。
adversarial.ood.inherit_discriminator常用调整false是否继承上一阶段的判别器权重、Adam 状态和累计更新次数。false 表示重新建立判别器;开启时需保留父阶段对应的检查点。
adversarial.ood.d_lr常用调整0.0001判别器 D 的学习率。它和生成侧的步长是两套:D 学得太快会让软门长期全开、而它给出的方向未必还对 G 有意义。
adversarial.ood.d_steps常用调整2每次对抗步之前先更新判别器几步。
adversarial.ood.d_grad_clip专项设置5.0判别器的梯度裁剪阈值。
adversarial.ood.horizon常用调整40OOD 扰动 rollout 的步数,决定对抗投放到多远的分布外。
adversarial.ood.perturb_mode专项设置init扰动注入方式:init(只扰初值)或 per_step(每次模型步前重采 processed-state 噪声)。
adversarial.ood.init_perturb常用调整1.0初值扰动的尺度,单位是 processed-state 的标准差。
adversarial.ood.perturb_scales专项设置{}按节点名逐项覆盖扰动尺度的开放映射;键是图里的节点名,未列出的用 init_perturb。
adversarial.ood.perturb_teacher_keys专项设置[]扰动 rollout 中由专家数据强制(teacher forcing)的节点。注意它会让正负样本的非生成器输入出现系统差异,此时 gate_source=gen_acc 不可信。
adversarial.ood.perturb_clip专项设置null扰动后状态的裁剪半径;null 表示不裁。
adversarial.ood.mismatch_ratio专项设置0.5负样本里「打乱配对」那一路的比例。
adversarial.ood.mismatch_loss_weight专项设置1.0打乱配对负样本在 D 损失里的权重。
adversarial.ood.generated_loss_weight专项设置1.0生成样本负样本在 D 损失里的权重。
adversarial.ood.conditional_warmup_epochs专项设置0前多少个 epoch 只用打乱配对训 D,不喂生成样本。
adversarial.ood.temporal_loss_weight专项设置0.0时间倒序负样本的权重。需要顺序敏感的骨架;step_mlp 不支持,使用时会报告错误。
adversarial.ood.gate_acc0专项设置0.55软门的准确率拐点:D 判别力低于它时对抗权重趋近 0。
adversarial.ood.gate_beta专项设置20.0软门的陡度:越大,判别力跨过 gate_acc0 那一刻对抗权重切换得越硬。
adversarial.ood.gate_chance_corrected专项设置false软门是否先把准确率减去 0.5 的随机基线再映射。
adversarial.ood.gate_source专项设置cond_acc软门读哪个准确率:cond_acc(真实 vs 打乱 y,G 不进入,避开 D 认出 OOD 输入的捷径)或 gen_acc(配对排序 mean(s_pos > s_gen),即 G 方向的真实来源)。生效读数逐 epoch 落在 ood_g_gate_acc。
adversarial.ood.weight常用调整0.1对抗项的基础权重,控制其相对监督目标的影响。需结合梯度比例与验证误差调整。
adversarial.ood.weight_schedule.enabled常用调整true对抗系数退火开关。关掉即恒定 weight。生效值逐 epoch 落在 ood_g_weight_effective。
adversarial.ood.weight_schedule.final_weight常用调整0.0退火终点。只准衰减:final_weight > weight 直接报错。
adversarial.ood.weight_schedule.shape专项设置linear退火形状:linear 或 cosine。
adversarial.ood.weight_schedule.zero_epoch常用调整null退到终点的 epoch 数(索引是 epoch - start_epoch)。null = 取本 stage 的 epochs,于是多段课程下每段各自归零再跳回起点,是锯齿不是一条全局直线。
adversarial.ood.use_coverage_weight常用调整true是否用覆盖估计器给对抗权重逐样本加权。开启时 coverage.feature_nodes 必须与 ood.x_nodes 逐项相同。
adversarial.ood.coverage_weight_aggregate专项设置masked_mean把逐时刻覆盖权重聚合成片段权重的方式:masked_mean 或 max。
adversarial.ood.g_gradient_scope专项设置pair对抗梯度回传的范围:pair(x 与 y 都回传)或 y_only(x 仍作为 D 的条件但 G 不经它反传)。
adversarial.ood.adv_direction专项设置gradient消融试验中的梯度方向设置。random 用等范数随机向量替换判别器方向,保留 PCGrad、裁剪、回溯与检查流程,用于评估判别器方向的作用。该选项用于诊断,不作为部署训练方案。
adversarial.ood.d_snapshots.enabled常用调整false判别器快照流,用于提供集成成员候选。续训 archive 保存完整训练状态且不包含判别器质量评分,因此两者分别管理。历史文件大小对比为 archive 约 27 MB/个、判别器快照约 264 KB/个。
adversarial.ood.d_snapshots.interval专项设置10保存判别器快照的轮数间隔。较大间隔可减少文件数量,并用于比较不同训练阶段的判别结果。
adversarial.ood.d_snapshots.warmup_epochs专项设置0前多少个 epoch 一律不存。
adversarial.ood.d_snapshots.min_cond_acc专项设置0.0条件判别准确率闸门(chance=0.5)。
adversarial.ood.d_snapshots.min_gen_acc专项设置0.0生成样本上的配对判别准确率阈值,随机水平为 0.5。用于评估判别器对生成输出的区分能力;cond_acc 使用真实数据构造正负样本,应与生成样本上的结果分别分析。
adversarial.ood.d_snapshots.min_updates专项设置0D 累计 SGD 步数下限。
adversarial.ood.d_snapshots.max_snapshots专项设置200保险丝:达到即停写并告警,不做环形淘汰。
adversarial.ood.d_snapshots.dir专项设置ood_discriminators快照相对 record 的保存目录。
adversarial.ood.d_snapshots.scores.enabled专项设置false为每份快照保存评分附加文件,使用同一批冻结数据计算判别器分数,以便比较不同成员。评分使用独立随机流,并在完成后恢复全局 RNG 状态;启用该功能不改变训练的随机数序列,训练结果保持逐比特一致。
adversarial.ood.d_snapshots.scores.expert_segments专项设置2048专家侧打分语料的片段数。2048 是分位表的下限(512 时分位表自身欠采样)。专家侧只要前向,几乎免费。
adversarial.ood.d_snapshots.scores.rollout_segments专项设置512rollout 评分数据的片段数。评分需实际执行 horizon 步,默认数量小于专家片段评分。
adversarial.ood.d_snapshots.scores.per_step专项设置true是否留逐时刻分数(float16);false 只留整段分数。
adversarial.ood.d_snapshots.scores.seed专项设置0语料与打分专用随机流的种子,与训练流隔离。
adversarial.ood.d_snapshots.scores.chunk专项设置256打分的前向分块,只影响显存占用。
adversarial.ood.d_snapshots.scores.inherit_corpus专项设置true沿课程继承冻结语料(复用 D 的那条 record 继承链),使跨段的成员分数可比。

完整配置及使用条件见选择建模与控制算法。

ADM2:学习多步状态变化 ​

算法名称:venv.adm2。直接学习不同预测步长下的状态增量,适合重点关注多步响应的建模任务。

例如温控系统对制冷动作存在延迟,您希望同时预测短期与更长时间范围的温度变化。先确认目标状态与驱动变量,再根据采样周期设置预测步长。

使用条件说明
世界模型直接从数据训练
奖励函数不要求奖励函数
恢复训练支持完整检查点恢复

下面是阶段配置节选,不是完整任务配置。参数展示本算法默认值;将需要调整的项合入自己的阶段,并保留任务的图、数据、动作节点、奖励和依赖设置。

yaml
training:
  stages:
  - name: venv_adm2
    algorithm: venv.adm2
    hyperparameters:
      max_adm_step: 2
      hidden_dim: 400
      batch_size: 1024

调整顺序

  1. 确认 target、drivers 与用于预测状态增量的节点。
  2. 根据目标时间范围调整 max_adm_step,再比较网络规模与批量。
  3. 固定数据划分,使用早停和质量条件选择模型。

  • ADM2 会替换目标动力学节点,开始训练前应通过配置与数据检查。
  • 增加 max_adm_step 会提高显存和时间开销,并改变训练的预测范围。
  • 数据在整个运行中统一划分;调整比例请使用 data.train_ratio,holdout_ratio 不单独重新划分数据。

查看 venv.adm2 的完整参数与默认值

参数路径均相对于本阶段的 hyperparameters,点号表示 YAML 嵌套层级。

参数路径使用需求默认值说明
epochs常用调整200本阶段的最大训练轮数。启用早停或 patience 时,训练可能提前结束。
node_weights常用调整{}按节点覆盖 venv 阶段的监督损失权重,默认全为 1.0。
target_nodes专项设置[]用于选择目标节点。BC 设置该项会采用策略训练方式;仅调整世界模型的监督目标时,请使用 venv_target_nodes。
venv_target_nodes专项设置[]世界模型参与损失计算的目标节点。可指定可微函数节点,例如用下一状态特征作为监督目标,让误差沿函数传回上游网络;不改变阶段的训练类型。
frozen_nodes常用调整[]显式冻结的节点,训练中不更新其参数。
loss常用调整nll主监督损失类型,如 nll / mse。
aggregation_mode专项设置dim_weighted多节点误差的汇总方式:dim_weighted 让每个维度权重相同,维度较多的节点贡献较大;node_mean 让每个节点权重相同。
reward任务定义null奖励函数的来源(文件路径 + 函数名)。策略类算法必填。
reward_supervision专项设置null把奖励作为监督信号一起训练的配置。
target常用调整autoADM2 动力学目标节点。auto 根据图的转移关系推导;可使用 revive validate --show-defaults 核对结果是否符合任务定义。
drivers常用调整auto循环动力学的驱动量,包括动作与外部输入。auto 使用目标节点输入并排除锚点;需核对实际影响系统动态的变量是否完整。
backend专项设置delta_last动力学参数化方式,当前仅支持 delta_last,并要求显式 delta_<source> 结构。旧 anchor-delta 与直接预测 next-state 模式已移除。
sampler_backend专项设置official_seq序列采样实现。official_seq 使用原 ADM2 的取样方式。
input_normalization专项设置raw_zscore动力学输入的归一化方式。raw_zscore 在原始量纲上按统计量执行 z-score,与图级 NormModule 的 min_max 转换分别配置。
rollout_aggregation专项设置candidate_mean多起点 rollout 的指标聚合方式,如 candidate_mean。
strict_state_update专项设置true是否采用严格状态更新路径,在每一步按转移约定重建状态。
optimizer.type常用调整adam优化器类型:adam | adamw。
optimizer.lr常用调整0.0003基础学习率。过高可能引起训练震荡或发散,过低可能增加收敛所需轮数,可结合损失与验证曲线调整。
optimizer.weight_decay常用调整0.0参数权重衰减(L2)系数。可与 dropout 联合使用,正则强度过大时可能导致欠拟合。
optimizer.scheduler常用调整none学习率调度器:none | step | cosine | exponential。
optimizer.lr_decay常用调整0.99step / exponential 调度的衰减因子。
optimizer.scheduler_interval专项设置epoch学习率的更新频率:epoch 表示每轮更新,update 表示每次参数更新后调整。update 仅支持 scheduler='cosine'。
optimizer.eta_min_ratio专项设置0.0cosine 调度的学习率下限,按 lr 的比例给出。仅 scheduler_interval='update' 有效。
batch_size常用调整1024本阶段的批大小。None 表示沿用 data.batch_size。课程训练可在各阶段分别设置,例如 H=1 时使用 4096、H=200 时使用 256。
n_starts常用调整2每个样本用于 any-step 推演的起点数。增加起点数可扩大候选覆盖,同时增加计算开销。
max_adm_step常用调整2any-step 训练的最大推演步数。增大该值会改变训练目标分布,并增加显存占用与训练时间。
hidden_dim常用调整400循环单元的隐藏维度,与 rnn_num_layers 共同影响模型容量、计算量和显存占用。
rnn_num_layers常用调整3循环网络层数。增加层数会改变模型容量和优化难度,需结合验证误差调整。
dropout常用调整0.0Dropout 概率,0 表示禁用,推理时自动关闭。
grad_clip常用调整50.0梯度范数裁剪阈值。0 表示关闭(个别算法另有自己的关闭语义)。
holdout_ratio专项设置0.2整个运行共享一次训练集与验证集划分。该值与 1 - data.train_ratio 不一致时,使用后者并输出警告;两者默认均对应 0.2 的验证占比。需要调整划分比例时设置 data.train_ratio。
patience常用调整25验证指标连续多少轮不改善就早停。
min_epochs专项设置1允许早停前至少完成的训练轮数。
max_val_batches专项设置64每次验证使用的最大批次数,用于控制验证开销。
fit_aux_nodes常用调整true是否在同一阶段使用 BC 训练辅助节点,例如策略节点和奖励头。关闭时需通过 exclude_nodes 显式声明不训练的节点,并检查对下游策略与奖励计算的影响。
exclude_nodes专项设置[]显式声明不参与辅助训练的节点。
aux_lr专项设置0.001辅助节点 BC 训练的学习率,与主干分开。
aux_weight_decay专项设置0.0辅助节点 BC 训练的权重衰减。
aux_loss_type专项设置nll辅助节点的监督损失类型,如 nll / mse。
reward_aux_weight专项设置0.0奖励辅助头在总损失中的权重,0 表示关闭该项训练。
reward_head_mode专项设置independent奖励头与主干的关系:independent 独立网络 / 共享主干。
reward_key专项设置reward数据中奖励变量的键名。
report_horizon专项设置20训练报告中 rollout 曲线的推演步数。
report_batches专项设置16计算训练报告指标时使用的批次数。
steps_per_epoch专项设置null每轮训练的优化步数;null 表示遍历完整训练集。
selection_interval专项设置0计算选模用 rollout 指标的训练轮数间隔,0 表示仅使用逐轮验证损失。
selection_report_batches专项设置4估计选模指标时使用的批次数。
quality_gate.max_onestep_mae常用调整null单步 MAE 上限。超过阈值时训练报告错误;null 表示不设置该规则。阈值应依据固定的独立验证条件确定。
quality_gate.max_rollout_mae常用调整null多步 rollout MAE 上限,用于检查闭环推演误差;规则与单步 MAE 上限一致。
quality_gate.min_uncertainty_auroc专项设置null不确定性排序能力(AUROC)的下限,同上。

完整配置及使用条件见选择建模与控制算法。

控制策略参数 ​

策略 BC:学习历史动作 ​

算法名称:policy.bc。使用数据中的动作监督策略节点,建立历史操作基线或为策略优化提供初始模型。

例如已有冰箱制冷控制记录,可以先学习原控制方式,比较相同温度与工况下的预测动作和历史动作。随后再评价 PPO 或 SAC 是否改善温度偏差与能耗。

使用条件说明
世界模型需要通过 inherit_from 指定已训练阶段
奖励函数不要求奖励函数
恢复训练支持完整检查点恢复

下面是阶段配置节选,不是完整任务配置。参数展示本算法默认值;将需要调整的项合入自己的阶段,并保留任务的图、数据、动作节点、奖励和依赖设置。

yaml
training:
  stages:
  - name: policy_bc
    algorithm: policy.bc
    inherit_from: venv
    hyperparameters:
      epochs: 100
      optimizer:
        lr: 0.001
      grad_clip: 50.0

调整顺序

  1. 确认动作节点、观测输入和所依赖的世界模型。
  2. 检查动作标签与观测的时间对齐,再调整学习率和训练轮数。
  3. 比较动作拟合误差及分布;需要改变控制目标时,再配置奖励并使用策略优化算法。

  • 策略 BC 需要已训练世界模型的阶段依赖。
  • 模仿历史动作不会自动优化新的业务目标;拟合效果需与实际控制效果分别评价。

查看 policy.bc 的完整参数与默认值

参数路径均相对于本阶段的 hyperparameters,点号表示 YAML 嵌套层级。

参数路径使用需求默认值说明
epochs常用调整100本阶段的最大训练轮数。启用早停或 patience 时,训练可能提前结束。
policy_nodes任务定义[]policy / controller 阶段负责输出动作的节点,必填;其余节点被冻结成环境模型。
target_nodes专项设置[]用于选择目标节点。BC 设置该项会采用策略训练方式;仅调整世界模型的监督目标时,请使用 venv_target_nodes。
frozen_nodes常用调整[]显式冻结的节点,训练中不更新其参数。
node_weights常用调整{}按节点覆盖 venv 阶段的监督损失权重,默认全为 1.0。
optimizer.type常用调整adam优化器类型:adam | adamw。
optimizer.lr常用调整0.001基础学习率。过高可能引起训练震荡或发散,过低可能增加收敛所需轮数,可结合损失与验证曲线调整。
optimizer.weight_decay常用调整0.0001参数权重衰减(L2)系数。可与 dropout 联合使用,正则强度过大时可能导致欠拟合。
optimizer.scheduler常用调整cosine学习率调度器:none | step | cosine | exponential。
optimizer.lr_decay常用调整0.99step / exponential 调度的衰减因子。
optimizer.scheduler_interval专项设置epoch学习率的更新频率:epoch 表示每轮更新,update 表示每次参数更新后调整。update 仅支持 scheduler='cosine'。
optimizer.eta_min_ratio专项设置0.0cosine 调度的学习率下限,按 lr 的比例给出。仅 scheduler_interval='update' 有效。
loss常用调整nll主监督损失类型,如 nll / mse。
grad_clip常用调整50.0梯度范数裁剪阈值。0 表示关闭(个别算法另有自己的关闭语义)。
aggregation_mode专项设置dim_weighted多节点误差的汇总方式:dim_weighted 让每个维度权重相同,维度较多的节点贡献较大;node_mean 让每个节点权重相同。
l2_coef专项设置5e-05已弃用。policy_bc.yaml 保留该键,但当前训练实现不读取此值。
logstd_loss_coef专项设置0.01DEPRECATED:同 l2_coef,声明了但无人读取。

完整配置及使用条件见选择建模与控制算法。

PPO:优化控制策略 ​

算法名称:policy.ppo。在已训练世界模型中推演,并根据奖励优化直接输出动作的策略。

例如倒立摆使用摆角偏差、角速度和力矩定义奖励,让策略学习保持直立。先选择世界模型能够较准确预测的推演长度,再比较独立仿真中的控制效果。

使用条件说明
世界模型需要通过 inherit_from 指定已训练阶段
奖励函数需要填写任务奖励
恢复训练支持完整检查点恢复

下面是阶段配置节选,不是完整任务配置。参数展示本算法默认值;将需要调整的项合入自己的阶段,并保留任务的图、数据、动作节点、奖励和依赖设置。

yaml
training:
  stages:
  - name: policy_ppo
    algorithm: policy.ppo
    inherit_from: venv
    hyperparameters:
      epochs: 100
      optimizer:
        lr: 0.001
      rollout_horizon: 20

调整顺序

  1. 确认奖励、动作边界和世界模型的多步预测效果。
  2. 从较短推演长度和较小学习率开始,按需要使用行为约束。
  3. 调整轨迹数、ppo_batch_num 和 ppo_runs 后,再评估裁剪范围与探索强度。

  • 模型内回报提高后,还应检查独立仿真或业务评估中的收益与约束。
  • bpc_weight 大于 0 时支持 bc、wpc 行为约束;当前 PPO 不支持启用 kl 行为约束。

查看 policy.ppo 的完整参数与默认值

参数路径均相对于本阶段的 hyperparameters,点号表示 YAML 嵌套层级。

参数路径使用需求默认值说明
dynamics_noise常用调整null仅策略训练期动力学扰动:enabled 默认 false,keys 按状态列配置 raw 单位标准差。
epochs常用调整100本阶段的最大训练轮数。启用早停或 patience 时,训练可能提前结束。
policy_nodes任务定义[]policy / controller 阶段负责输出动作的节点,必填;其余节点被冻结成环境模型。
target_nodes专项设置[]用于选择目标节点。BC 设置该项会采用策略训练方式;仅调整世界模型的监督目标时,请使用 venv_target_nodes。
frozen_nodes常用调整[]显式冻结的节点,训练中不更新其参数。
reward任务定义null奖励函数的来源(文件路径 + 函数名)。策略类算法必填。
bc_pretrain_epochs常用调整0策略优化之前先做多少轮行为克隆预热,0 表示不预热。
rollout_horizon常用调整20训练时连续推演的步数,未单独设置验证长度时也用于验证。温控、机械运动等任务的误差积累速度不同,应根据本任务的多步误差曲线选择。可使用 revive suggest-rollout 获取建议;SAC 的训练推演长度使用 rollout_length。
loss常用调整nll主监督损失类型,如 nll / mse。
grad_clip常用调整0.5梯度范数裁剪阈值。0 表示关闭(个别算法另有自己的关闭语义)。
aggregation_mode专项设置dim_weighted多节点误差的汇总方式:dim_weighted 让每个维度权重相同,维度较多的节点贡献较大;node_mean 让每个节点权重相同。
optimizer.type常用调整adam优化器类型:adam | adamw。
optimizer.lr常用调整0.001基础学习率。过高可能引起训练震荡或发散,过低可能增加收敛所需轮数,可结合损失与验证曲线调整。
optimizer.weight_decay常用调整0.0001参数权重衰减(L2)系数。可与 dropout 联合使用,正则强度过大时可能导致欠拟合。
optimizer.scheduler常用调整cosine学习率调度器:none | step | cosine | exponential。
optimizer.lr_decay常用调整0.99step / exponential 调度的衰减因子。
optimizer.scheduler_interval专项设置epoch学习率的更新频率:epoch 表示每轮更新,update 表示每次参数更新后调整。update 仅支持 scheduler='cosine'。
optimizer.eta_min_ratio专项设置0.0cosine 调度的学习率下限,按 lr 的比例给出。仅 scheduler_interval='update' 有效。
epsilon常用调整0.2PPO 裁剪目标中的概率比率裁剪范围,用于限制单次策略更新幅度。
gamma常用调整0.99回报与优势估计的折扣因子,有效视界约为 1/(1-gamma),0.99 对应约百步。取值需结合 rollout 长度与末端价值估计:推演仅 20 步而 gamma=0.999 时,窗口外回报较多依赖自举估计。
gae_lambda常用调整0.95GAE 的 lambda:偏差 / 方差的权衡。1 退化成蒙特卡洛回报,0 退化成 TD(0)。
entropy_coef常用调整0.01策略熵奖励系数,越大越鼓励探索。也可使用 w_ent;同时填写时以 w_ent 为准。
w_ent专项设置nullentropy_coef 的别名;同时填写时以 w_ent 为准。
value_coef常用调整0.5value loss 在 PPO 总目标里的权重。
max_grad_norm常用调整0.5PPO actor / value 更新的梯度范数上限。
n_epochs常用调整10PPO 更新轮数的兼容配置。当前训练使用 ppo_runs 控制每批推演数据的更新次数,调整时请设置 ppo_runs。
ppo_runs专项设置2每批推演数据进行的 PPO 更新轮数。增大后会对同一批数据进行更多次更新。
ppo_batch_num专项设置8每批推演数据划分的小批次数,默认 8。与 ppo_runs 共同决定这批数据的更新次数。
ppo_batch_size专项设置null每个小批次的样本数;未指定时根据训练数据的批量设置计算。
num_rollout_trajs常用调整null并行 rollout 的轨迹条数;不指定时由 ppo_batch_size 或 data.batch_size 推导。
validation_horizon常用调整null策略验证的推演步数。未填写时使用训练推演长度:PPO 对应 rollout_horizon,SAC 对应 rollout_length。
w_vl2专项设置0.001价值网络的 L2 正则权重(REVIVE: w_vl2)。
bpc_type专项设置bc行为约束类型:bc | wpc;bpc_weight>0 时生效。当前 PPO 不支持启用 kl 约束。
bpc_weight专项设置0.0行为约束权重,>0 才开启。
generate_deter专项设置0rollout 是否用确定性动作(REVIVE: generate_deter,1 为确定性)。
value_hidden_dims常用调整[256, 256]value 网络各隐藏层宽度。它与策略网络分开配:value 拟合的是整条轨迹的回报,通常需要比策略更大的容量。
log_ratio_clip_enabled专项设置false是否对 log ratio 做上限裁剪(ratio = exp(clamp_max(log_ratio, max)))。默认关闭以对齐 REVIVE(v1)。
log_ratio_clip_max专项设置40.0log ratio 的裁剪上限。
segment_sampling_mode专项设置timestep_uniform推演起点的采样方式:trajectory_uniform 按轨迹均匀;segment_uniform 按每条轨迹可容纳的整段数 floor(L_i/H) 加权;timestep_uniform 按合法起点数 L_i-H+1 加权。L_i 为轨迹长度,H 为推演长度。
use_last_value_bootstrap专项设置false是否使用轨迹末端的价值估计补充后续回报。false 将末端价值设为 0;没有终止信号的持续控制任务可评估开启后的效果。
state_keys专项设置null环境状态节点;None 时由 Graph 的 transition 与算法语义推导。
obs_keys专项设置[]策略观测使用的输入键,按声明顺序在归一化空间拼接。为空时由决策流图推导。
action_keys专项设置[]策略动作对应哪些键。空表示取 policy_nodes。
done_key专项设置done世界模型输出里哪一个键表示回合终止。该键不存在时按「不终止」处理。
force_terminal_at_horizon专项设置true整段 rollout 未出现 done 时,是否将最后一步标记为终止。标记为终止时 last_value 归零,否则使用 V(s_T) 自举。该设置会影响末端价值估计与回报计算。
eval_gamma专项设置0.99PPO 验证期折扣回报的折扣因子,与训练用的 gamma 分开;打包默认值为 0.99。未折扣累计回报 return_mean 不受此值影响。
eval_include_train专项设置false策略验证时是否同时评估训练集。默认仅评估验证集;启用后可比较训练集与验证集的回报,但会增加评估开销。

完整配置及使用条件见选择建模与控制算法。

SAC:复用经验优化策略 ​

算法名称:policy.sac。结合世界模型推演和经验回放优化策略,使用熵项调节探索。

例如车辆跟随需要兼顾距离误差、加速度与舒适性。可用 SAC 比较不同探索强度下的控制效果,同时检查模型误差与价值估计是否稳定。

使用条件说明
世界模型需要通过 inherit_from 指定已训练阶段
奖励函数需要填写任务奖励
恢复训练支持完整检查点恢复

下面是阶段配置节选,不是完整任务配置。参数展示本算法默认值;将需要调整的项合入自己的阶段,并保留任务的图、数据、动作节点、奖励和依赖设置。

yaml
training:
  stages:
  - name: policy_sac
    algorithm: policy.sac
    inherit_from: venv
    hyperparameters:
      actor_lr: 0.0003
      critic_lr: 0.0003
      rollout_length: 20

调整顺序

  1. 先固定训练推演长度、回放容量、批量和验证长度。
  2. 根据策略与价值网络的表现调整 actor_lr、critic_lr 和 updates_per_step。
  3. 训练稳定后,再评估熵系数、目标熵与行为约束。

  • 价值估计发散可能先于控制回报恶化,应检查 Q 值和非有限数值。
  • 过长推演会放大世界模型误差,应结合误差曲线选择 rollout_length。

查看 policy.sac 的完整参数与默认值

参数路径均相对于本阶段的 hyperparameters,点号表示 YAML 嵌套层级。

参数路径使用需求默认值说明
dynamics_noise常用调整null仅策略训练期动力学扰动:enabled 默认 false,keys 按状态列配置 raw 单位标准差。
epochs常用调整100本阶段的最大训练轮数。启用早停或 patience 时,训练可能提前结束。
policy_nodes任务定义[]policy / controller 阶段负责输出动作的节点,必填;其余节点被冻结成环境模型。
target_nodes专项设置[]用于选择目标节点。BC 设置该项会采用策略训练方式;仅调整世界模型的监督目标时,请使用 venv_target_nodes。
frozen_nodes常用调整[]显式冻结的节点,训练中不更新其参数。
reward任务定义null奖励函数的来源(文件路径 + 函数名)。策略类算法必填。
bc_pretrain_epochs常用调整0SAC 优化前的行为克隆预热轮数,用于初始化历史行为附近的策略;0 表示不预热。
loss常用调整nll主监督损失类型,如 nll / mse。
grad_clip常用调整0.0梯度范数裁剪阈值。0 表示关闭(个别算法另有自己的关闭语义)。
aggregation_mode专项设置dim_weighted多节点误差的汇总方式:dim_weighted 让每个维度权重相同,维度较多的节点贡献较大;node_mean 让每个节点权重相同。
gamma常用调整0.99回报与 Bellman target 的折扣因子。
tau常用调整0.005target Q 网络的软更新系数:越小目标越慢、越稳。
alpha常用调整0.2熵温度。auto_alpha=false 时它是固定值,true 时它只是自动优化的初值。
auto_alpha常用调整true是否自动优化熵温度,使策略熵向 target_entropy 收敛。
target_entropy专项设置null自动温度的目标熵;None 时按动作维度推导(取 -action_dim)。
actor_lr常用调整0.0003Actor 学习率。需结合 Critic 的拟合情况与策略更新稳定性调整。
critic_lr常用调整0.0003Critic 学习率,用于调整 Q 值估计的更新速度。
alpha_lr常用调整0.0003自动温度参数的学习率。auto_alpha=false 时它不起作用。
buffer_size常用调整100000ReplayBuffer 最多存多少条 transition。
batch_size常用调整256算法局部 batch size。更大通常更稳,代价是显存。
warmup_steps常用调整1000开始正式 actor / critic 更新之前先积累多少条 transition,其间只收数据不更新参数。
updates_per_step常用调整1每新增一个 transition 对应做多少次优化更新。
replay_sample_rng专项设置torchreplay buffer 的采样 RNG:torch | numpy(numpy 对齐 REVIVE)。
q_hidden_dims常用调整[256, 256]Q 网络各隐藏层宽度。
q_network_type专项设置independent多个 Q 用独立网络(independent)还是向量化 ensemble(vectorize / vectorized)。
num_q常用调整2Q 网络个数(集成规模)。target 与 actor 用的是它们的保守聚合。REVIVE 默认 4。
value_hidden_dims常用调整[256, 256]value 网络各隐藏层宽度。它与策略网络分开配:value 拟合的是整条轨迹的回报,通常需要比策略更大的容量。
max_grad_norm常用调整0.0actor / critic 更新的梯度范数上限,0 表示不裁剪。
rollout_length常用调整20每个 epoch 在世界模型中生成的单条轨迹长度,即 SAC 的推演步数。SAC 使用 rollout_length,PPO 使用 stage.rollout_horizon,配置时需选择对应算法的字段。可使用 revive suggest-rollout 在已训练的世界模型上评估建议值。
validation_horizon常用调整null策略验证的推演步数;None 表示复用该算法的训练长度 rollout_length。
eval_gamma专项设置1.0验证期回报的折扣因子,与训练用的 gamma 分开。REVIVE 的 test_gamma 默认 1.0。
num_rollout_trajs常用调整16每个训练 epoch 在世界模型里生成多少条轨迹。
segment_sampling_mode专项设置timestep_uniformrollout 起点的采样模式,取值同 PPOConfig.segment_sampling_mode。
generate_deter专项设置0rollout 是否取分布众数而非采样。REVIVE 默认 1。
policy_rollout_action_mode专项设置samplerollout 时动作取 sample 还是 mode。默认沿用 revive 的历史行为。
policy_forward_action_only专项设置false诊断开关:策略前向只执行 action 节点。
critic_target_action_sample_mode专项设置rsample_with_logprob算 critic 目标值时下一步动作怎么取:rsample_with_logprob | rsample | sample。
drop_last_rollout_transition专项设置false每段 rollout 少写最后一步 transition,用于对齐 REVIVE 的 buffer_process。
expert_replay_enabled专项设置false是否额外维护来自历史数据的经验回放,用于在策略训练时结合已有行为样本。
batch_ratio专项设置1.0SAC batch 里生成 transition 的占比。REVIVE 默认 1。
critic_pretrain专项设置false是否做 critic-only 预训练。
critic_pretrain_epochs专项设置0critic-only 预训练的轮数。
revive_update_order专项设置false改用 REVIVE 的更新顺序:critic 更新后立刻 soft update target,再更新 actor。
fixed_save_epochs专项设置[]在这些轮次额外存一份固定检查点。
fixed_checkpoint_dir专项设置fixed_checkpoints固定检查点的存放目录名。
bpc_type专项设置none行为约束类型:none | bc。SAC 不支持 wpc。
bpc_weight专项设置0.0行为约束权重,>0 才开启。
rollout_clip专项设置truerollout 时把节点输出裁剪到 processed 空间的 [-1,1](对齐 REVIVE)。
w_kl专项设置0.0actor 的 KL(initial_policy ‖ current_policy) 权重。REVIVE 默认 1.0。
behavioral_policy_init专项设置false把 venv 阶段训好的 policy 节点权重拷进 SAC 策略作为初始化。对齐 REVIVE 的 behavioral_policy_init=True:策略从行为策略起步,且 KL anchor 锚定到行为策略而不是随机初始化。
state_keys专项设置null环境状态节点;None 时由 Graph 的 transition 与算法语义推导。
obs_keys专项设置[]策略观测使用的输入键,按声明顺序在归一化空间拼接。为空时由决策流图推导。
action_keys专项设置[]策略动作对应哪些键。空表示取 policy_nodes。
done_key专项设置done世界模型输出里哪一个键表示回合终止。该键不存在时按「不终止」处理。

完整配置及使用条件见选择建模与控制算法。

控制器参数 ​

MPC:在线规划动作 ​

算法名称:controller.mpc。使用世界模型比较候选动作序列,每个控制周期重新规划并执行当前动作。

例如暖通控制已知未来温度目标和外界扰动预报,MPC 可比较不同制冷动作的效果。规划时间范围要与模型可靠预测范围相符,计算时间要满足控制周期。

使用条件说明
世界模型需要通过 inherit_from 指定已训练阶段
奖励函数需要填写任务奖励
恢复训练不支持训练状态续接

下面是阶段配置节选,不是完整任务配置。参数展示本算法默认值;将需要调整的项合入自己的阶段,并保留任务的图、数据、动作节点、奖励和依赖设置。

yaml
training:
  stages:
  - name: controller_mpc
    algorithm: controller.mpc
    inherit_from: venv
    hyperparameters:
      horizon: 10
      num_samples: 100
      num_iterations: 5

调整顺序

  1. 确认动作边界、规划长度及 future_exogenous_keys 所需的已知预报。
  2. 在相同验证片段上比较采样数、精英数与迭代数。
  3. 选择搜索方法后,在目标设备测量推理时间,再确定部署设置。

  • 采样数、规划长度和迭代数共同影响推理开销。
  • 部署时需保留匹配的世界模型、奖励函数和动作边界。

查看 controller.mpc 的完整参数与默认值

参数路径均相对于本阶段的 hyperparameters,点号表示 YAML 嵌套层级。

参数路径使用需求默认值说明
policy_nodes任务定义[]policy / controller 阶段负责输出动作的节点,必填;其余节点被冻结成环境模型。
reward任务定义null奖励函数的来源(文件路径 + 函数名)。策略类算法必填。
action_bounds常用调整null显式 actuator 边界 {列名: [下界, 上界]};不填时只接受 graph 列定义里的边界。
tune.enabled常用调整false是否自动调参。关掉则直接用配置里的增益。
tune.objective常用调整reward_mean控制器参数搜索的排序指标,决定候选增益按跟踪误差或回报等指标比较。
tune.mode专项设置validate_only搜索模式。two_stage 先用 fast_eval_segments 粗筛,再对 top_k 用 full_eval_segments 复评。
tune.max_trials常用调整40搜索的试验总数,直接决定调参耗时。
tune.top_k专项设置5粗筛后进入复评的候选个数。
tune.fast_eval_segments专项设置64粗筛阶段的评估片段数。
tune.full_eval_segments专项设置256复评阶段的评估片段数。
tune.eval_horizon常用调整100各评估片段在世界模型中的推演步数。需覆盖任务相关的响应过程,可参考被控对象的 t63 选择初值。
tune.seed常用调整42调参搜索的随机种子。换它会换出一组不同的候选,因而是可比性的一部分。
tune.search专项设置{}搜索空间覆写:{参数名: [候选值...]},为空则用算法内置空间。
method常用调整cem规划算法,可选 cem(交叉熵方法)、mppi(加权平均)或 random(随机采样搜索)。三种算法均由 MPCPlannerKernel 实现。
horizon常用调整10MPC 每次规划的步数,需结合系统时滞与响应时间设置。例如 three_tank 中 h2 对泵的 t63 为 109 个控制步;规划窗口较短时,泵能耗已计入奖励而液位改善尚未出现,可能影响候选动作的选择。
num_samples常用调整100每轮采样的候选动作序列条数。它和 num_iterations 一起决定单个控制步的规划开销。
num_elites专项设置10CEM 每轮保留多少条精英用于更新采样分布。仅 method=cem 有效。
num_iterations常用调整5每个控制步的搜索迭代次数。仅 cem 与 mppi 有效,random 只打一轮。
temperature专项设置1.0仅 method=mppi 有效:候选按 softmax(return / temperature) 加权平均。cem 走的是 topk 硬选择,根本不读这个值。必须为正。
gamma常用调整0.99规划期内累计回报的折扣因子,与 horizon 共同决定远期收益的权重。gamma 较小时,窗口末端奖励的影响减弱。
deterministic专项设置true规划时世界模型取分布均值(true)还是采样(false)。取均值让同一状态下的规划可复现。
use_policy_prior专项设置true初始采样分布是否以已训练的策略为先验。关掉则从动作区间中点 ± 半量程起步。
clip_actions专项设置true每次生成候选后是否裁剪到 action_bounds 内。
warm_start专项设置true是否平移上一控制步的最优动作序列,用于初始化当前搜索。CEM 的 top-k 选择可能因 PyTorch 与 ONNX 间 1e-7 量级的浮点差而变化,暖启动会继续传递该差异,影响 parity 验证。需要数值一致性验证时应关闭,并按部署指南检查搜索结构的限制。
future_exogenous_keys常用调整[]规划期内可预知的外生变量列,例如天气预报和排产负载。模型调用端必须提供所列节点的未来序列。MPC 使用这些信息进行规划;单回路 PID 通常根据当前误差生成控制量。
seed常用调整0候选动作采样的随机种子。CEM / MPPI 每步都在采样,固定它才让同一状态下的规划可复现。

完整配置及使用条件见选择建模与控制算法。

前馈 PID:调节单回路控制 ​

算法名称:controller.ffpid。组合前馈项和 PID 反馈,可按验证结果调整控制增益。

例如温度控制中,比例项响应当前偏差,积分项减小持续偏差,微分项反映变化速度。先核对制冷动作方向、温度单位与采样周期,再调整增益。

使用条件说明
世界模型需要通过 inherit_from 指定已训练阶段
奖励函数需要填写任务奖励
恢复训练不支持训练状态续接

下面是阶段配置节选,不是完整任务配置。参数展示本算法默认值;将需要调整的项合入自己的阶段,并保留任务的图、数据、动作节点、奖励和依赖设置。

yaml
training:
  stages:
  - name: controller_ffpid
    algorithm: controller.ffpid
    inherit_from: venv
    hyperparameters:
      kp: 1.0
      ki: 0.0
      kd: 0.0

调整顺序

  1. 确认设定值、测量值、动作方向和采样周期。
  2. 先调整 kp,再用 ki 改善稳态偏差,最后比较 kd 与滤波设置。
  3. 结合设备边界设置前馈、积分限幅和抗积分饱和。

  • 增益含义依赖单位、采样周期与控制方向,不能直接照搬其他任务的值。
  • 积分限幅与输出限幅应结合实际动作边界验证。

查看 controller.ffpid 的完整参数与默认值

参数路径均相对于本阶段的 hyperparameters,点号表示 YAML 嵌套层级。

参数路径使用需求默认值说明
policy_nodes任务定义[]policy / controller 阶段负责输出动作的节点,必填;其余节点被冻结成环境模型。
reward任务定义null奖励函数的来源(文件路径 + 函数名)。策略类算法必填。
action_bounds常用调整null显式 actuator 边界 {列名: [下界, 上界]};不填时只接受 graph 列定义里的边界。
tune.enabled常用调整false是否自动调参。关掉则直接用配置里的增益。
tune.objective常用调整reward_mean控制器参数搜索的排序指标,决定候选增益按跟踪误差或回报等指标比较。
tune.mode专项设置validate_only搜索模式。two_stage 先用 fast_eval_segments 粗筛,再对 top_k 用 full_eval_segments 复评。
tune.max_trials常用调整40搜索的试验总数,直接决定调参耗时。
tune.top_k专项设置5粗筛后进入复评的候选个数。
tune.fast_eval_segments专项设置64粗筛阶段的评估片段数。
tune.full_eval_segments专项设置256复评阶段的评估片段数。
tune.eval_horizon常用调整100各评估片段在世界模型中的推演步数。需覆盖任务相关的响应过程,可参考被控对象的 t63 选择初值。
tune.seed常用调整42调参搜索的随机种子。换它会换出一组不同的候选,因而是可比性的一部分。
tune.search专项设置{}搜索空间覆写:{参数名: [候选值...]},为空则用算法内置空间。
kp常用调整1.0比例增益,必须非负。当前配置校验要求 kp、ki、kd 均大于等于 0,因此无法通过 YAML 配置需要负增益的反作用过程,例如功率增大、温度下降的制冷过程。
ki常用调整0.0积分增益,必须非负。用于减小恒定设定值下的稳态偏差。
kd常用调整0.0微分增益,响应误差的变化率,给闭环增加阻尼。必须非负。
kff常用调整0.0前馈增益,直接乘设定值(不是测量值):action += kff * setpoint。它绕过反馈回路直接提供一部分控制量,所以能在误差还没建立起来时就动作。
integral_limit常用调整null积分状态的绝对值上限,None 表示不限。用来抑制 windup。
output_limit常用调整null控制量输出的绝对值上限,None 表示只受 action_bounds 约束。
derivative_filter_tau专项设置0.0微分项的一阶低通时间常数,0 表示不滤波。测量带噪时不滤波会让微分项把控制量抖起来。
anti_windup专项设置clamp输出饱和时的抗积分饱和策略。
setpoint_key常用调整null输入状态里哪一个键是目标设定值;None 表示由 stage 另行提供。
measurement_key常用调整null输入状态里哪一个键是被控量(反馈测量)。它和 setpoint_key 一起定义误差:error = setpoint - measurement。

完整配置及使用条件见选择建模与控制算法。

残差 PID:修正已有控制器 ​

算法名称:controller.residual_pid。在已有控制动作上叠加受限的 PID 修正量,并限制修正幅度和变化速度。

例如水处理已有加药方案,但特定工况下出水指标有持续偏差。可围绕原动作增加小幅修正,并同时检查水质、药耗及动作变化。修正边界由业务允许范围确定。

使用条件说明
世界模型需要通过 inherit_from 指定已训练阶段
奖励函数需要填写任务奖励
恢复训练不支持训练状态续接

下面是阶段配置节选,不是完整任务配置。参数展示本算法默认值;将需要调整的项合入自己的阶段,并保留任务的图、数据、动作节点、奖励和依赖设置。

yaml
training:
  stages:
  - name: controller_residual_pid
    algorithm: controller.residual_pid
    inherit_from: venv
    hyperparameters:
      kp: 0.0
      delta_max: 0.05
      rate_limit: 0.01

调整顺序

  1. 先验证基线控制器、测量量、设定值和动作边界。
  2. 按业务允许范围确定 delta_max、rate_limit 与积分限幅。
  3. 在固定边界内调整 kp、ki、kd,并与原控制器比较。

  • 部署时保留匹配的基线控制器及依赖文件。
  • 修正幅度和变化率应按业务要求设置,不宜仅凭模型内回报扩大。

查看 controller.residual_pid 的完整参数与默认值

参数路径均相对于本阶段的 hyperparameters,点号表示 YAML 嵌套层级。

参数路径使用需求默认值说明
policy_nodes任务定义[]policy / controller 阶段负责输出动作的节点,必填;其余节点被冻结成环境模型。
reward任务定义null奖励函数的来源(文件路径 + 函数名)。策略类算法必填。
action_bounds常用调整null显式 actuator 边界 {列名: [下界, 上界]};不填时只接受 graph 列定义里的边界。
tune.enabled常用调整false是否自动调参。关掉则直接用配置里的增益。
tune.objective常用调整reward_mean控制器参数搜索的排序指标,决定候选增益按跟踪误差或回报等指标比较。
tune.mode专项设置validate_only搜索模式。two_stage 先用 fast_eval_segments 粗筛,再对 top_k 用 full_eval_segments 复评。
tune.max_trials常用调整40搜索的试验总数,直接决定调参耗时。
tune.top_k专项设置5粗筛后进入复评的候选个数。
tune.fast_eval_segments专项设置64粗筛阶段的评估片段数。
tune.full_eval_segments专项设置256复评阶段的评估片段数。
tune.eval_horizon常用调整100各评估片段在世界模型中的推演步数。需覆盖任务相关的响应过程,可参考被控对象的 t63 选择初值。
tune.seed常用调整42调参搜索的随机种子。换它会换出一组不同的候选,因而是可比性的一部分。
tune.search专项设置{}搜索空间覆写:{参数名: [候选值...]},为空则用算法内置空间。
kp常用调整0.0残差项的比例增益。必须非负,同 FFPID。
ki常用调整0.0残差项的积分增益,消除常值设定值下的稳态偏差。必须非负。基线取零时慎用:那时残差就是指令本身,积分项会累出退不掉的偏置。
kd常用调整0.0残差项的非负微分增益。测量噪声较大时可结合 derivative_filter_tau 抑制动作抖动。
target常用调整0.9被控量的设定值。当前增益要求非负,仅支持与该增益方向匹配的被控量;需要负增益的反作用过程暂时无法通过 YAML 配置。
delta_max常用调整0.05残差相对基线动作的最大偏移量。默认值按加氯任务量纲设置,其他任务需根据允许偏移范围重新确定。上限不足以覆盖目标动作时,输出可能持续饱和。
rate_limit常用调整0.01相邻两步残差的最大变化量,需根据执行器能力与控制周期设置。vehicle_acc 示例中,每步 0.5 m/s² 的限制使加速度从 0 降到 -3 m/s² 需要 6 步(1.2 s),会影响急刹场景的可行控制范围。平滑偏好可另用奖励代价表达,硬限制需单独验证。
i_max常用调整0.05积分项贡献的绝对值上限,用来抑制 windup。它和 delta_max 一样按任务量纲定。
sample_dt_h常用调整0.08333333333333333控制周期,单位小时。积分与微分项按它换算,所以它必须与增益标定时用的周期一致。
measurement_key常用调整null输入状态里哪一个键是被控量。内核算 error = target - measurement。
baseline专项设置null专家基线动作的来源,包括 callable、参数与来源约定。None 表示使用零动作为基线,此时残差即为输出指令。

完整配置及使用条件见选择建模与控制算法。