跳转到内容

改善预测与控制效果 ​

效果不理想时,先区分是模型没有学好系统变化,还是策略没有实现业务目标。例如温控中,温度预测持续偏高应先检查世界模型;预测准确但动作频繁启停,则要结合奖励、动作变化代价和控制周期分析。

本页按现象给出检查顺序和参数调整方法。已经定位到少数参数、需要比较多个取值时,使用高级功能中的自动搜索参数。

定位问题 ​

观察到什么先检查什么下一步
配置报错或训练出现非有限数值字段层级、缺失值、数值尺度预检与故障排查
训练误差一直较高列顺序、监督目标、驱动变量与单位降低预测误差
单步准确,连续推演偏离误差随步数的变化、外生输入和过程滞后多步训练
训练误差低,验证误差高数据划分、工况覆盖与模型容量数据设置和模型容量对照
模型内奖励高,动作却不合理奖励方向、物理边界、模型未覆盖的动作区域改善控制效果
效果可用但训练或推理太慢数据读取、训练展开、验证频率和模型大小效果与计算开销

先保存一份可运行的基线和报告,再改变一个参数或一组必须联合解释的参数。曲线、误差分布和业务工况的读法见分析训练结果。

降低预测误差 ​

单步拟合与关键节点 ​

先在相同数据和验证条件下比较学习率、训练轮数与网络容量:

现象候选调整如何判断
损失震荡或出现数值异常检查输入和标签尺度,再降低 optimizer.lr异常是否消失,验证误差是否同步改善
训练和验证都欠拟合增加 epochs,或比较更大的 network.hidden_dims两侧误差是否下降,耗时是否可接受
训练持续改善,验证开始变差按验证指标选模,比较较小网络或 network.dropout固定验证集上的选中模型表现
少数关键节点误差较大检查覆盖,再调整 node_weights、aggregation_mode关键节点与其他节点之间的取舍

这些参数应写在所选算法对应的位置,例如 BC 的学习率在 hyperparameters.optimizer.lr,REVIVE-P 的监督学习率在 hyperparameters.bc.optimizer.lr。完整层级见选择建模与控制算法。

多步训练与过程滞后 ​

下面是在 BC 阶段中加入 4 步闭环训练的片段:

yaml
hyperparameters:
  batch_size: 128
  sequence_train:
    enabled: true
    train_mode: rollout
    horizon: 4

先用短长度确认训练稳定,再逐步延长,并根据内存占用减小批量。比较时固定最终验证长度,否则误差降低可能只是评估时间缩短。

温度相同但后续变化不同,可能是过去加热量与设备蓄热不同;水处理的出水变化可能对应更早的投加动作。这时应检查历史信息是否充分,再考虑历史窗口。有明确物理关系的中间量可用专家函数,可计算的滞后或工况特征可用专家特征。

算法、多步目标、历史输入和机理节点可以组合,但每次增加一个与当前问题相关的因素。ADM2 的专用结构、直接序列监督的网络接口和函数可微性均有使用条件,需先预检,再比较误差。缺少驱动量或训练工况时,单纯加长推演不能补齐信息。

检查 REVIVE-P 的对抗贡献 ​

在相同监督起点和验证条件下,对照关闭、开启 adversarial 的结果。以下参数相对于 hyperparameters.adversarial:

参数组调整目的观察什么
start_epoch让监督模型先学习基本动态对抗开启前后的监督误差
rollout.horizon、rollout.batch_size覆盖目标推演范围,控制片段数量多步误差与显存
ood.weight、判别器窗口和更新参数调整判别信号强度配对条件下的判别能力与预测误差
safe_projection.max_adv_to_sup_norm限制对抗梯度相对监督梯度的强度梯度比例、回退次数和验证误差

判别器接近 0.5 可能表示真假片段相似,也可能表示判别失效,应结合误差曲线判断。对抗开启后监督结果下降时,可以延长预热或降低对抗强度;变化是否有益,以目标工况与固定验证指标为准。

ADM2 则需先核对 target、drivers,再比较 max_adm_step、n_starts 和网络容量。增加预测步长或候选初始化会增加开销,应记录实际收益。

改善控制效果 ​

先核对奖励是否表达了正确的业务方向、量纲与动作代价,再检查模型可用的推演范围。将策略与相同工况下的现有控制器、历史操作以及 Policy BC 比较;Policy BC 自身有拟合误差,不能直接等同于原始操作。

PPO:控制行为偏移与更新强度 ​

参数位于 PPO 阶段的 hyperparameters 下。

现象优先检查或调整需要比较的结果
模型内奖励升高,动作离开已有覆盖区域缩短 rollout_horizon,比较较大的 bpc_weight动作分布、推演误差与业务指标
训练后期剧烈波动降低 optimizer.lr,检查 epsilon 与梯度裁剪KL、clip fraction、数值异常及选中模型
同一批数据更新过强减少 ppo_runs,核对 ppo_batch_num、ppo_batch_size更新幅度与验证回报
不同种子差异较大增加 num_rollout_trajs 并用固定种子组比较平均表现、波动与开销

bpc_weight > 0 时行为约束生效,PPO 支持 bc、wpc;kl 不可作为启用的 bpc_type。约束过强可能压缩可改善空间,过弱可能让策略进入模型不准的区域。奖励尺度改变时,价值损失与正则项的相对权重也会改变,应作为一组设置记录。

SAC:平衡采样与价值更新 ​

SAC 使用 rollout_length 设置采样长度。Q 值快速放大或出现非有限数值时,先检查奖励尺度,再比较较短推演、较小 critic_lr 或更少的 updates_per_step。将采样量、回放数据量与更新次数分别记录。

