算法参数说明
已经选定算法、需要确认参数如何填写或默认值是多少时,可以从本页查找。每个算法先列出适用场景、常用参数节选和调整顺序,完整参数表按需展开。尚未决定算法时,先看选择建模与控制算法。
填写参数与确认取值
| 您要完成的任务 | 可查询的算法 |
|---|---|
| 学习设备或系统的响应 | 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 替换为实际文件名:
revive validate --config config.yaml --show-defaults输出包含合并后的完整配置,可确认每个阶段真正使用的值。任务定义、常用调整与专项设置的阅读顺序见配置填写与调整顺序。
世界模型参数
BC:拟合系统响应
算法名称:venv.bc。通过监督学习拟合世界模型,可先建立单步预测基线,再评估多步训练。
例如冰箱温控中,用当前温度、制冷动作和门状态预测下一时刻温度。先检查稳定运行和开门片段的误差,再决定是否增加历史或多步训练。
| 使用条件 | 说明 |
|---|---|
| 世界模型 | 直接从数据训练 |
| 奖励函数 | 不要求奖励函数 |
| 恢复训练 | 支持完整检查点恢复 |
下面是阶段配置节选,不是完整任务配置。参数展示本算法默认值;将需要调整的项合入自己的阶段,并保留任务的图、数据、动作节点、奖励和依赖设置。
training:
stages:
- name: venv_bc
algorithm: venv.bc
hyperparameters:
epochs: 100
optimizer:
lr: 0.001
sequence_train:
enabled: false调整顺序
- 固定预测节点、数据划分和选模指标,建立可比较的结果。
- 根据训练与验证曲线调整学习率、批量和轮数。
- 单步预测稳定后,再评估多步联合训练及业务相关损失。
- 单步误差较小仍需检查连续推演的误差积累。
- 增加多步训练长度会提高显存占用与计算量,必要时降低批量。
查看 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.99 | step / exponential 调度的衰减因子。 |
optimizer.scheduler_interval | 专项设置 | epoch | 学习率的更新频率:epoch 表示每轮更新,update 表示每次参数更新后调整。update 仅支持 scheduler='cosine'。 |
optimizer.eta_min_ratio | 专项设置 | 0.0 | cosine 调度的学习率下限,按 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 | 专项设置 | false | bootstrap 阶段之后切断梯度。 |
sequence_train.detach_history_override | 专项设置 | null | 覆盖历史窗口是否切断梯度;None 表示随算法默认。 |
sequence_train.step_mode | 专项设置 | rsample | 每步取值方式:rsample 可重参数采样 | sample | mode。 |
sequence_train.loss_aggregation | 专项设置 | mean | H 步 loss 的聚合方式:mean | discounted。 |
sequence_train.loss_discount | 专项设置 | 1.0 | discounted 聚合时的折扣率。 |
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,检查多步误差及主要工况的变化。
| 使用条件 | 说明 |
|---|---|
| 世界模型 | 直接从数据训练 |
| 奖励函数 | 不要求奖励函数 |
| 恢复训练 | 支持完整检查点恢复 |
下面是阶段配置节选,不是完整任务配置。参数展示本算法默认值;将需要调整的项合入自己的阶段,并保留任务的图、数据、动作节点、奖励和依赖设置。
training:
stages:
- name: venv_revive_p
algorithm: venv.revive_p
hyperparameters:
bc:
optimizer:
lr: 0.001
adversarial:
enabled: true
ood:
weight: 0.1调整顺序
- 先关闭 adversarial.enabled,确认监督训练能够得到稳定的预测结果。
- 固定推演长度与选模指标,再启用对抗训练并比较误差。
- 从较小对抗权重开始,确认验证改善后再调整判别器和其他专项设置。
- 判别器准确率较高不代表世界模型预测一定更好,应结合独立验证结果。
- 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.99 | step / exponential 调度的衰减因子。 |
bc.optimizer.scheduler_interval | 专项设置 | epoch | 学习率的更新频率:epoch 表示每轮更新,update 表示每次参数更新后调整。update 仅支持 scheduler='cosine'。 |
bc.optimizer.eta_min_ratio | 专项设置 | 0.0 | cosine 调度的学习率下限,按 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 | 专项设置 | false | bootstrap 阶段之后切断梯度。 |
bc.sequence_train.detach_history_override | 专项设置 | null | 覆盖历史窗口是否切断梯度;None 表示随算法默认。 |
bc.sequence_train.step_mode | 专项设置 | rsample | 每步取值方式:rsample 可重参数采样 | sample | mode。 |
bc.sequence_train.loss_aggregation | 专项设置 | mean | H 步 loss 的聚合方式:mean | discounted。 |
bc.sequence_train.loss_discount | 专项设置 | 1.0 | discounted 聚合时的折扣率。 |
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 | 专项设置 | expert | rollout 初值来源:expert(从专家片段起步)。 |
adversarial.rollout.anchor | 专项设置 | free | rollout 的锚定方式: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 | 专项设置 | full | KL 计算方式:full(含 scale)或 loc(仅均值偏移,以锚点 sigma 为度量)。 |
adversarial.anchor.kl_epsilon | 专项设置 | 0.05 | KL 信任域半径,拉格朗日对偶的约束右端。 |
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 | 常用调整 | true | PCGrad 投影开关,用于约束对抗梯度与监督梯度的关系。关闭后不执行该投影约束;实际监督损失变化仍需结合回溯检查与验证指标判断。 |
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 | 专项设置 | true | c_omega 是否用谱归一化约束 Lipschitz 常数。 |
adversarial.coverage.lr | 专项设置 | 0.0003 | c_omega 的学习率。 |
adversarial.coverage.warmup_steps | 专项设置 | 200 | c_omega 在参与加权之前先单独训练多少步。 |
adversarial.coverage.segment_batch | 专项设置 | 64 | 训练 c_omega 每步取多少片段。 |
adversarial.coverage.horizon | 专项设置 | null | c_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 | 专项设置 | 128 | GRU 隐状态宽度。 |
adversarial.ood.discriminator.num_layers | 专项设置 | 1 | GRU 的堆叠层数,必须 >= 1。 |
adversarial.ood.discriminator.head_hidden | 专项设置 | 64 | GRU 之上判别头的宽度。 |
adversarial.ood.discriminator.input_dropout | 专项设置 | 0.0 | GRU 输入的 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 | 常用调整 | 40 | OOD 扰动 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 | 专项设置 | 0 | D 累计 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 | 专项设置 | 512 | rollout 评分数据的片段数。评分需实际执行 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。直接学习不同预测步长下的状态增量,适合重点关注多步响应的建模任务。
例如温控系统对制冷动作存在延迟,您希望同时预测短期与更长时间范围的温度变化。先确认目标状态与驱动变量,再根据采样周期设置预测步长。
| 使用条件 | 说明 |
|---|---|
| 世界模型 | 直接从数据训练 |
| 奖励函数 | 不要求奖励函数 |
| 恢复训练 | 支持完整检查点恢复 |
下面是阶段配置节选,不是完整任务配置。参数展示本算法默认值;将需要调整的项合入自己的阶段,并保留任务的图、数据、动作节点、奖励和依赖设置。
training:
stages:
- name: venv_adm2
algorithm: venv.adm2
hyperparameters:
max_adm_step: 2
hidden_dim: 400
batch_size: 1024调整顺序
- 确认 target、drivers 与用于预测状态增量的节点。
- 根据目标时间范围调整 max_adm_step,再比较网络规模与批量。
- 固定数据划分,使用早停和质量条件选择模型。
- 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 | 常用调整 | auto | ADM2 动力学目标节点。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.99 | step / exponential 调度的衰减因子。 |
optimizer.scheduler_interval | 专项设置 | epoch | 学习率的更新频率:epoch 表示每轮更新,update 表示每次参数更新后调整。update 仅支持 scheduler='cosine'。 |
optimizer.eta_min_ratio | 专项设置 | 0.0 | cosine 调度的学习率下限,按 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 | 常用调整 | 2 | any-step 训练的最大推演步数。增大该值会改变训练目标分布,并增加显存占用与训练时间。 |
hidden_dim | 常用调整 | 400 | 循环单元的隐藏维度,与 rnn_num_layers 共同影响模型容量、计算量和显存占用。 |
rnn_num_layers | 常用调整 | 3 | 循环网络层数。增加层数会改变模型容量和优化难度,需结合验证误差调整。 |
dropout | 常用调整 | 0.0 | Dropout 概率,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 指定已训练阶段 |
| 奖励函数 | 不要求奖励函数 |
| 恢复训练 | 支持完整检查点恢复 |
下面是阶段配置节选,不是完整任务配置。参数展示本算法默认值;将需要调整的项合入自己的阶段,并保留任务的图、数据、动作节点、奖励和依赖设置。
training:
stages:
- name: policy_bc
algorithm: policy.bc
inherit_from: venv
hyperparameters:
epochs: 100
optimizer:
lr: 0.001
grad_clip: 50.0调整顺序
- 确认动作节点、观测输入和所依赖的世界模型。
- 检查动作标签与观测的时间对齐,再调整学习率和训练轮数。
- 比较动作拟合误差及分布;需要改变控制目标时,再配置奖励并使用策略优化算法。
- 策略 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.99 | step / exponential 调度的衰减因子。 |
optimizer.scheduler_interval | 专项设置 | epoch | 学习率的更新频率:epoch 表示每轮更新,update 表示每次参数更新后调整。update 仅支持 scheduler='cosine'。 |
optimizer.eta_min_ratio | 专项设置 | 0.0 | cosine 调度的学习率下限,按 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.01 | DEPRECATED:同 l2_coef,声明了但无人读取。 |
完整配置及使用条件见选择建模与控制算法。
PPO:优化控制策略
算法名称:policy.ppo。在已训练世界模型中推演,并根据奖励优化直接输出动作的策略。
例如倒立摆使用摆角偏差、角速度和力矩定义奖励,让策略学习保持直立。先选择世界模型能够较准确预测的推演长度,再比较独立仿真中的控制效果。
| 使用条件 | 说明 |
|---|---|
| 世界模型 | 需要通过 inherit_from 指定已训练阶段 |
| 奖励函数 | 需要填写任务奖励 |
| 恢复训练 | 支持完整检查点恢复 |
下面是阶段配置节选,不是完整任务配置。参数展示本算法默认值;将需要调整的项合入自己的阶段,并保留任务的图、数据、动作节点、奖励和依赖设置。
training:
stages:
- name: policy_ppo
algorithm: policy.ppo
inherit_from: venv
hyperparameters:
epochs: 100
optimizer:
lr: 0.001
rollout_horizon: 20调整顺序
- 确认奖励、动作边界和世界模型的多步预测效果。
- 从较短推演长度和较小学习率开始,按需要使用行为约束。
- 调整轨迹数、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.99 | step / exponential 调度的衰减因子。 |
optimizer.scheduler_interval | 专项设置 | epoch | 学习率的更新频率:epoch 表示每轮更新,update 表示每次参数更新后调整。update 仅支持 scheduler='cosine'。 |
optimizer.eta_min_ratio | 专项设置 | 0.0 | cosine 调度的学习率下限,按 lr 的比例给出。仅 scheduler_interval='update' 有效。 |
epsilon | 常用调整 | 0.2 | PPO 裁剪目标中的概率比率裁剪范围,用于限制单次策略更新幅度。 |
gamma | 常用调整 | 0.99 | 回报与优势估计的折扣因子,有效视界约为 1/(1-gamma),0.99 对应约百步。取值需结合 rollout 长度与末端价值估计:推演仅 20 步而 gamma=0.999 时,窗口外回报较多依赖自举估计。 |
gae_lambda | 常用调整 | 0.95 | GAE 的 lambda:偏差 / 方差的权衡。1 退化成蒙特卡洛回报,0 退化成 TD(0)。 |
entropy_coef | 常用调整 | 0.01 | 策略熵奖励系数,越大越鼓励探索。也可使用 w_ent;同时填写时以 w_ent 为准。 |
w_ent | 专项设置 | null | entropy_coef 的别名;同时填写时以 w_ent 为准。 |
value_coef | 常用调整 | 0.5 | value loss 在 PPO 总目标里的权重。 |
max_grad_norm | 常用调整 | 0.5 | PPO actor / value 更新的梯度范数上限。 |
n_epochs | 常用调整 | 10 | PPO 更新轮数的兼容配置。当前训练使用 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 | 专项设置 | 0 | rollout 是否用确定性动作(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.0 | log 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.99 | PPO 验证期折扣回报的折扣因子,与训练用的 gamma 分开;打包默认值为 0.99。未折扣累计回报 return_mean 不受此值影响。 |
eval_include_train | 专项设置 | false | 策略验证时是否同时评估训练集。默认仅评估验证集;启用后可比较训练集与验证集的回报,但会增加评估开销。 |
完整配置及使用条件见选择建模与控制算法。
SAC:复用经验优化策略
算法名称:policy.sac。结合世界模型推演和经验回放优化策略,使用熵项调节探索。
例如车辆跟随需要兼顾距离误差、加速度与舒适性。可用 SAC 比较不同探索强度下的控制效果,同时检查模型误差与价值估计是否稳定。
| 使用条件 | 说明 |
|---|---|
| 世界模型 | 需要通过 inherit_from 指定已训练阶段 |
| 奖励函数 | 需要填写任务奖励 |
| 恢复训练 | 支持完整检查点恢复 |
下面是阶段配置节选,不是完整任务配置。参数展示本算法默认值;将需要调整的项合入自己的阶段,并保留任务的图、数据、动作节点、奖励和依赖设置。
training:
stages:
- name: policy_sac
algorithm: policy.sac
inherit_from: venv
hyperparameters:
actor_lr: 0.0003
critic_lr: 0.0003
rollout_length: 20调整顺序
- 先固定训练推演长度、回放容量、批量和验证长度。
- 根据策略与价值网络的表现调整 actor_lr、critic_lr 和 updates_per_step。
- 训练稳定后,再评估熵系数、目标熵与行为约束。
- 价值估计发散可能先于控制回报恶化,应检查 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 | 常用调整 | 0 | SAC 优化前的行为克隆预热轮数,用于初始化历史行为附近的策略;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.005 | target Q 网络的软更新系数:越小目标越慢、越稳。 |
alpha | 常用调整 | 0.2 | 熵温度。auto_alpha=false 时它是固定值,true 时它只是自动优化的初值。 |
auto_alpha | 常用调整 | true | 是否自动优化熵温度,使策略熵向 target_entropy 收敛。 |
target_entropy | 专项设置 | null | 自动温度的目标熵;None 时按动作维度推导(取 -action_dim)。 |
actor_lr | 常用调整 | 0.0003 | Actor 学习率。需结合 Critic 的拟合情况与策略更新稳定性调整。 |
critic_lr | 常用调整 | 0.0003 | Critic 学习率,用于调整 Q 值估计的更新速度。 |
alpha_lr | 常用调整 | 0.0003 | 自动温度参数的学习率。auto_alpha=false 时它不起作用。 |
buffer_size | 常用调整 | 100000 | ReplayBuffer 最多存多少条 transition。 |
batch_size | 常用调整 | 256 | 算法局部 batch size。更大通常更稳,代价是显存。 |
warmup_steps | 常用调整 | 1000 | 开始正式 actor / critic 更新之前先积累多少条 transition,其间只收数据不更新参数。 |
updates_per_step | 常用调整 | 1 | 每新增一个 transition 对应做多少次优化更新。 |
replay_sample_rng | 专项设置 | torch | replay buffer 的采样 RNG:torch | numpy(numpy 对齐 REVIVE)。 |
q_hidden_dims | 常用调整 | [256, 256] | Q 网络各隐藏层宽度。 |
q_network_type | 专项设置 | independent | 多个 Q 用独立网络(independent)还是向量化 ensemble(vectorize / vectorized)。 |
num_q | 常用调整 | 2 | Q 网络个数(集成规模)。target 与 actor 用的是它们的保守聚合。REVIVE 默认 4。 |
value_hidden_dims | 常用调整 | [256, 256] | value 网络各隐藏层宽度。它与策略网络分开配:value 拟合的是整条轨迹的回报,通常需要比策略更大的容量。 |
max_grad_norm | 常用调整 | 0.0 | actor / 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_uniform | rollout 起点的采样模式,取值同 PPOConfig.segment_sampling_mode。 |
generate_deter | 专项设置 | 0 | rollout 是否取分布众数而非采样。REVIVE 默认 1。 |
policy_rollout_action_mode | 专项设置 | sample | rollout 时动作取 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.0 | SAC batch 里生成 transition 的占比。REVIVE 默认 1。 |
critic_pretrain | 专项设置 | false | 是否做 critic-only 预训练。 |
critic_pretrain_epochs | 专项设置 | 0 | critic-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 | 专项设置 | true | rollout 时把节点输出裁剪到 processed 空间的 [-1,1](对齐 REVIVE)。 |
w_kl | 专项设置 | 0.0 | actor 的 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 指定已训练阶段 |
| 奖励函数 | 需要填写任务奖励 |
| 恢复训练 | 不支持训练状态续接 |
下面是阶段配置节选,不是完整任务配置。参数展示本算法默认值;将需要调整的项合入自己的阶段,并保留任务的图、数据、动作节点、奖励和依赖设置。
training:
stages:
- name: controller_mpc
algorithm: controller.mpc
inherit_from: venv
hyperparameters:
horizon: 10
num_samples: 100
num_iterations: 5调整顺序
- 确认动作边界、规划长度及 future_exogenous_keys 所需的已知预报。
- 在相同验证片段上比较采样数、精英数与迭代数。
- 选择搜索方法后,在目标设备测量推理时间,再确定部署设置。
- 采样数、规划长度和迭代数共同影响推理开销。
- 部署时需保留匹配的世界模型、奖励函数和动作边界。
查看 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 | 常用调整 | 10 | MPC 每次规划的步数,需结合系统时滞与响应时间设置。例如 three_tank 中 h2 对泵的 t63 为 109 个控制步;规划窗口较短时,泵能耗已计入奖励而液位改善尚未出现,可能影响候选动作的选择。 |
num_samples | 常用调整 | 100 | 每轮采样的候选动作序列条数。它和 num_iterations 一起决定单个控制步的规划开销。 |
num_elites | 专项设置 | 10 | CEM 每轮保留多少条精英用于更新采样分布。仅 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 指定已训练阶段 |
| 奖励函数 | 需要填写任务奖励 |
| 恢复训练 | 不支持训练状态续接 |
下面是阶段配置节选,不是完整任务配置。参数展示本算法默认值;将需要调整的项合入自己的阶段,并保留任务的图、数据、动作节点、奖励和依赖设置。
training:
stages:
- name: controller_ffpid
algorithm: controller.ffpid
inherit_from: venv
hyperparameters:
kp: 1.0
ki: 0.0
kd: 0.0调整顺序
- 确认设定值、测量值、动作方向和采样周期。
- 先调整 kp,再用 ki 改善稳态偏差,最后比较 kd 与滤波设置。
- 结合设备边界设置前馈、积分限幅和抗积分饱和。
- 增益含义依赖单位、采样周期与控制方向,不能直接照搬其他任务的值。
- 积分限幅与输出限幅应结合实际动作边界验证。
查看 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 指定已训练阶段 |
| 奖励函数 | 需要填写任务奖励 |
| 恢复训练 | 不支持训练状态续接 |
下面是阶段配置节选,不是完整任务配置。参数展示本算法默认值;将需要调整的项合入自己的阶段,并保留任务的图、数据、动作节点、奖励和依赖设置。
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调整顺序
- 先验证基线控制器、测量量、设定值和动作边界。
- 按业务允许范围确定 delta_max、rate_limit 与积分限幅。
- 在固定边界内调整 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 表示使用零动作为基线,此时残差即为输出指令。 |
完整配置及使用条件见选择建模与控制算法。