Skip to main content

Dreamer V3

Intro​

世界模型会预测潜在动作带来的结果,评判家(critic)神经网络评估每个结果的价值,行动家(actor)神经网络则选择能够获得最优结果的动作

a. Dreamer 在全部任务域中使用同一套固定超参数,在大量基准测试与不同数据规模下,性能优于经过精细调参的专家算法

b. 无需额外定制,Dreamer 从零开始,在稀疏奖励条件下学会在知名游戏《我的世界》中获取钻石

我的世界特点: sparse rewards, exploration difficulty, long time horizons, and the procedural diversity

提出DreamerV3,包含三个神经网络:Worldmodel预测各个潜在动作会产生的结果,critic评估每个结果的价值,actor选择动作

利用buffer同步训练

World Model​

RSSM​

RSSM 就是 Recurrent State-Space Model,循环状态空间模型

类似:

RNN 记忆+随机 latent state\text{RNN 记忆} + \text{随机 latent state}

DreamerV3 里的 RSSM 核心就是这两部分:

ht\boxed{h_t}

和

zt\boxed{z_t}

其中 hth_t 是 deterministic recurrent state,负责记住过去;ztz_t 是 stochastic state,负责表示当前环境里不确定、细节性的状态。论文把两者拼在一起作为 model state

RSSM 的一轮更新、训练时的两条状态路径,以及它们的对齐关系可以合并为:

(ht−1,zt−1)→at−1ht{→xtzt→(ht,zt)posterior:编码真实观测,形成 model state⟶z^t≈ztprior:模型预测,并与 posterior 对齐(h_{t-1}, z_{t-1}) \xrightarrow{a_{t-1}} h_t \left\{ \begin{array}{ll} \xrightarrow{x_t} z_t \xrightarrow{} (h_t, z_t) & \text{posterior:编码真实观测,形成 model state} \\ \longrightarrow \hat{z}_t \approx z_t & \text{prior:模型预测,并与 posterior 对齐} \end{array} \right.

DreamerV3 world model learning

还有三个项目,注意,这里用的是真实latent r^t∼pϕ(r^t∣ht,zt)\hat{r}_t \sim p_\phi(\hat{r}_t \mid h_t, z_t) c^t∼pϕ(c^t∣ht,zt)\hat{c}_t \sim p_\phi(\hat{c}_t \mid h_t, z_t) x^t∼pϕ(x^t∣ht,zt)\hat{x}_t \sim p_\phi(\hat{x}_t \mid h_t, z_t)

RSSM architecture

Loss​

损失包括最小化预测损失 Lpred\mathcal{L}_\text{pred}、动力学损失 Ldyn\mathcal{L}_\text{dyn} 与表征损失 Lrep\mathcal{L}_\text{rep}。

L(ϕ)≜Eqϕ[∑t=1T(βpredLpred(ϕ)+βdynLdyn(ϕ)+βrepLrep(ϕ))]\mathcal{L}(\phi) \triangleq \mathbb{E}_{q_\phi}\left[\sum_{t=1}^{T}\Big(\beta_\text{pred}\mathcal{L}_\text{pred}(\phi)+\beta_\text{dyn}\mathcal{L}_\text{dyn}(\phi)+\beta_\text{rep}\mathcal{L}_\text{rep}(\phi)\Big)\right]

1. Prediction loss​

Lpred(ϕ)≜−ln⁡pϕ(xt∣zt,ht)−ln⁡pϕ(rt∣zt,ht)−ln⁡pϕ(ct∣zt,ht)\mathcal{L}_\text{pred}(\phi) \triangleq -\ln p_\phi(x_t \mid z_t, h_t) - \ln p_\phi(r_t \mid z_t, h_t) - \ln p_\phi(c_t \mid z_t, h_t) Lpred:latent 里面有没有真实世界的信息?\boxed{L_{\mathrm{pred}} : \text{latent 里面有没有真实世界的信息?}}

Prediction loss 要求 (ht,zt)(h_t, z_t) 保留足以重建观测 xtx_t、预测奖励 rtr_t 与 continue 信号 ctc_t 的信息,因此它直接约束 latent 与真实环境有关。

若只优化 Ldyn+LrepL_{\mathrm{dyn}} + L_{\mathrm{rep}},q(z∣x)q(z \mid x) 和 p(z∣h)p(z \mid h) 可以都输出同一个常量,虽然此时 KL⁡(q∥p)=0\operatorname{KL}(q \| p) = 0,但 zz 不包含任何有用信息。LpredL_{\mathrm{pred}} 正是用来排除这种 latent collapse。

展开:没有 prediction loss 时的 latent collapse

对任意输入都输出同一个 latent:

q(z∣x)=z0,p(z∣h)=z0q(z \mid x) = z_0, \qquad p(z \mid h) = z_0

因此:

KL⁡(q∥p)=0\operatorname{KL}(q \| p) = 0

两者虽完全一致,但 z0z_0 不携带观测、奖励或环境状态的信息。

2. Dynamics loss​

Ldyn(ϕ)≜max⁡(1,  KL⁡[sg⁡(qϕ(zt∣ht,xt))  ∥  pϕ(zt∣ht)])\mathcal{L}_\text{dyn}(\phi) \triangleq \max\Big(1,\; \operatorname{KL}\big[\operatorname{sg}\big(q_\phi(z_t \mid h_t, x_t)\big)\; \big\|\; p_\phi(z_t \mid h_t)\big]\Big) Ldyn:prior 能不能追上 posterior?\boxed{L_{\mathrm{dyn}} : \text{prior 能不能追上 posterior?}}

这里的 sg⁡(q)\operatorname{sg}(q) 表示 stop gradient:把 posterior qq 当作固定目标,只让 prior pp 去追它,而不让这项损失反过来改变 qq。

式中的 max⁡(1,KL⁡)\max(1, \operatorname{KL}) 称为 free bits:当 KL 已经足够小时,不再继续把它压得更低。这样 encoder 不会为了让 prior 更容易预测而丢弃观测中的细节;它仍可编码有用信息,再由 prior 根据 hth_t 尽量逼近 posterior。

展开:为什么需要 free bits

对两张细节不同的观测,posterior 本可编码为不同状态:

q(z∣ht,xt(1))=zt(1),q(z∣ht,xt(2))=zt(2)q(z \mid h_t, x_t^{(1)}) = z_t^{(1)}, \qquad q(z \mid h_t, x_t^{(2)}) = z_t^{(2)}

但 prior 只看到 hth_t,未必能区分这些细节。若持续强压 KL,encoder 可能把两者压成 zt(1)≈zt(2)z_t^{(1)} \approx z_t^{(2)};free bits 在 KL 足够小时停止施压,避免这种信息丢失。

3. Representation loss​

Lrep(ϕ)≜max⁡(1,  KL⁡[qϕ(zt∣ht,xt)  ∥  sg⁡(pϕ(zt∣ht))])\mathcal{L}_\text{rep}(\phi) \triangleq \max\Big(1,\; \operatorname{KL}\big[q_\phi(z_t \mid h_t, x_t)\; \big\|\; \operatorname{sg}\big(p_\phi(z_t \mid h_t)\big)\big]\Big) Lrep:posterior 能不能变得更容易预测?\boxed{L_{\mathrm{rep}} : \text{posterior 能不能变得更容易预测?}}

这里 prior 被 stop gradient 固定,因此该损失更新的是 posterior:即使它看到了真实 xtx_t,也应避免编码只依赖当前观测、却无法由 dynamics model 从 hth_t 预测的细节。系数 βrep=0.1\beta_{\mathrm{rep}} = 0.1 让这种约束保持温和。


在早期实验中偶尔观察到 KL 损失出现尖峰现象,这与深度变分自编码器相关文献的报道一致。为解决该问题,将编码器与动力学预测器的分类分布参数化为1% 均匀分布与 99% 神经网络输出的混合分布。

损失尖峰:神经网络输出的分类分布,会慢慢坍缩成确定性分布:某一个类别概率趋近于 1,剩下全部类别概率≈0。 也就是模型变得极度确信,输出接近 one‑hot。 此时计算 KL 散度,会出现数值爆炸、梯度异常,KL 损失冒出尖峰,破坏训练

Critic​

DreamerV3 的 critic 工作在 world model 的 latent state:

st=(ht,zt)\boxed{s_t = (h_t, z_t)}

它不预测当前 reward,而是估计从当前状态开始的未来累计 return。critic 输出 return distribution(这里采用category distribution),value 是其期望:

vψ(Rt∣st),vt=E[vψ(⋅∣st)]v_\psi(R_t \mid s_t), \qquad \boxed{v_t = \mathbb{E}\big[v_\psi(\cdot \mid s_t)\big]}

Loss​

critic 同时训练 imagined 与 replay 两部分:

Lcritic=βvalLimag+βrepvalLreplay\boxed{ \mathcal{L}_{\mathrm{critic}} = \beta_{\mathrm{val}}\mathcal{L}_{\mathrm{imag}} + \beta_{\mathrm{repval}}\mathcal{L}_{\mathrm{replay}} } L(ψ)=−∑t=1Tln⁡pψ(Rtλ∣st)\boxed{ \mathcal{L}(\psi) = -\sum_{t=1}^{T}\ln p_\psi(R_t^\lambda \mid s_t) } Rtλ=r^t+γc^t[(1−λ)vt+λRt+1λ]\boxed{ R_t^\lambda = \hat r_t + \gamma \hat c_t \left[(1 - \lambda)v_t + \lambda R_{t+1}^\lambda\right] } λ=0.95γ=0.997\lambda=0.95 \quad \gamma=0.997
展开:如何理解 λ-return

可以把它读成:

λ-return=当前即时 reward+折扣后的未来价值估计\boxed{ \lambda\text{-return} = \text{当前即时 reward} + \text{折扣后的未来价值估计} }

r^t\hat r_t 是当前一步的模型预测 reward;γ\gamma 对未来回报做 discount;c^t\hat c_t 是 continuation flag。若 episode 在这一步结束,则 c^t=0\hat c_t = 0,未来项被清零,得到 Rtλ=r^tR_t^\lambda = \hat r_t。

方括号内是在两种未来估计之间插值:vtv_t 是 critic 的 bootstrap value,Rt+1λR_{t+1}^\lambda 则包含更多后续 imagined rewards。λ\lambda 越小,越早相信 critic;λ\lambda 越大,越长地沿 imagined trajectory 累积 reward:

λ=0⟹Rtλ=r^t+γc^tvt\lambda = 0 \quad \Longrightarrow \quad R_t^\lambda = \hat r_t + \gamma \hat c_t v_tλ=1⟹Rtλ=r^t+γc^tRt+1λ\lambda = 1 \quad \Longrightarrow \quad R_t^\lambda = \hat r_t + \gamma \hat c_t R_{t+1}^\lambda

因此这个 target 需要从末端向前递归计算。上式中的帽子表示 imagined trajectory 使用 world model 的预测;在 replay 路径中,将 r^t,c^t\hat r_t, \hat c_t 替换为环境真实给出的 rtreal,ctrealr_t^{\mathrm{real}}, c_t^{\mathrm{real}}。


终点使用 critic 的 bootstrap value:

RTλ=vT\boxed{R_T^\lambda = v_T}

再从后向前计算:

RTλ⟶RT−1λ⟶⋯⟶R0λR_T^\lambda \longrightarrow R_{T-1}^\lambda \longrightarrow \cdots \longrightarrow R_0^\lambda

其中 βval=1\beta_{\mathrm{val}} = 1 用于 imagined trajectory,βrepval=0.3\beta_{\mathrm{repval}} = 0.3 用于含真实 rtrealr_t^{\mathrm{real}} 的 replay trajectory。

主要在梦里学+用真实 reward 辅助校正\boxed{\text{主要在梦里学} + \text{用真实 reward 辅助校正}}

从 replay buffer 中的真实状态出发,当前 actor 与 world model 滚动生成 imagined trajectory:

s0→πθa0,(s0,a0)⟶s1,r^0,c^0s_0 \xrightarrow{\pi_\theta} a_0, \qquad (s_0, a_0) \longrightarrow s_1, \hat r_0, \hat c_0 s1→πθa1⟶s2,r^1,c^1⟶⋯⟶sTs_1 \xrightarrow{\pi_\theta} a_1 \longrightarrow s_2, \hat r_1, \hat c_1 \longrightarrow \cdots \longrightarrow s_T

因此得到 imagined states、actions、rewards 与 continuation flags:

s0,s1,…,sT,r^0,r^1,…,r^T−1\boxed{s_0, s_1, \ldots, s_T}, \qquad \boxed{\hat r_0, \hat r_1, \ldots, \hat r_{T-1}}

对于真实回放 这部分使用 rtrealr_t^{\mathrm{real}}(而非 world model 预测的 r^t\hat r_t)构造 replay 的 λ\lambda-return target,并计算 Lreplay\mathcal{L}_{\mathrm{replay}}。它的作用是当 reward predictor 不够准确时,用真实 reward 校正 critic 的 value prediction。


RtλR_t^\lambda 依赖 critic 自己预测的 vtv_t,因此 target 会随 critic 改变而产生不稳定性。DreamerV3 使用 critic 参数的 EMA 版本进行正则化,作用类似 target network,使训练 target 更平稳。

Actor​

  • 策略网络(Actor)学习选择能够最大化回报的动作,同时依靠熵正则项entropy regularizer ( ηH(πθ(⋅∣st))\eta H(\pi_\theta(\cdot\mid s_t)) ) 完成探索
  • 理想情况下,当奖励稀疏时(HH主导),我们希望智能体多做探索;当奖励密集或者奖励就在眼前时(策略梯度主导),则更多利用已有经验(通过ηH(πθ(⋅∣st))\eta H(\pi_\theta(\cdot\mid s_t)))
  • 探索的程度不应受环境奖励的任意缩放所影响。这就需要对回报的量级做归一化(SS),同时保留奖励出现频率的相关信息。

Loss​

 L(θ)=−∑t=1Tsg⁡(Rtλ−vψ(st)max⁡(1,S))log⁡πθ(at∣st)+ηH(πθ(⋅∣st))\ \mathcal L(\theta) = -\sum_{t=1}^{T} \operatorname{sg} \left( \frac{ R_t^\lambda-v_\psi(s_t) }{ \max(1,S) } \right) \log \pi_\theta(a_t\mid s_t) + \eta H(\pi_\theta(\cdot\mid s_t))

本质策略梯度 + 正则

优势函数 At=Rtλ−vψ(st)A_t=R_t^\lambda-v_\psi(s_t)

return scale 用 5% 到 95% 分位数的范围,保证策略梯度和熵的尺度保持相对一致,同时避免极端值的干扰

S=EMA(Per95(Rλ)−Per5(Rλ))S = \mathrm{EMA} \left( \mathrm{Per}_{95}(R^\lambda) - \mathrm{Per}_{5}(R^\lambda) \right)

鼓励explore

ηH(πθ(⋅∣st))\eta H(\pi_\theta(\cdot\mid s_t)) H(π(⋅∣s))=−∑i=1Kpilog⁡pi H(\pi(\cdot|s)) = -\sum_{i=1}^{K}p_i\log p_i η=3×10−4\eta=3\times10^{-4}

前面要做 return normalization,就是为了这个 entropy scale 能跨环境固定使用

于是优化器会主动修改 θ\theta,让 HH 变大,也就是将分布朝均匀的方向推动,因此鼓励探索

Robust prediction​

DreamerV3 希望用一套固定超参数跨任务训练,但不同环境中的 observation、reward 与 return 的数值范围可能相差多个数量级。直接使用普通回归会让大数值 target 主导梯度,训练容易不稳定。

普通 MSE 的形式为:

LMSE=12(y^−y)2,∂LMSE∂y^=y^−y\mathcal{L}_{\mathrm{MSE}} = \frac{1}{2}(\hat y - y)^2, \qquad \frac{\partial \mathcal{L}_{\mathrm{MSE}}}{\partial \hat y} = \hat y - y

因此当 yy 很大而预测仍接近零时,梯度也会很大。DreamerV3 的 Robust prediction 用两条路径处理不同类型的 target:

vector / deterministic targets⟶symlog squared errorreward / return (stochastic)⟶symexp two-hot loss\boxed{ \begin{array}{ll} \text{vector / deterministic targets} &\longrightarrow \text{symlog squared error} \\ \text{reward / return (stochastic)} &\longrightarrow \text{symexp two-hot loss} \end{array} }

1. symlog squared error:压缩连续确定性目标​

这条路径主要用于 vector observations 等连续且相对确定的 target。这里需要区分输入模态:

  • Images:使用卷积编码器提取特征;decoder 使用转置卷积重建图像,并在输出端使用 sigmoid。图像不会先做 symlog。
  • Vector inputs:才会使用 symlog;对应的 decoder target 也在 symlog 空间中进行预测。

作用于 World Model Loss

Lpred=−ln⁡pϕ(xt∣zt,ht)−ln⁡pϕ(rt∣zt,ht)−ln⁡pϕ(ct∣zt,ht)\mathcal L_{\rm pred} = -\ln p_\phi(x_t\mid z_t,h_t) -\ln p_\phi(r_t\mid z_t,h_t) -\ln p_\phi(c_t\mid z_t,h_t)

的

−ln⁡pϕ(xt∣zt,ht)-\ln p_\phi(x_t\mid z_t,h_t)

symlog 保留正负号,同时压缩大绝对值:

symlog⁡(x)=sign⁡(x)ln⁡(1+∣x∣)\boxed{ \operatorname{symlog}(x) = \operatorname{sign}(x)\ln(1 + |x|) }

其逆变换为:

symexp⁡(x)=sign⁡(x)(e∣x∣−1)\boxed{ \operatorname{symexp}(x) = \operatorname{sign}(x)\big(e^{|x|} - 1\big) }

例如,大数值会被压缩到温和范围:

100000⟶symlog⁡(100000)≈11.5,−100000⟶−11.5100000 \longrightarrow \operatorname{symlog}(100000) \approx 11.5, \qquad -100000 \longrightarrow -11.5

而在零附近,symlog⁡(x)≈x\operatorname{symlog}(x) \approx x,因此不会明显扭曲本来就很小的数值。网络不直接回归 yy,而是回归其 symlog 值:

fθ(x)≈symlog⁡(y)f_\theta(x) \approx \operatorname{symlog}(y) Lsymlog=12(fθ(x)−symlog⁡(y))2\boxed{ \mathcal{L}_{\mathrm{symlog}} = \frac{1}{2}\left(f_\theta(x) - \operatorname{symlog}(y)\right)^2 }

需要原始尺度的预测时,再使用:

y^=symexp⁡(fθ(x))\hat y = \operatorname{symexp}\big(f_\theta(x)\big)

2. symexp two-hot loss:处理 reward 与 return​

用于 reward predictor 与 critic 的 Loss

即

−ln⁡pϕ(rt∣zt,ht)-\ln p_\phi(r_t\mid z_t,h_t)

and

L(ψ)=−∑t=1Tln⁡pψ(Rtλ∣st) \mathcal{L}(\psi) = -\sum_{t=1}^{T}\ln p_\psi(R_t^\lambda \mid s_t)

reward 与 return 可能是随机的:同一状态的未来回报可能有多个合理结果(如 0和100)。若直接回归单一标量,模型容易学到不一定真实出现过的平均值(50);因此 reward predictor 与 critic 改为预测一个 distribution。

网络先在 symlog 空间均匀设置 bins [−80,−60,−40…,20,40,… ][-80, -60, -40 \dots, 20, 40, \dots] ,再通过 symexp 映射回原始数值空间:

ui=−20+40(i−1)K−1,bi=symexp⁡(ui),i=1,…,Ku_i = -20 + \frac{40(i - 1)}{K - 1}, \qquad b_i = \operatorname{symexp}(u_i), \qquad i = 1, \ldots, K

这会让 bins 在零附近更密、绝对值较大时更稀疏,因而能够覆盖宽广的 return 范围。训练时使用 two-hot cross entropy;梯度主要取决于模型是否将概率分配给正确 bins,而不直接随 target 数值大小增长。

Category Distribution​

定义一组离散 return bins。给定状态 sts_t,critic/reward predictor 网络输出 logits,经 softmax 得到各 bin 的概率,也就是 return distribution:

vψ(Rt∣st)=Cat⁡(p1,p2,…,pK)v_\psi(R_t \mid s_t) = \operatorname{Cat}(p_1, p_2, \ldots, p_K)

其中:

pi=P(Rt=bi∣st)p_i = P(R_t = b_i \mid s_t)

虽然 bins 是离散的,最终的 value 仍可取连续值,因为使用各 bin 的概率加权平均:

R^t=∑i=1Kpibi=softmax⁡(fψ(st))TB\hat R_t = \sum_{i=1}^{K} p_i b_i = \operatorname{softmax}\big(f_\psi(s_t)\big)^\mathsf{T} B

例如,若相邻 bins 为 bk=10b_k = 10、bk+1=20b_{k+1} = 20,概率为 pk=0.7p_k = 0.7、pk+1=0.3p_{k+1} = 0.3,则预测为 0.7×10+0.3×20=130.7 \times 10 + 0.3 \times 20 = 13。

将 return 转换成 two-hot 标签​

若 target RtλR_t^\lambda 落在相邻 bins bkb_k 与 bk+1b_{k+1} 之间,则只有这两个 bin 的标签非零,且权重按距离线性插值:

twohot⁡(Rtλ)k=bk+1−Rtλbk+1−bk,twohot⁡(Rtλ)k+1=Rtλ−bkbk+1−bk\operatorname{twohot}(R_t^\lambda)_k = \frac{b_{k+1} - R_t^\lambda}{b_{k+1} - b_k}, \qquad \operatorname{twohot}(R_t^\lambda)_{k+1} = \frac{R_t^\lambda - b_k}{b_{k+1} - b_k}

因此论文中的负对数似然:

−log⁡pψ(Rtλ∣st)-\log p_\psi(R_t^\lambda \mid s_t)

在 categorical 实现中等价于:

−∑i=1Ktwohot⁡(Rtλ)ilog⁡pi\boxed{ -\sum_{i=1}^{K} \operatorname{twohot}(R_t^\lambda)_i \log p_i }

展开为:

L=−bk+1−Rtλbk+1−bklog⁡pk−Rtλ−bkbk+1−bklog⁡pk+1\boxed{ \mathcal{L} = -\frac{b_{k+1} - R_t^\lambda}{b_{k+1} - b_k}\log p_k - \frac{R_t^\lambda - b_k}{b_{k+1} - b_k}\log p_{k+1} }

Result​

Benchmark​

开展了大规模实证研究,覆盖 8 个任务域,包含连续与离散动作、图像与低维输入、稠密与稀疏奖励、不同奖励量级、二维与三维虚拟世界,以及程序生成式任务

DreamerV3 benchmark summary

Diverse visual benchmark domains

Minecraft​

在热门游戏《我的世界》中采集钻石,回合会持续到玩家死亡,或是最多运行 36000 步 (30min)

在此期间,智能体需要搜集资源、制作工具,在稀疏奖励条件下依次获取 12 种物品。熟练的人类玩家拿到钻石大约需要 20 分钟

直接使用 Dreamer 的默认超参数开箱即用,成为唯一能找到钻石的算法

Minecraft diamond discovery results

消融实验证明,全部鲁棒性技术都对最终性能存在贡献;其中世界模型的 KL 目标作用最为显著

总体来看,每一项技术都会在一部分任务上起到关键作用,但在另一些任务上可能对性能几乎没有影响

具备稳健的规模扩展能力,在 Crafter 与一项 DMLab 任务 上训练 6 种不同模型规模

在不同模型规模、回放比下都能稳健学习 DreamerV3 robustness and scaling results

Appendix​

Minecraft diamond-env:观测空间与动作空间​

DreamerV3 使用的是基于 MineRL 改造的 diamond-env,而不是人类直接以键盘、鼠标操作的原版 Minecraft。论文中的 block-breaking setting 指环境已将部分复杂交互封装为高层离散动作。

Episode​

  • 一回合从角色出生开始,在角色死亡或达到最大 36,00036{,}000 步时结束,约为 30 分钟游戏时间。
  • 共有 12 个稀疏奖励里程碑:原木、木板、木棍、工作台、木镐、圆石、熔炉、石镐、铁矿、铁锭、铁镐、钻石。
  • 每种里程碑物品在一个 episode 中首次获得时奖励 +1+1,理论最高累计奖励为 1212;生命变化另有很小的 ±0.01\pm 0.01 奖励或惩罚。

观测空间​

严格来说,环境提供给 agent 的是 observation xtx_t,而不是完整的 Markov state。论文第 22 页给出的多模态 observation 为:

xt={It,  inventoryt,  milestone-historyt,  equipped-itemt,  healtht,  hungert,  breatht}\boxed{ x_t = \{I_t,\; \text{inventory}_t,\; \text{milestone-history}_t,\; \text{equipped-item}_t,\; \text{health}_t,\; \text{hunger}_t,\; \text{breath}_t\} }
  • POV 图像:第一人称的 64 × 64 × 3 RGB 截图。
  • Inventory count vector:400 多种游戏物品的数量计数向量。
  • Milestone history:从 episode 开始以来各物品的最大持有数量,用于提供已完成 milestone 的历史信息。
  • Equipped item:当前装备物品的 one-hot 向量。
  • 标量信息:health、hunger 与 breath。

论文列出的 observation 字段不含真实世界坐标 (x,y,z)(x, y, z)。DreamerV3 将图像通过 CNN encoder 编码、将向量输入经 symlog 后通过 MLP encoder 编码,并写入 RSSM 的 latent model state:

st=(ht,zt)\boxed{s_t = (h_t, z_t)}

因此应区分环境 observation xtx_t 与 Dreamer 内部的 latent state sts_t。

动作空间:flat categorical action space​

论文将 MineRL 环境重构为 flat categorical action space:actor 在单一离散动作集合中选择一个类别,而不是直接输出一组原始键鼠控制量:

at∈{1,2,…,K}\boxed{a_t \in \{1, 2, \ldots, K\}} πθ(at∣st)=Categorical⁡(p1,…,pK),at∼πθ(⋅∣st)\pi_\theta(a_t \mid s_t) = \operatorname{Categorical}(p_1, \ldots, p_K), \qquad a_t \sim \pi_\theta(\cdot \mid s_t)

MineRL v0.4.4 提供 abstract crafting actions,因此 crafting 不要求 agent 在 GUI 中逐步操作。Minecraft 的 jump 需要持续按键才会生效,环境层将 jump 实现为后台持续按住 200 ms200\,\mathrm{ms}。

论文没有在这一页完整列出 KK 个动作类别及其逐项定义,因此不应仅凭论文把动作集合的每一个具体动作写死。可以确定的是:这里是高层离散抽象动作空间,DreamerV3 的 actor 使用离散动作的 REINFORCE 梯度。

MDP 总结​

O:RGB、inventory、milestone history、equipped item、health/hunger/breathS:st=(ht,zt),由 Dreamer 根据 xt 构造的 latent stateA:flat categorical 的高层离散动作集合R:12 个里程碑首次获得各 +1,以及生命变化的 ±0.01T:死亡或 36,000 步γ:0.997\boxed{ \begin{aligned} \mathcal{O} &: \text{RGB、inventory、milestone history、equipped item、health/hunger/breath} \\ \mathcal{S} &: s_t = (h_t, z_t)\text{,由 Dreamer 根据 }x_t\text{ 构造的 latent state} \\ \mathcal{A} &: \text{flat categorical 的高层离散动作集合} \\ \mathcal{R} &: \text{12 个里程碑首次获得各 }+1\text{,以及生命变化的 }\pm 0.01 \\ \mathcal{T} &: \text{死亡或 }36{,}000\text{ 步} \\ \gamma &: 0.997 \end{aligned} }

常见误区​

  • AI 不是以原版 Minecraft 的键鼠原语操作,而是在抽象后的 diamond-env 中行动。
  • DreamerV3 算法本身不定义观测和动作;它们由 diamond-env 环境提供。
  • 向量观测会在 DreamerV3 内部经过 symlog 预处理,但观测数据本身仍由环境产生。
  • 论文明确给出的是 flat categorical action space、abstract crafting actions 与 jump 的 200 ms 按住机制;并未在该页列出全部具体动作类别。

与原版 MineRLObtainDiamond 相比,diamond-env 使用 flat categorical 动作与 abstract crafting actions,将部分复杂交互从键鼠原语层面抽象出来,从而降低动作空间的探索难度。

DreamerV3 模块架构总览​

模块输入输出论文中的架构作用
Image Encoder图像 xtx_tobservation feature,供 posterior 推断 ztz_tstride-2 CNN;最后压缩到 6×66 \times 6 或 4×44 \times 4 后 flatten图像编码
Vector Encoderinventory、health 等 vectorfeaturesymlog + 3-layer MLP编码结构化状态
RSSM Sequence Modelht−1,zt−1,at−1h_{t-1}, z_{t-1}, a_{t-1}hth_tGRU;block-diagonal recurrent weights,8 blocks维护历史与动力学记忆
Encoder / Posteriorht,xth_t, x_tqϕ(zt∣ht,xt)q_\phi(z_t \mid h_t, x_t)categorical latent distribution从真实观测推断 latent
Dynamics Predictor / Priorhth_tpϕ(zt∣ht)p_\phi(z_t \mid h_t)MLP + categorical distribution预测 latent dynamics
Image Decoderht,zth_t, z_tx^t\hat x_ttransposed stride-2 CNN + sigmoid重建图像
Reward Predictorht,zth_t, z_tpϕ(rt∣ht,zt)p_\phi(r_t \mid h_t, z_t)1-layer MLP预测 reward distribution
Continue Predictorht,zth_t, z_tpϕ(ct∣ht,zt)p_\phi(c_t \mid h_t, z_t)1-layer MLP预测 episode 是否继续
Actorst=(ht,zt)s_t = (h_t, z_t)πθ(at∣st)\pi_\theta(a_t \mid s_t)3-layer MLP选择动作
Criticst=(ht,zt)s_t = (h_t, z_t)return distribution3-layer MLP预测长期价值