Skip to main content

Dreamer

Dreamer は、latent dynamics model の中で imagined rollout を行い、policy を学習する model-based reinforcement learning agent です。DreamerV3 では、多様な domain に対して同じ hyperparameter で強い性能を示すことを目指しています。

基本 idea

Dreamer は、現実環境で集めた experience から world model を学習し、その world model の latent space 内で future を想像します。Policy は、その imagined future 上で reward を最大化するように更新されます。

World model

Dreamer の world model は、observation を latent state に encode し、action による state transition を予測します。

  • Representation model: p(ztht,ot)p(z_t \mid h_t, o_t)
  • Dynamics model: p(ztht)p(z_t \mid h_t)
  • Reward model: p(rtht,zt)p(r_t \mid h_t, z_t)
  • Continuation model: episode が続くかを予測します。

Latent imagination

Dreamer の核心は、pixel を生成してから policy を学習するのではなく、latent state の中で rollout する点です。

zt+1pθ(zt+1zt,at)z_{t+1} \sim p_\theta(z_{t+1} \mid z_t, a_t)

この imagined trajectory 上で reward と value を予測し、actor-critic を更新します。

DreamerV3

DreamerV3 は、Atari、DM Control、Minecraft など多様な domain に対して、同じ algorithm と hyperparameter で動くことを重視した version です。World model、actor、critic の training を安定化するための normalization や discrete latent の設計が使われます。

何が重要か

Dreamer の重要性は、world model が単なる video predictor ではなく、control に使える latent simulator として機能することを示した点です。

数式で見る Dreamer の imagined rollout

Dreamer は、RSSM などの latent dynamics model を学習し、その中で imagined trajectory を生成して actor-critic を学習します。Latent state zt\mathbf{z}_t と action ata_t から次 state を予測します。

zt+1pθ(zt+1zt,at)\mathbf{z}_{t+1}\sim p_\theta(\mathbf{z}_{t+1}\mid \mathbf{z}_t,a_t)

Imagined rollout における return は次のように書けます。

Vtλ=rt+γ((1λ)vψ(zt+1)+λVt+1λ)V^\lambda_t=r_t+\gamma\left((1-\lambda)v_\psi(\mathbf{z}_{t+1})+ \lambda V^\lambda_{t+1}\right)

Actor は、world model 内での expected return を最大化します。

maxϕ  Eatπϕ(zt)[tVtλ]\max_\phi\;\mathbb{E}_{a_t\sim\pi_\phi(\cdot\mid \mathbf{z}_t)}\left[\sum_t V^\lambda_t\right]

この式の気持ちは、「実環境で毎回 rollout するのではなく、学習済み latent world model の中で未来を想像し、その想像上の reward で policy を改善する」というものです。Dreamer の強みは、画像観測からでも sample-efficient に policy を学びやすい点にあります。

関連ページ

主なソース