機械学習論文読み：World Models

強化学習において、2018年の重要論文となっている World Models。

※ まだ最後まで書けていませんが、ちょっと時間がとれなさそうなので一旦公開。

# 論文・参考サイトへのリンク

* https://arxiv.org/abs/1803.10122
* 作者によるblog https://worldmodels.github.io/

* 日本語の情報
  * https://github.com/arXivTimes/arXivTimes/issues/690
  * https://www.slideshare.net/DeepLearningJP2016/dlworld-models-95167842
  * https://qiita.com/bpzAkiyama/items/cedaa5022b17733102e4


絶賛勉強中なので、訂正、指摘、疑問、質問等あれば、どしどしお願いします。
`注：`と記載したところは、このQiita記事の筆者である @ikeyasu のコメントです
以下、できるだけ論文の流れに沿ってまとめます。
図は、全て元論文からの引用です。
訳はGoogle Tanslateにお手伝いして頂きました。

# Abstract

* 現在ポピュラーな強化学習環境の生成ニューラルネットワークモデルの構築を検討する。
* 私たちの*世界モデル*をは、環境の圧縮された空間的および時間的表現を学習を、教師なし学習で迅速に訓練することができる。
  * 注：*世界モデル*は、"*world model*"。訳語は定まっていないが、以下、世界モデルと記載
* 世界モデルから抽出された機能をエージェントへの入力として使用することにより、必要なタスクを解決できる非常にコンパクトでシンプルなポリシーをトレーニングできる。 
* 世界モデルによって生成される夢の中の幻覚でエージェントを完全に訓練し、そのポリシーを実際の環境に戻すこともできる
  * 注：なんとも詩的な表現だが、原文でも、夢(dream)や幻覚（hallucinated)という単語を使っている。`We can even train our agent entirely inside of its own hallucinated dream generated by its world model, and transfer this policy back into the actual environment.`
* このペーパーのインタラクティブバージョンは、 https://worldmodels.github.io

# 1. Introduction

* 人間は、限られた感覚で知覚できることに基づいて、世界の心的モデル（mental model）を開発する。 私たちが下す決定と行動は、この内部モデルに基づいている。 システムダイナミクスの父であるジェイライトフォレスターは、メンタルモデルを次のように説明した。

> 私たちの頭の中にある私たちの周りの世界のイメージは、単なるモデルです。 彼の頭の中の誰も、すべての世界、政府、または国を想像しません。 彼はコンセプトとそれらの関係のみを選択し、それらを使用して実際のシステムを表現しています。 （Forrester、1971）
> (原文)The image of the world around us, which we carry in our head, is just a model. Nobody in his head imagines all the world, government or country. He has only selected concepts, and relationships between them, and uses those to represent the real system. (Forrester, 1971)

* 私たちの日常生活を流れる膨大な情報を処理するために、脳はこの情報の空間的および時間的側面の抽象的な表現を学習する。 
* 私達は、シーンを観察し、その抽象的な説明を覚えることができる(Nortmann et al., 2015; Gerrit et al., 2013).。
* その証拠はまた、ある瞬間に私たちが知覚するものは、私たちの内部モデルに基づいた、　脳による未来予測によって支配されることを示唆する(Nortmann et al., 2015; Gerrit et al., 2013).。
* 脳内の予測モデルを理解する1つの方法は、単に一般的な未来を予測することではなく、現在の運動行動を考慮して将来の感覚データを予測することかもしれない(Keller et al., 2012; Leinweber et al., 2017)。
* 私たちは、この予測モデルに本能的に行動し、危険に直面したときに高速な反射行動を実行できる(Mobbs et al., 2015)。意識的に行動方針を計画する必要はない。

![fig1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38555/bcfc4839-0629-cf5e-0c83-377ea84a4cb4.png)

* 野球を例にとる。 バッターには、バットを振る方法を決定するミリ秒かかる。これは、視覚信号が脳に到達するのにかかる時間よりも短い。
* 100 mphの速球を打つことができる理由は、ボールがいつどこへ行くかを本能的に予測できるからである。 プロのプレイヤーにとって、これはすべて無意識のうちに起こる。 彼らの筋肉は、内部モデルの予測に沿って、適切なタイミングと場所で反射的にバットを振りる（Gerrit et al., 2013）。
* 将来のシナリオを意識的に展開して計画を立てる必要なく、将来の予測に迅速に対応できる（Hirshon、2013）。

![fig2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38555/58d29367-76ab-ab45-9386-21dc70774a15.png)

* 多くの強化学習の問題で、(Kaelbling et al., 1996; Sutton & Barto, 1998; Wiering & van Otterlo, 2012)、人工エージェントは、過去と未来の表現を持つことにより、メリットがある。そして、良い未来予測モデル(Werbos, 1987; Silver, 2017)は、リカレントニューラルネットワーク（RNN）などの汎用コンピューターに実装された強力な予測モデルであることが望ましい(Schmidhuber, 1990a;b; 1991a)。

