确定性动力学建模

一句话定位:在已知当前隐状态 的条件下,仅通过确定性转移函数 直接计算下一时刻的隐状态 ,无需考虑随机性或概率分布。


前置依赖

  • 隐状态表征学习(World Models 基础)
  • RNN/LSTM 等序列建模经验
  • 马尔可夫决策过程(MDP)基本概念
  • 确定性函数逼近的基本思想

核心思想

确定性动力学建模的核心假设是:环境动态是完全确定的,即给定当前状态和动作,下一状态可以被唯一确定。这一假设与 World Models 原始论文(Ha & Schmidt, 2018)中的设定一致。

在 World Models 架构中,动力学模型(Dreamer)接收当前隐状态 和动作 ,通过确定性神经网络直接输出下一隐状态:

其中 通常由一个门控循环单元(GRU)或 LSTM 实现,确保信息流的平稳传递。

确定性建模的优势在于:

  1. 训练简单:无需处理概率分布,直接最小均方误差
  2. 计算高效:单次前向传播即可获得下一状态
  3. 梯度传播顺畅:整个轨迹的梯度可直接反向传播

其局限也很明显:真实环境的动态通常包含噪声和不确定性,确定性假设会带来累积误差,使模型快速偏离真实轨迹。


模型结构图

        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. 问题设定

给定观测序列 Extra close brace or missing open brace\{(o_1, a_1), (o_2, a_2), \ldots, (o_T, a_T)},其中 为观测, 为动作。确定性动力学模型的目标是学习一个映射:

其中 是 Dirac delta 分布,意味着给定输入时输出的分布退化成一个唯一确定的值。

B. 损失函数

对于确定性模型,训练目标是最小化重构误差和隐状态的预测误差:

或等价地,最小化观测重构损失:

由于确定性假设,期望退化为对唯一 的计算。

C. 梯度推导

损失函数关于参数 的梯度为:

其中:

通过时间反向传播(BPTT),梯度沿整个轨迹传递。对于深层 RNN,梯度可能出现指数级衰减或爆炸,这正是 LSTM/GRU 门控机制被引入的原因。

D. 隐藏状态的信息传递

,GRU 的更新方程为:

其中:

  • :更新门
  • :候选隐状态
  • 为 Sigmoid 函数

这种设计使得梯度流更加稳定,同时保留了长期依赖信息的传递能力。


训练细节

A. 训练流程

  1. 编码阶段:使用观测编码器将原始观测 映射到隐状态空间

  2. 动力学预测阶段:基于当前隐状态和动作,预测下一隐状态

  3. 观测重构阶段:使用隐状态重构下一时刻的观测

  4. 参数更新:最小化重构误差 ,通过 BPTT 梯度更新

B. 超参数设置

参数典型值说明
隐状态维度256-1024取决于任务复杂度
RNN 层数1-3层数过深导致梯度问题
学习率1e-4 ~ 1e-3使用 Adam 优化器
Batch Size64-256取决于 GPU 内存
Sequence Length50-200Rollout 长度

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. 基于梯度的规划

确定性动力学支持直接对动作序列进行梯度优化。给定累积回报目标:

动作梯度可显式计算:

其中 通过 RNN 的隐藏状态反向传播获得。

C. 规划算法

结合确定性动力学模型与模型预测控制(MPC):

  1. 使用当前隐状态初始化
  2. 采样动作序列
  3. 通过动力学模型预测未来隐状态序列
  4. 评估累积回报
  5. 选择最优动作执行,其余丢弃
  6. 重复上述过程

优点与局限

优点

  1. 计算高效:单次前向传播,无需采样或概率计算
  2. 梯度透明:梯度可通过 BPTT 直接反向传播到任意时间步
  3. 模型容量集中:所有参数用于建模确定性动态,不存在概率分布的浪费
  4. 与梯度优化无缝结合:动作序列可直接通过梯度下降优化

局限

  1. 无视不确定性:真实环境中感知噪声、动作执行误差、系统本身随机性被忽略
  2. 误差累积:确定性预测没有随机性抵消单步误差,错误会指数级累积
  3. 过度拟合:模型可能记忆特定轨迹,而非学习真正的物理规律
  4. 多模态动态失效:当同一状态-动作对可导致多种结果时(如冰面打滑),确定性模型无法表达这种多模态性

与前后内容的衔接

  • 前置内容:隐状态表征学习决定了输入 的质量;编码器-解码器的设计影响动力学模型需要建模的内容
  • 后续发展:确定性动力学是随机动力学的基础;确定性 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_next

B. 完整训练循环

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、隐状态预测、马尔可夫假设、世界模型、误差累积、模型预测控制、梯度规划