auto_alpha: true 自动调节探索强度。行为约束支持 none 与 bc,bpc_weight > 0 时应选择支持的类型。世界模型内得分提高但动作覆盖变差时,联合检查 bpc_weight、w_kl、推演长度和模型误差;不要仅凭算法名称推断稳定性。

用动力学扰动检查策略适应性 ​

实际响应有小幅变化、希望策略训练覆盖相邻状态时,可以为 PPO/SAC 配置 dynamics_noise。例如三维状态中的第三列为角速度,可先比较小幅角速度扰动的影响:

yaml
# 策略阶段的 hyperparameters 片段
# states 对应三列 [cos_theta, sin_theta, theta_dot]
dynamics_noise:
  enabled: true
  keys:
    states: [0.0, 0.0, 0.02]

keys 填原始转移状态名,列表是各列在原始单位下的高斯标准差;长度与原始列数一致,值有限且非负。非连续列只能填 0。示例不独立扰动 sin/cos,避免破坏角度表示;守恒量等耦合变量也需按机理处理。

该设置默认 null,与世界模型训练的 sequence_train.state_noise 独立。策略训练期间环境权重保持冻结;raw-delta 图在增量合成下一状态前注入,direct-next 图在下一状态被下游使用前注入,奖励与终止判断使用同一步一致的节点值。SAC 的 rollout_clip 也约束扰动后的值,可能减小实际扰动幅度。

验证和正式推理关闭该训练扰动;训练随机性沿用 seed 与 checkpoint 的随机状态。标准差全部为 0 时不消耗额外随机数。比较时保留相同评估条件,以控制效果和约束表现判断是否保留。

整定控制器 ​

控制器先固定的业务条件调整顺序
MPC动作范围、可获得的未来输入、控制周期先确定规划长度,再比较候选数、迭代数和 warm_start
FFPID误差方向、增益单位、采样周期、执行器能力比例、积分、必要的微分与前馈;同时检验饱和恢复
Residual PID基线控制器、修正幅度、变化率和积分限制在工艺允许范围内搜索增益,检查持续饱和和响应迟缓

FFPID 的积分可减少稳态偏差,也可能增加超调;微分可能放大噪声,可结合 derivative_filter_tau 比较。Residual PID 的修正范围应按动作单位填写,不能直接沿用其他设备的数值。搜索最优点落在候选范围边缘时,先检查响应和工艺限制,再决定是否扩大范围。

控制限制与预测可靠性需要分别检查。需要识别不可靠工况时,接入不确定性评估并检查校准、误报与漏报。带历史、积分或隐藏状态的模型还需为每台设备维护独立会话,部署时正确 reset 和预热,见有状态推理。

平衡效果与计算开销 ​

区分不同窗口与推演长度 ​

先把业务时间换算为采样步数。例如每 5 分钟采样、输送滞后约 30 分钟,可以将 6 步作为历史长度的一个候选,再按误差曲线确认。

用途配置位置增大后主要影响
历史输入graph.nodes 中 inputs 的历史表达式输入信息、维度和部署预热
BC 序列训练hyperparameters.sequence_train.horizon多步损失与训练内存;REVIVE-P 位于 bc 下
PPO 训练采样hyperparameters.rollout_horizon采样范围及模型误差累积
SAC 训练采样hyperparameters.rollout_length采样范围与价值学习
验证推演validation.rollout.horizon评价覆盖时间与选模规则
MPC 在线规划hyperparameters.horizon提前规划能力与推理延迟

各长度用途不同,不需要填写成同一个数值。验证应覆盖计划采用的时间范围;策略采样和规划长度还要结合模型误差。

从任务目录测量已有世界模型的误差随步数变化:

bash
revive suggest-rollout --config config.yaml --data train.npz --model logs/baseline/models/env.pt

结果对应当前数据和指标覆盖的区域。策略探索到的其他区域仍需验证,测量命令不会自动修改配置。

找出实际耗时来源 ​

训练侧先区分数据读取、模型更新、验证和绘图耗时,再调整批量、读取进程、验证间隔或绘图频率。验证缓存设置见评估与选择模型。

MPC 的计算量随 horizon × num_samples × num_iterations 增加,但实际延迟还受批处理与硬件影响,应在部署设备上测量。训练加速后按相同更新次数比较结果,避免把多训练了若干轮误判为参数本身的改善。

比较实验结果 ​

固定条件后再训练 ​

保持数据划分、单位、奖励、选模指标、评估长度和计算预算一致。每个候选使用新的 run ID,修改超参数后重新训练;--resume 用于恢复同一次训练,--force 用于显式覆盖冲突记录。

bash
revive validate --config candidate.yaml --train-data train.npz --val-data val.npz --show-defaults
revive train --config candidate.yaml --train-data train.npz --val-data val.npz --run-id candidate-001 --log-dir logs

用 --show-defaults 与 config.resolved.yaml 确认修改生效,再比较选中模型,避免只比较最后一轮损失。历史窗口、评价定义和图结构变化会影响模型或续训兼容性,应建立新运行。

记录改动与结果 ​

项目建议记录
目标哪个业务现象需要改善,例如温度回落阶段偏差大
改动参数完整路径、原值、新值及理由
固定条件数据、划分、种子、评价定义与训练预算
结果选中模型、关键误差或回报、约束表现、耗时
决策保留或撤回改动,以及还需要补充的证据

默认值用于起步,案例参数对应其数据与目标,新试验值需要通过对照验证。使用同一组随机种子重复比较,可以判断差异是否稳定;最终测试集留到方案确定后使用。

明确参数范围后,可用自动搜索参数批量执行候选。若多种设置都无法改善同一工况,应回到业务变量与数据,检查是否缺少必要信息。