![fig3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38555/7188382a-5404-74ba-94e3-b71f3605c2de.png)
Figure 3. この作業では、OpenAI Gym環境の確率的生成モデルを構築する。RNNベースの世界モデルは、実際のゲーム環境から記録された収集された観測を使用してトレーニングされる。世界モデルをトレーニングした後、それらを使用して完全な環境を模倣し、それらを使用してエージェントをトレーニングできる。

* 大規模なRNNは、データの豊富な時空間表現を学習できる非常に表現力の高いモデルである。 ただし、文献の多くのモデルフリーRLメソッドは、多くの場合、パラメーターの少ない小さなニューラルネットワークのみを使用する。
* RLアルゴリズムは、多くの場合、貢献度分配問題 (credit assignment problem)によってボトルネックになる。これにより、従来のRLアルゴリズムでは大規模モデルの何百万もの重みを学習することが困難になる。
  * 注：貢献度分配問題とは、報酬が得られるステップと、それに貢献した行動が、時間的に離れている事で学習が困難になる問題
* 理想的には、大規模なRNNベースのエージェントを効率的にトレーニングできるようにしたいと考えている。バックプロパゲーションアルゴリズム（Linnainmaa、1970; Kelley、1960; Werbos、1982）を使用して、大規模なニューラルネットワークを効率的にトレーニングできる。ここでは、エージェントを大規模な世界モデルと小さなコントローラーモデルに分割することにより、RLタスクに取り組むための大規模なニューラルネットワークのトレーニングを検討する

* まず、教師なしでエージェントの世界モデルを学習するために大規模なニューラルネットワークを訓練し、次にこの世界モデルを使用してタスクを実行することを学習するために小規模なコントローラーモデルを訓練する。
* 小さいコントローラーを使用すると、トレーニングアルゴリズムは、より大きな世界モデルを介して容量と表現力を犠牲にすることなく、小さな検索スペースでの貢献度分配問題に集中できる。
* 世界モデルのレンズを通してエージェントをトレーニングすることにより、エージェントがタスクを実行するための非常にコンパクトなポリシーを学習できることを示す。

* モデルベースの強化学習に関連する多くの研究がありますが、この論文は現在の分野のレビュー（Arulkumaran et al。、2017; Schmidhuber、2015b）を意図したものではない。
* 代わりに、この論文の目標は、RNNベースの世界モデルとコントローラーの組み合わせに関する一連の論文1990-2015からいくつかの重要な概念を抽出することである（Schmidhuber、1990a; b; 1991a; 1990c; 2015a）。 
* また、世界モデルを学習し、このモデルを使用してエージェントをトレーニングするという同様のアイデアを共有する他の関連作品についても文献で説明する。

* この論文では、これらのペーパーの主要な概念のいくつかを実験的に示すために使用できる単純化されたフレームワークを提示し、これらのアイデアをさまざまなRL環境に効果的に適用するためのさらなる洞察を提案する。
*  方法論と実験を説明する際に、"On Learning to Think：RL ControllersとRNN World Modelsの新しい組み合わせのアルゴリズム情報理論"（Schmidhuber、2015a）と同様の用語と表記を使用する。

# 2. Agent Model

* 独自の認知システムに触発されたシンプルなモデルを提示する。このモデルでは、エージェントには視覚的な知覚コンポーネント(a visual sensory component)があり、表示するものを小さな代表的なコード(small representative code)に圧縮する。
* また、履歴情報に基づいて将来のコードに関する予測を行うメモリコンポーネントも備えている。 
* 最後に、我々のエージェントには、ビジョンコンポーネントとメモリコンポーネントによって作成された表現のみに基づいて実行するアクションを決定する意思決定コンポーネントがある。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38555/e7c41545-b913-b1c2-9f19-75bbd349bb1a.png)

## 2.1. VAE (V) Model

* この環境は、各タイムステップでエージェントに高次元の入力観測を提供する。 
* この入力は通常、ビデオシーケンスの一部である2D画像フレームである。
* Vモデルの役割は、観測された各入力フレームの抽象的で圧縮された表現を学習することである。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38555/f5936be7-b888-55a3-d911-66c9de6b5312.png)

* ここでは、単純な変分オートエンコーダー（Kingma＆Welling、2013; Rezende et al.,2014）をVモデルとして使用して、各画像フレームを小さな潜在ベクトルzに圧縮する。

## 2.2. MDN-RNN (M) Model

