确定性动力学建模
一句话定位:在已知当前隐状态
的条件下,仅通过确定性转移函数 直接计算下一时刻的隐状态 ,无需考虑随机性或概率分布。
前置依赖
- 隐状态表征学习(World Models 基础)
- RNN/LSTM 等序列建模经验
- 马尔可夫决策过程(MDP)基本概念
- 确定性函数逼近的基本思想
核心思想
确定性动力学建模的核心假设是:环境动态是完全确定的,即给定当前状态和动作,下一状态可以被唯一确定。这一假设与 World Models 原始论文(Ha & Schmidt, 2018)中的设定一致。
在 World Models 架构中,动力学模型(Dreamer)接收当前隐状态
其中
确定性建模的优势在于:
- 训练简单:无需处理概率分布,直接最小均方误差
- 计算高效:单次前向传播即可获得下一状态
- 梯度传播顺畅:整个轨迹的梯度可直接反向传播
其局限也很明显:真实环境的动态通常包含噪声和不确定性,确定性假设会带来累积误差,使模型快速偏离真实轨迹。
模型结构图
a_t h_t
│ │
▼ ▼
┌─────────────────────┐
│ 确定性转移函数 │
│ h_{t+1}=f(h_t,a_t) │
└─────────────────────┘
│
▼
h_{t+1}
完整 World Models 架构中的位置:
┌──────────────────────────────────────────────────────────┐
│ World Model (World Models, 2018) │
│ │
│ 观测 o_t ──► 编码器 ──► 隐状态 h_t │
│ ▲ │
│ │ │
│ ┌──────┴──────┐ │
│ │ MDN-RNN │ (混合密度网络) │
│ │ (动力学模型) │ │
│ └──────┬──────┘ │
│ │ │
│ 动作 a_t ───────────────────────────► │ │
│ │
└──────────────────────────────────────────────────────────┘
在 Dreamer 架构中,确定性动力学模型作为世界模型的核心组件之一,与变分推断共同构成完整的学习框架。
数学推导
A. 问题设定
给定观测序列
其中
B. 损失函数
对于确定性模型,训练目标是最小化重构误差和隐状态的预测误差:
或等价地,最小化观测重构损失:
由于确定性假设,期望退化为对唯一
C. 梯度推导
损失函数关于参数
其中:
通过时间反向传播(BPTT),梯度沿整个轨迹传递。对于深层 RNN,梯度可能出现指数级衰减或爆炸,这正是 LSTM/GRU 门控机制被引入的原因。
D. 隐藏状态的信息传递
令
其中:
:更新门 :候选隐状态 为 Sigmoid 函数
这种设计使得梯度流更加稳定,同时保留了长期依赖信息的传递能力。
训练细节
A. 训练流程
-
编码阶段:使用观测编码器将原始观测
映射到隐状态空间 -
动力学预测阶段:基于当前隐状态和动作,预测下一隐状态
-
观测重构阶段:使用隐状态重构下一时刻的观测
-
参数更新:最小化重构误差
,通过 BPTT 梯度更新
B. 超参数设置
| 参数 | 典型值 | 说明 |
|---|---|---|
| 隐状态维度 | 256-1024 | 取决于任务复杂度 |
| RNN 层数 | 1-3 | 层数过深导致梯度问题 |
| 学习率 | 1e-4 ~ 1e-3 | 使用 Adam 优化器 |
| Batch Size | 64-256 | 取决于 GPU 内存 |
| Sequence Length | 50-200 | Rollout 长度 |
C. 训练技巧
- KL 权重预热:在训练初期降低 KL 项权重,帮助模型先学习有效的表征
- 目标网络(Target Network):使用延迟更新的目标网络稳定 Q 值估计
- 梯度裁剪:将梯度范数裁剪到 [-1, 1] 范围内,防止梯度爆炸
推理/-rollout/规划过程
A. 免费 rollout(Free Rollout)
确定性模型的推理过程称为”免费 rollout”或”想象 rollout”——给定当前隐状态和动作序列,无需真实环境交互即可生成虚拟轨迹:
对于 t = 1 到 T:
h_{t+1} = f_\theta(h_t, a_t)
a_{t+1} = \pi_\theta(h_{t+1}) # 策略网络输出动作
记录 (h_{t+1}, a_{t+1}) 到想象轨迹
B. 基于梯度的规划
确定性动力学支持直接对动作序列进行梯度优化。给定累积回报目标:
动作梯度可显式计算:
其中
C. 规划算法
结合确定性动力学模型与模型预测控制(MPC):
- 使用当前隐状态初始化
- 采样动作序列
- 通过动力学模型预测未来隐状态序列
- 评估累积回报
- 选择最优动作执行,其余丢弃
- 重复上述过程
优点与局限
优点
- 计算高效:单次前向传播,无需采样或概率计算
- 梯度透明:梯度可通过 BPTT 直接反向传播到任意时间步
- 模型容量集中:所有参数用于建模确定性动态,不存在概率分布的浪费
- 与梯度优化无缝结合:动作序列可直接通过梯度下降优化
局限
- 无视不确定性:真实环境中感知噪声、动作执行误差、系统本身随机性被忽略
- 误差累积:确定性预测没有随机性抵消单步误差,错误会指数级累积
- 过度拟合:模型可能记忆特定轨迹,而非学习真正的物理规律
- 多模态动态失效:当同一状态-动作对可导致多种结果时(如冰面打滑),确定性模型无法表达这种多模态性
与前后内容的衔接
- 前置内容:隐状态表征学习决定了输入
的质量;编码器-解码器的设计影响动力学模型需要建模的内容 - 后续发展:确定性动力学是随机动力学的基础;确定性 RSSM 是完整 RSSM 的简化版本
- 对比关系:
- 确定性动力学忽略后验分布,直接输出点估计
- 随机动力学引入隐变量
显式建模多模态性和不确定性 - RSSM 将两者结合,同时包含确定性隐藏状态和随机隐变量
可复现实现要点
A. PyTorch 实现框架
import torch
import torch.nn as nn
class DeterministicDynamics(nn.Module):
def __init__(self, hidden_dim, action_dim):
super().__init__()
self.gru = nn.GRUCell(hidden_dim + action_dim, hidden_dim)
def forward(self, h_prev, action):
# h_prev: (batch, hidden_dim)
# action: (batch, action_dim)
x = torch.cat([h_prev, action], dim=-1)
h_next = self.gru(x, h_prev)
return h_nextB. 完整训练循环
def train_step(model, encoder, decoder, optimizer, obs, actions):
# 编码当前观测
h = encoder(obs) # h: (batch, seq, hidden_dim)
# 初始隐状态
h_0 = torch.zeros(obs.size(0), model.hidden_dim, device=obs.device)
# 初始化累积损失
total_loss = 0
# 免费 rollout
for t in range(obs.size(1) - 1):
h_prev = h_0 if t == 0 else h[:, t]
a_t = actions[:, t]
# 确定性动力学预测
h_pred = model(h_prev, a_t)
# 重构观测
obs_recon = decoder(h_pred)
obs_true = obs[:, t+1]
# 重构损失
loss = nn.functional.mse_loss(obs_recon, obs_true)
total_loss += loss
# 反向传播
optimizer.zero_grad()
total_loss.backward()
torch.nn.utils.clip_grad_norm_(model.parameters(), 1.0)
optimizer.step()
return total_loss.item()C. 关键超参数推荐
- 隐状态维度:通常选择 256 或 512
- 使用双头架构:一个用于动力学预测,一个用于奖励预测
- 训练初期冻结编码器,单独训练动力学模型
章节摘要
确定性动力学建模是 World Models 体系中最基础的动态建模方式。它通过确定性神经网络(GRU/LSTM)将当前隐状态和动作映射为下一时刻的隐状态,省略了概率分布的显式建模。
核心数学形式:
训练目标:最小化隐状态预测误差或观测重构误差,通过 BPTT 端到端更新
核心问题:确定性假设忽略了真实环境的随机性和多模态性,导致误差在多步 rollout 过程中指数级累积。这是引入随机动力学和 RSSM 的根本动机。
确定性动力学为理解随机动力学提供了基线,是理解完整 RSSM 架构的起点。在后续章节中,我们将逐步放宽确定性假设,最终建立能够同时建模确定性和随机性、捕获多模态动态的完整世界模型。
关键词
确定性动力学、免费 rollout、BPTT、GRU、隐状态预测、马尔可夫假设、世界模型、误差累积、模型预测控制、梯度规划