* エージェントが各タイムフレームで見るものを圧縮することがVモデルの役割だが、時間の経過とともに起こること(what happens over time)も圧縮したいと。この目的のために、Mモデルの役割は未来を予測することである。
* Mモデルは、Vが生成すると予想される将来のzベクトルの予測モデルとして機能する。
* 多くの複雑な環境は本質的に確率的であるため、zの決定論的予測の代わりに確率密度関数p（z）を出力するようにRNNをトレーニングする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38555/a6ecf27b-d714-f8af-c0b2-05629248b4c5.png)

Figure 6. Mixture Density Network(MDN)出力層を備えたRNN。 MDNは、次の潜在ベクトルzの予測をサンプリングするために使用されるガウス分布の混合物のパラメーターを出力する。

* このアプローチでは、$p（z）$をガウス分布の混合として近似し、現在および過去の情報が利用可能であれば、RNNを訓練して次の潜在ベクトル$z_{t + 1}$の確率分布を出力します。
* より具体的には、RNNは$P（z{t + 1} | a_t、z_t、h_t）$ をモデル化します。
    * $a_t$は時刻tで実行されたアクション
    * $h_t$は時刻tでのRNNの非表示状態
* （Ha＆Eck, 2017）で行われているように、サンプリング中に温度パラメーター$τ$を調整してモデルの不確実性を制御できます。$τ$の調整は、後でコントローラーをトレーニングするのに役立ちます。
* このアプローチは、混合密度ネットワーク（Bishop、1994）とRNN（MDN-RNN）（Graves, 2013; Ha, 2017a）と組み合わせと知られており、手書き文字 （Graves、2013）およびスケッチ（Ha＆Eck、2017)の生成などのシーケンス生成の問題に過去に適用された。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38555/956bc71c-2c76-db0d-9d6f-38c67220934f.png)

## 2.3. Controller (C) Model

* コントローラー（C）モデルは、環境のロールアウト中にエージェントの予想累積報酬(the expected cumulative reward)を最大化するために実行するアクションのコースを決定する責任がある。
* 私たちの実験では、Cを可能な限り単純かつ小さくし、VとMから個別にトレーニングして、エージェントの複雑さのほとんどがワールドモデル（VとM）にあるようにした。

* Cは、各タイムステップで$z_t$と$h_t$をアクションに直接マッピングする単純な単層線形モデルである。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38555/0aec72e6-aec0-b047-9930-fbb5cb3d76db.png)

* この線形モデルでは、$W_c$と$b_c$は、連結された入力ベクトル$[z_t h_t]$を出力アクションベクトル$a_t$にマッピングする重み行列とバイアスベクトルです。


## 2.4. Putting V, M, and C Together

* 次のフロー図は、V、M、およびCが環境とどのように相互作用するかを示す。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38555/e0934302-ea60-ee09-a98f-605fd4b83268.png)

Figure 8. エージェントモデルのフロー図。 Raw observation は、各タイムステップtでVによって最初に処理され、$z_t$が生成される。 Cへの入力は、この潜在ベクトル$z_t$であり、各タイムステップでMの非表示状態$h_t$と連結される。 Cは、モーター制御のためにアクションベクトルを出力し、環境に影響を与える。 Mは、現在の$z_t$とアクションを入力として受け取り、それ自体の非表示状態を更新して、時刻t + 1で使用される$h_{t + 1}$を生成する。

以下は、OpenAI Gym（Brockman et al., 2016）環境でエージェントモデルがどのように使用されるかの擬似コードである。

```python
def rollout(controller):
  ’’’ env, rnn, vae are ’’’
  ’’’ global variables ’’’
  obs = env.reset()
  h = rnn.initial_state()
  done = False
  cumulative_reward = 0
  while not done:
    z = vae.encode(obs)
    a = controller.action([z, h])
    obs, reward, done = env.step(a)
    cumulative_reward += reward
    h = rnn.forward([a, z, h])
  return cumulative_reward
```

特定のcontroller Cでこの関数を実行すると、ロールアウト中に累積報酬を返す。

Cのこの最小限の設計は、重要で実用的な利点も提供する。 深層学習の進歩により、大規模で洗練されたモデルを効率的に訓練するツールが提供され、適切に機能する微分可能な損失関数を定義できるようになった。 VおよびMモデルは、最新のGPUアクセラレータを使用した逆伝播アルゴリズムで効率的に訓練されるように設計されているため、モデルの複雑さと、ほとんどのモデルパラメーターをVおよびMに同居させたい。 線形モデルは、比較では最小です。 この選択により、進化戦略（ES）（Rechenberg、1973; Schwefel、1977）を使用して、貢献度分配問題 (credit assignment problem)が難しいより難しいRLタスクに取り組むなど、Cを訓練するためのより型破りな方法を探索できるようになる。

Cのパラメーターを最適化するために、最適化アルゴリズムとして共分散行列適応進化戦略（CMA-ES）（Hansen、2016; Hansen＆Ostermeier、2001）を選択しました。 数千のパラメーター。 環境の複数のロールアウトを並行して実行する複数のCPUコアを持つ単一のマシンでCのパラメーターを進化させます。

Cのパラメーターを最適化するために、最適化アルゴリズムとして共分散行列適応進化戦略を選択しました。これは、最大数千のパラメーターの解空間でうまく機能することが知られているためです。環境の複数のロールアウトを並行して実行する複数のCPUコアを持つ単一のマシンでCのパラメーターを進化させる。

実験で使用したモデル、トレーニング手順、および環境に関するより具体的な情報については、付録セクションを参照。

# 3. Car Racing Experiment

このセクションでは、前述のエージェントモデルをトレーニングして、カーレースの課題を解決する方法を説明する。
私たちの知る限り、我々のエージェントはこのタスクを解決するために必要なスコアを達成する最初のソリューションである。

※ 注：移行の図は、 https://worldmodels.github.io/ で見ると動画で見られる。

## 3.1. World Model for Feature Extraction

予測された世界モデルは、空間と時間の有用な表現を抽出するのに役立つ。 これらの機能をコントローラーの入力として使用することで、コンパクトで最小限のコントローラーをトレーニングして、CarRacing-v0（Klimov、2016）と呼ばれるトップダウンカーレース環境のピクセル入力からのドライブを学習するなど、連続制御タスクを実行できる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38555/ef393343-1527-8e97-8ec9-5c57bb6cffc9.png)

この環境では、各試行ごとにトラックがランダムに生成され、エージェントは最短時間で可能な限り多くのタイルを訪問したことに対する報酬を受ける。 エージェントは3つの連続的なアクションを制御する：左/右のステアリング、加速、およびブレーキ。

Vモデルをトレーニングするには、まず環境の10,000のランダムロールアウトのデータセットを収集する。 環境を複数回探索するために、最初にエージェントがランダムに行動し、実行時のランダムアクションと環境から結果として得られる観察結果を記録する。 このデータセットを使用してVをトレーニングし、観測された各フレームの潜在空間を学習する。特定のフレームと、zからデコーダーによって生成されたフレームの再構築バージョンとの差を最小化することにより、各フレームを低次元の潜在ベクトルzにエンコードするようにVAEをトレーニングする。

これで、トレーニング済みのVモデルを使用して、時間tの各フレームを$z_t$に前処理して、Mモデルをトレーニングできる。
この事前処理されたデータと、記録されたランダムアクションを使用して、MDN-RNNをトレーニングして、Gausianの混合として$P(z_{t+1} | a_t, z_t, h_t)$をモデル化できるようになった。

この実験では、世界モデル（VおよびM）には、環境からの実際の報酬信号に関する知識がない。 そのタスクは、観測された画像フレームのシーケンスを単純に圧縮および予測することである。 コントローラー（C）モデルのみが環境からの報酬情報にアクセスできる。線形コントローラーモデル内には867個のパラメーターしかないため、CMA-ESなどの進化的アルゴリズムはこの最適化タスクに適している。

VAEを使用して、各タイムステップでztを使用して各フレームを再構築し、ロールアウト中にエージェントが実際に見る情報の品質を視覚化できる。 以下の図は、CarRacing-v0のスクリーンショットでトレーニングされたVAEモデルである。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38555/4467fa70-73d6-e3f2-2d08-8935220a37a3.png)

この記事のオンライン版では、ランダムに選択したスクリーンショットを読み込んで、小さな潜在ベクトルzにエンコードし、元のスクリーンショットを再構築するために使用できる。 スライダーバーを使用してzベクトルの値を調整し、再構成にどのように影響するかを確認したり、zをランダム化して可能なスクリーンショットのスペースを観察したりすることもできる。

## 3.2. Procedure

カーレースの実験を要約すると、以下の手順が実行される。

1.ランダムポリシーから10,000件のロールアウトを収集する。
2. フレームをz∈$R^32$にエンコードするようにVAE（V）をトレーニングする。 
3. MDN-RNN（M）をモデル$P（zt + 1 | a_t、z_t、h_t）$にトレーニングします。
4. Controller (C) を $a_t = W_c [z_t h_t] + b_c$と定義する.
5. CMA-ESを使用して、予想される累積報酬を最大化する$W_c$および$b_c$を解く。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38555/9200f022-c836-0784-aec6-7016fe4b19b8.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38555/a1df487b-9bf9-b1ca-8391-b38cbd8c4669.png)

## 3.3. Experiment Results

### V Model Only

観察結果が適切に表現されていれば、運転するエージェントを訓練することは難しくない。 以前の研究（Hn-ermann、2017; Bling、2015、Lau、2016）は、LIDAR情報、角度、位置、速度など、観測に関する手作業で作成された適切な情報のセットを使用して、小さな フィードフォワードネットワークを使用して、この手作業での入力の調整を行い、満足のいくナビゲーションポリシーを出力します。
このため、最初にCをハンディキャップしてVにのみアクセスし、Mにアクセスできないようにしてエージェントをテストするため、コントローラーを$a_t = W_c z_t + b_c$として定義する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38555/27cc9233-1a6e-ef0f-ee4f-c6e5609be35c.png)

エージェントはこの設定でもレーストラックをナビゲートすることができるが、鋭いコーナーでぐらつき、トラックを見逃していることに気付く。 この障害のあるエージェントは、OpenAIジムのリーダーボード（Klimov、2016）およびA3Cなどの従来のDeep RLメソッド（Khan＆Elibol、2016; Jang et al。、2017）。 Cのポリシーネットワークに非表示レイヤーを追加すると、結果を788±141に改善できますが、この環境を解決するには十分ではありません。

### Full World Model (V and M)

Vモデルによって提供される表現$ z_t $は、ある時点での表現のみをキャプチャし、あまり予測力がない。 対照的に、Mは1つのことを行うように訓練されており、$ z_ {t + 1} $を予測することで非常にうまく行うことができる。
。 Mの$ z_ {t + 1} $の予測は、時刻ttでのRNNの非表示状態$ h_ t $から生成されるため、このベクトルは、エージェントに提供できる学習機能のセットの良い候補である。 $ z_t $と$ h_t $を組み合わせると、コントローラーCに現在の観測と将来の予測の両方を適切に表現できる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38555/ebaaf7a6-bb30-d3b6-eb81-dc84a8c4f5ae.png)

エージェントが$z_t$と$h_t$の両方にアクセスできるようにすると、その駆動能力が大幅に向上することがわかる。 運転はより安定しており、エージェントは鋭い角を効果的に攻撃することができる。 さらに、自動車レース中にこれらの高速反射運転の決定を行う際に、エージェントは前もって計画し、将来の仮想シナリオを展開する必要がないことがわかる。 $h_t$には将来の確率分布に関する情報が含まれているため、エージェントはRNNに本能的に照会するだけで、アクションの決定をガイドできる。 経験豊富なF1ドライバーや前述の野球選手のように、エージェントは瞬間的（注：`the heat of the moment`を意訳）に、いつどこでナビゲートするかを本能的に予測できる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38555/344b4834-8a6b-23e3-e258-edb07677915f.png)

我々ののエージェントは、100回のランダムトライアルで906±21のスコアを達成し、タスクを効果的に解決し、最新の結果を得ることができた。
Deep RLメソッドを使用した以前の試み（Khan＆Elibol, 2016; Jang et al., 2017）は591〜652の範囲の平均スコアを取得し、リーダーボードで報告された最高のソリューションは100のランダム試行で838±11の平均スコアを取得しました。 従来のDeep RLメソッドでは、いくつかの最近のフレームを積み重ねるだけでなく、エッジ検出の使用（Jang et al。、2017）など、各フレームの前処理が必要になることがよくあります（Khan＆Elibol、2016; Jang et al。、2017） 入力に。 対照的に、私たちの世界モデルは生のRGBピクセル画像のストリームを取り込み、時空間表現を直接学習します。 私たちの知る限り、この方法はこのタスクを解決する最初の報告されたソリューションです。

## 3.4. Car Racing Dreams

私たちの世界モデルは未来をモデル化することができるので、仮想カーレースのシナリオを独自に考案することもできる。 現在の状態で$z_{t + 1}$の確率分布を生成し、$z_{t + 1}$をサンプリングし、このサンプルを実際の観測値として使用するように要求できる。 Mによって生成されたこの幻覚環境に訓練されたCを戻すことができる。この記事のオンラインバージョンのインタラクティブデモからの次の画像は、世界モデルを使用してカーレース環境を幻覚化する方法を示す。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38555/e7788acb-fa7d-95fd-6186-39cc3600004b.png)

# 4. VizDoom Experiment

## 4.1. Learning Inside of a Dream

現実の環境の中で学んだポリシーが、夢の環境の中である程度機能しているように見えることを見てきた。 これは次の疑問を投げかける。エージェントを訓練し、自分の夢の中で学習し、このポリシーを実際の環境に戻すことができるか？

私たちの世界モデルがその目的に対して十分に正確であり、目前の問題に対して十分に完全であれば、この世界モデルで実際の環境を置き換えることができるはずである。 結局のところ、エージェントは現実を直接観察するのではなく、世界モデルがそれを見ることができるものを見るだけである。 この実験では、Viz-Doom（Kempka et al。、2016）環境を模倣するように訓練された世界モデルによって生成された幻覚の中でエージェントを訓練する。

<img width="608" alt="スクリーンショット 2020-03-12 0.27.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38555/ed06d7b1-b7b0-f1a5-d352-3ee7b2bf9024.png">

エージェントは、エージェントを殺すという唯一の意図を持って、部屋の反対側からモンスターによって撃たれた火の玉を避けることを学ばなければならない この環境には明示的な報酬はない。そのため、自然なselectionを模倣するために、累積報酬はロールアウト中にエージェントが生き続けるために管理する時間ステップの数として定義できる。 環境の各ロールアウトは最大2100タイムステップ（〜60秒）で実行され、100連続ロールアウトの平均生存時間が750タイムステップ（〜20秒）より長い場合、タスクは解決されたと見なされる（Paquette、2016） 。

## 4.2. Procedure

VizDoomの実験のセットアップは、いくつかの重要な違いを除いて、Car Racingタスクとほぼ同じである。カーレースタスクでは、Mは次の$z_t$をモデル化するためだけに訓練される。 エージェントをトレーニングできる世界モデルを構築したいので、ここのMモデルは、次のフレーム$z_t$に加えて、エージェントが次のフレーム（バイナリイベント$done_t$、または略して$d_t$）で死ぬかどうかも予測する。

Mモデルは、次の観測に加えて完了状態を予測できるため、完全なRL環境を作成するために必要なすべての成分が揃っている。 Mが実際のジム環境である場合は、Mにgym.EnvインターフェースをラップすることでOpenAIジム環境インターフェースを最初に構築し、実際の環境を使用する代わりにこの仮想環境内でエージェントをトレーニングする。

このシミュレーションでは、幻覚プロセス中に実際のピクセルフレームをエンコードするためにVモデルを必要としないため、エージェントは潜在空間環境で完全に訓練するだけである。 これには、後述するように多くの利点がある。

この仮想環境は実際の環境と同一のインターフェースを備えているため、エージェントが仮想環境で満足のいくポリシーを学習した後、このポリシーを実際の環境に簡単に展開して、ポリシーがどの程度移行するかを確認できる。

Take Coverの実験を要約すると、以下の手順が実行される。

1.ランダムポリシーから10,000件のロールアウトを収集。
2. VAE（V）をトレーニングして、各フレームを潜在ベクトル  $z \in \mathcal{R}^{64}$にエンコードし、Vを使用して、（1）から収集した画像を潜在空間表現に変換します
3. Train MDN-RNN (M) to model $P(z_{t+1}, d_{t+1} \; | \; a_t, z_t, h_t)$
4. Controller (C) を $a_t = W_c [z_t h_t]$ と定義
5. 仮想環境内で予想される生存時間を最大化するためのコントローラー（C）の進化
6. 実際のジム環境で（4）から学習したポリシーを使用

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38555/c8ad0fd6-b08e-b6af-158b-67954e0a4b2b.png)

## 4.3. Training Inside of the Dream

いくつかのトレーニングの後、コントローラーは夢の環境をナビゲートし、Mによって生成されたモンスターによって発射された致命的な火の玉から逃れることを学ぶ。エージェントは仮想環境で約900タイムステップのスコアを達成した。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38555/2b23ec8d-0553-5144-0282-44fe31ef0642.png)

ここでは、RNNベースの世界モデルは、人間のプログラマーによって設計された完全なゲーム環境を模倣するように訓練されている。 ランダムなエピソードから収集された生の画像データからのみ学習することにより、ゲームロジック、敵の行動、物理学、3Dグラフィックスレンダリングなど、ゲームの重要な側面をシミュレートする方法を学習する。

MEMO: 以下、まだみていない

たとえば、エージェントが左のアクションを選択した場合、Mモデルはエージェントを左に移動し、それに応じてゲームの状態の内部表現を調整することを学習します。 また、エージェントがいずれかの方向に移動しようとすると、エージェントがレベルの両側の壁を越えて移動するのをブロックすることも学習します。 Mモデルでは、複数の異なるモンスターから発射される複数の火の玉を追跡し、それらを意図した方向に首尾一貫して移動させる必要がある場合があります。 また、これらの火の玉のいずれかによってエージェントが殺されたかどうかも検出する必要があります。

ただし、実際のゲーム環境とは異なり、仮想環境に不確実性を追加して、夢の環境でゲームをより難しくすることができることに注意してください。 これを行うには、$z_{t + 1}$のサンプリングプロセス中に温度τパラメーターを増加させます。 不確実性を高めることにより、私たちの夢の環境は実際の環境と比較してより困難になります。 火の玉は、実際のゲームと比較して、予測しにくい経路でよりランダムに移動する場合があります。 時には、エージェントは全くの不幸のために説明なしで死ぬことさえあります。

一般に、より高い温度設定で良好に機能するエージェントは、通常の設定でより適切に機能します。 実際、τを大きくすると、コントローラーが世界モデルの不完全性を利用するのを防ぐことができます。これについては後で詳しく説明します。

## 4.4. Transfer Policy to Actual Environment

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38555/491a2348-97ba-42c8-7582-78a4018e0748.png)

仮想環境内でトレーニングされたエージェントを取り、元のVizDoomシナリオでそのパフォーマンスをテストしました。 100回のランダムな連続試行のスコアは、1100タイムステップであり、750タイムステップの必要なスコアをはるかに超えており、より困難な仮想環境内で得られたスコアよりもはるかに高くなっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38555/f867e023-3e10-6842-4f52-6d9fac43b520.png)

Vモデルは、各フレームの詳細のすべてを正しくキャプチャすることはできませんが、たとえばモンスターの数を正しく取得することはできますが、エージェントは学習したポリシーを使用して実際の環境でナビゲートすることができます。 仮想環境はそもそもモンスターの正確な数を追跡することさえできないので、ノイズが多く不確実な仮想悪夢環境を乗り切ることができるエージェントは、元のよりクリーンな環境で繁栄します。

## 4.5. Cheating the World Model

私たちの子供時代には、元のゲームデザイナーが意図していない方法でビデオゲームを悪用する方法に遭遇した可能性があります（Wikipedia、2017年）。 プレイヤーは無制限のライフまたはヘルスを収集する方法を発見し、これらのエクスプロイトを利用することで、そうでなければ難しいゲームを簡単に完了することができます。 ただし、そうする過程で、ゲームデザイナーが意図したとおりにゲームをマスターするために必要なスキルを習得する機会が失われた可能性があります。

たとえば、最初の実験で、エージェントが、Mモデルによって管理されているこの仮想環境内のモンスターがロールアウト中に単一の火球を発射しないように、エージェントがそのような方法で動き回る敵対的なポリシーを発見したことに気付きました。 火の玉が形成される兆候がある場合でも、エージェントは、まるで環境に超大国がいるかのように火の玉を魔法のように消すように動きます。

私たちの世界モデルは環境の近似的な確率モデルにすぎないため、実際の環境を支配する法則に従わない軌跡を生成する場合があります。 前に見たように、実際の環境の部屋の反対側にいるモンスターの数でさえ、ワールドモデルでは正確に再現されていません。 空気中の物体が通常地面に落ちることを知る子供のように、子供は空を飛び回る非現実的なスーパーヒーローを想像するかもしれません。 このため、実際の環境にこのようなエクスプロイトが存在しない場合でも、コントローラーはワールドモデルを悪用できます。

また、Mモデルを使用してエージェントの仮想ドリーム環境を生成しているため、コントローラーのMのすべての非表示状態へのアクセスも許可しています。これは、エージェントのすべての内部状態およびメモリ プレイヤーが見ることができるゲームの観察だけではなく、ゲームエンジン。 そのため、エージェントは、期待される累積報酬を最大化するために、ゲームエンジンの隠された状態を直接操作する方法を効率的に探索できます。 学習したダイナミクスモデル内でポリシーを学習するこのアプローチの弱点は、エージェントがダイナミクスモデルを欺くことができる敵対的なポリシーを簡単に見つけることができることです。 実際の環境は、通常、トレーニング分布から離れているためモデルが間違っている状態を訪問するためです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38555/3d6ae424-58c1-0eb8-08b3-13684e74aa91.png)

この弱点が、RL環境のダイナミクスモデルを学習するが、実際の環境を完全に置き換えるためにそれらのモデルを実際に使用しない以前の多くの研究の理由である可能性があります（Oh et al。、2015; Chiappa et al。、2017）。 （Schmidhuber、1990a; b; 1991a）で提案されているMモデルのように、ダイナミクスモデルは決定論的なモデルであり、完全でない場合、エージェントがモデルを簡単に活用できます。 PILCO（Deisenroth＆Rasmussen、2011）のようにベイジアンモデルを使用すると、この問題にある程度の不確実性の見積もりで対処するのに役立ちますが、それらは問題を完全には解決しません。 最近の研究（Nagabandi et al。、2017）では、最初に学習したポリシーでポリシーネットワークを初期化することにより、モデルベースのアプローチと従来のモデルフリーのRLトレーニングを組み合わせていますが、その後、モデルフリーの方法を使用してこれを微調整する必要があります 実際の環境でのポリシー。

Learning to Think（Schmidhuber、2015a）では、RNN Mが常に信頼できる予測因子であるとは限らないことは受け入れられます。 （進化ベースの可能性がある）RNN Cは、原則として欠陥のあるMを無視すること、または階層計画などを含む任意の計算目的でMの特定の有用な部分を活用することを学ぶことができます。 いくつかの古いシステム（Schmidhuber、1990a; b; 1991a）では、RNN Mを使用して段階的に予測および計画を立てています。 ただし、この初期の作品とは異なり、従来のRLとRNNを組み合わせたものではなく、Cの進化を使用して（学習のように）、単純さと一般性の両方の利点を備えています。

CモデルがMモデルの不備を利用することをより困難にするために、決定論を単に予測するのではなく、実際の環境で起こり得る結果の分布をモデル化するダイナミクスモデルとしてMDN-RNNを使用することを選択しました。 未来。 実際の環境が決定論的であっても、MDN-RNNは事実上それを確率的環境として近似します。 これには、より確率的なバージョンの環境内でCモデルをトレーニングできるという利点があります。温度パラメーターτを調整するだけで、Mモデルのランダム性の量を制御できるため、現実性と悪用可能性のトレードオフを制御できます。

ガウスモデルの混合を使用すると、VAEモデルでエンコードされた潜在空間がただ1つの対角ガウス分布であるため、過剰に思えるかもしれません。 ただし、混合密度モデルの離散モードは、モンスターが火の玉を放つか、そのままにするかなど、ランダムな離散イベントがある環境に役立ちます。 個々のフレームをエンコードするには、単一の対角線ガウスで十分かもしれませんが、混合密度出力層を持つRNNを使用すると、離散ランダム状態のより複雑な環境の背後にあるロジックを簡単にモデル化できます。

たとえば、温度パラメータをτ= 0.1の非常に低い値に設定し、Cモデルを決定論的LSTMとほぼ同一のMモデルで効果的にトレーニングすると、この夢の環境内のモンスターは火の玉を発射できません モード崩壊によるエージェントの動作。 Mモデルは、火球が形成されて発射されるガウスモデルの混合で別のモードにジャンプすることはできません。 この夢の中で学んだ政策は、ほとんどの場合、2100の完全なスコアを達成しますが、実際の世界の厳しい現実に解き放たれた場合、明らかに失敗し、ランダムな政策さえも下回ります。

ただし、「Learning to Think」のよりシンプルで堅牢なアプローチは、ステップバイステップの計画にMを使用することを主張していません。 代わりに、CはMのサブルーチン（Mの重み行列の一部）を任意の計算目的で使用することを学習できますが、Mが役に立たない場合やMを無視するとパフォーマンスが向上する場合はMを無視することも学習できます それにもかかわらず、少なくとも現在のC–Mの変種では、Mの予測はCを教えるために不可欠であり、初期のC–Mシステムの一部（Schmidhuber、1990a; b; 1991a）に似ていますが、進化またはブラックボックス 最適化。

温度τをMモデルの調整可能なパラメーターにすることにより、さまざまなレベルの不確実性を持つ幻覚仮想環境でCモデルをトレーニングする効果を確認し、実際の環境にどれだけうまく移行するかを確認できます。 仮想環境内のエージェントを特定の温度でトレーニングした後、仮想環境の温度を変化させて、実際の環境の100のランダムロールアウトで得られた平均スコアを観察して実験しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38555/7fd963a9-b31e-0e09-1f6a-03eab049de5f.png)

Mモデルの温度を上げると、Cモデルは敵対的なポリシーを見つけることが難しくなりますが、温度を上げすぎると、仮想環境はエージェントが何かを学ぶことが難しくなります。したがって、実際には 調整できるハイパーパラメーター。 温度は、エージェントが発見する戦略のタイプにも影響します。 たとえば、得られた最良のスコアはτ= 1.15で1092±556ですが、τa notchを1.30に増やすと、スコアは低くなりますが、同時にリターンの分散が低くなり、リスクの少ない戦略になります。 比較のために、OpenAIジムリーダーボード（Paquette、2016）の最高スコアは820±58です。

# 5. Iterative Training Procedure

私たちの実験では、タスクは比較的単純なので、ランダムなポリシーから収集されたデータセットを使用して、合理的な世界モデルをトレーニングできます。 しかし、環境がより洗練されたらどうなるでしょうか？ 困難な環境では、エージェントが世界を戦略的にナビゲートする方法を学習した後にのみ、世界の一部のみがエージェントに利用可能になります。

より複雑なタスクの場合、反復トレーニング手順が必要です。 私たちのエージェントは、その世界を探索し、新しい観察結果を絶えず収集して、その世界モデルを時間とともに改善および改良できるようにする必要があります。 反復トレーニング手順（Schmidhuber、2015a）は次のとおりです。

1. ランダムモデルパラメーターでM、Cを初期化します。
2. 実際の環境にN回展開します。 すべてのアクションを保存ストレージへのロールアウト中のxtおよび観測xt。
3. MをモデルPにトレーニングします（xt + 1、rt + 1、at + 1、dt + 1 | xt、at、ht） Cをトレーニングして、Mの内部で予想される報酬を最適化します。
4.タスクが完了していない場合は、（2）に戻ります。