Prediction and Policy learning Under Uncertainty (PPUU)

$$\gdef \sam #1 {\mathrm{softargmax}(#1)}$$ $$\gdef \vect #1 {\boldsymbol{#1}} $$ $$\gdef \matr #1 {\boldsymbol{#1}} $$ $$\gdef \E {\mathbb{E}} $$ $$\gdef \V {\mathbb{V}} $$ $$\gdef \R {\mathbb{R}} $$ $$\gdef \N {\mathbb{N}} $$ $$\gdef \relu #1 {\texttt{ReLU}(#1)} $$ $$\gdef \D {\,\mathrm{d}} $$ $$\gdef \deriv #1 #2 {\frac{\D #1}{\D #2}}$$ $$\gdef \pd #1 #2 {\frac{\partial #1}{\partial #2}}$$ $$\gdef \set #1 {\left\lbrace #1 \right\rbrace} $$ % My colours $$\gdef \aqua #1 {\textcolor{8dd3c7}{#1}} $$ $$\gdef \yellow #1 {\textcolor{ffffb3}{#1}} $$ $$\gdef \lavender #1 {\textcolor{bebada}{#1}} $$ $$\gdef \red #1 {\textcolor{fb8072}{#1}} $$ $$\gdef \blue #1 {\textcolor{80b1d3}{#1}} $$ $$\gdef \orange #1 {\textcolor{fdb462}{#1}} $$ $$\gdef \green #1 {\textcolor{b3de69}{#1}} $$ $$\gdef \pink #1 {\textcolor{fccde5}{#1}} $$ $$\gdef \vgrey #1 {\textcolor{d9d9d9}{#1}} $$ $$\gdef \violet #1 {\textcolor{bc80bd}{#1}} $$ $$\gdef \unka #1 {\textcolor{ccebc5}{#1}} $$ $$\gdef \unkb #1 {\textcolor{ffed6f}{#1}} $$ % Vectors $$\gdef \vx {\pink{\vect{x }}} $$ $$\gdef \vy {\blue{\vect{y }}} $$ $$\gdef \vb {\vect{b}} $$ $$\gdef \vz {\orange{\vect{z }}} $$ $$\gdef \vtheta {\vect{\theta }} $$ $$\gdef \vh {\green{\vect{h }}} $$ $$\gdef \vq {\aqua{\vect{q }}} $$ $$\gdef \vk {\yellow{\vect{k }}} $$ $$\gdef \vv {\green{\vect{v }}} $$ $$\gdef \vytilde {\violet{\tilde{\vect{y}}}} $$ $$\gdef \vyhat {\red{\hat{\vect{y}}}} $$ $$\gdef \vycheck {\blue{\check{\vect{y}}}} $$ $$\gdef \vzcheck {\blue{\check{\vect{z}}}} $$ $$\gdef \vztilde {\green{\tilde{\vect{z}}}} $$ $$\gdef \vmu {\green{\vect{\mu}}} $$ $$\gdef \vu {\orange{\vect{u}}} $$ % Matrices $$\gdef \mW {\matr{W}} $$ $$\gdef \mA {\matr{A}} $$ $$\gdef \mX {\pink{\matr{X}}} $$ $$\gdef \mY {\blue{\matr{Y}}} $$ $$\gdef \mQ {\aqua{\matr{Q }}} $$ $$\gdef \mK {\yellow{\matr{K }}} $$ $$\gdef \mV {\lavender{\matr{V }}} $$ $$\gdef \mH {\green{\matr{H }}} $$ % Coloured math $$\gdef \cx {\pink{x}} $$ $$\gdef \ctheta {\orange{\theta}} $$ $$\gdef \cz {\orange{z}} $$ $$\gdef \Enc {\lavender{\text{Enc}}} $$ $$\gdef \Dec {\aqua{\text{Dec}}}$$
🎙️ Alfredo Canziani

導入と問題設定

モデルフリー強化学習で運転の仕方を学びたいとしましょう。RLでは、モデルにミスをさせてそこから学習させることでモデルを訓練します。しかし、これは最善の方法ではありません。

そこで、もっと「人間的」な方法で車の運転を学ぶ方法を考えてみましょう。車線変更の例を考えてみましょう。車が時速100km 、つまり大体30m/sの速度で動いていると仮定すると、30m先を見た場合、大体1s先を見ていることになります。


図1: 少し先を予測して運転をする

カーブを切る時には、近い将来のことを考えて判断する必要があります。数メートル先で曲がるためには、今すぐに行動を起こす、ここではハンドルを切る、ことになります。決断をするかどうかは、自分の運転だけでなく、交通の中の周囲の車にも左右されます。私たちの周りの誰もが決定論的ではないので、すべての可能性を考慮に入れることは非常に困難です。

このシナリオで何が起こっているかを分解してみましょう。我々は、入力$s_t$(位置、速度、文脈画像)を受け取り、アクション$a_t$(操舵制御、加速、制動)を生成するエージェント(ここでは頭脳で表現)を持っています。 環境は私たちを新しい状態に連れて行き、コスト$c_t$を返します。


図2: 実世界でのエージェントのイラスト

これは、特定の状態の下で行動を取ると、世界が次の状態と次の結果を与えてくれる単純なネットワークのようなものです。これはモデルフリーで、すべての行動が現実世界と相互作用するからです。しかし、実際に現実世界と対話せずにエージェントを訓練することはできるのでしょうか?

はい、できます。「世界モデルを学習する」のセクションでそれを見てみましょう。


図3: 実世界でのエージェントのイラスト

データセット

世界モデルの学習方法を説明する前に、我々が持っているデータセットを調べてみましょう。高速道路に面した30階建ての建物の上に7台のカメラを設置します。カメラを調整してトップダウンビューを取得し、各車両のバウンディングボックスを抽出します。ある時間$t$で、位置を表す$p_t$を求め、速度を表す$v_t$、車両周辺の現在の交通状態を表す$i_t$を求めます。

運転のキネマティクスがわかっているので、これらを逆算して、運転者が何をしているのかを知ることができます。例えば、車が直線的な一様運動をしている場合、加速度はゼロ(何もしていないことを意味する)であることがわかります。


図4: 単一フレームの機械による表現

青色のイラストはフィードで、緑色のイラストは我々が機械表現と呼ぶものです。これをよりよく理解するために、いくつかの車両を分離しました(図中のマーク)。下の図は、これらの車両の視野のバウンディングボックスです。

コスト

ここでは2種類のコストがあります:車線コストと近接コストです。車線コストは車線内の状態を示し、近接コストは他の車との距離を示します。


図5: 車線コスト

上の図では、点線は実際の車線を表し、赤線は現在の車の位置から車線のコストを計算するのに役立ちます。 赤線は車の移動に合わせて移動します。赤い線と潜在的なカーブの交点の高さ(シアン色)がコストを示しています。車が車線の中心にいる場合は、赤線の両方が実際の車線と重なり、コストはゼロになります。一方、車が中心から離れると、赤線も移動し、コストはゼロではありません。 <!–


Figure 6: Proximity cost

–>


図6: 近接コスト

近接コストには2つの要素があります($\mathcal{L}_x$と$\mathcal{L}_y$)。この2つの成分は、車線コストと同様に、車の速度に依存します。図6のオレンジ色の曲線が安全距離を示しています。車の速度が速くなると、オレンジ色のカーブが広がります。つまり、車の速度が速くなればなるほど、前方と後方に目を向ける必要が出てくるということです。オレンジ色のカーブと車の交差するところの高さが $\mathcal{L}_x$ を決定します。

これら2つの成分の積が 近接コストを与えてくれます。

世界モデルを学習する


図7: 世界モデルのイラスト

世界モデルは、アクション$a_t$(操縦、ブレーキ、加速)と$s_{1:t}$(各状態をその時の位置、速度、文脈画像で表現した状態の列)を与えられ、次の状態$\hat s_{t+1}$を予測します。 一方、実世界を通して実際に何が起こったかを知ることができます($s_{t+1}$)。予測値($\hat s_{t+1}$)と目標値($s_{t+1}$)の間のMSE(平均二乗誤差)を最適化してモデルを学習します。

決定論的な予測器-デコーダ

世界モデルを学習する方法の一つは、以下に説明する予測器-デコーダモデルを使用することです。


図8: 世界モデルを学習するための決定論的な予測器-デコーダ 図8に示されているように、状態($s_{1:t}$)と行動($a_t$)のシーケンスが予測器モジュールに提供されています。予測器は、デコーダに渡す将来の潜在表現を出力します。デコーダは、将来の潜在表現をデコードし、予測値($\hat s_{t+1}$)を出力します。そして、予測 $\hat s_{t+1}$ とターゲット $s_{t+1}$ の間のMSEを最小化することでモデルを学習します。

図9: 実際の未来と決定論的な未来
残念ながら、これはうまくいきません! 決定論的な出力は非常に曖昧になることがわかります。なぜなら、我々のモデルがすべての未来の可能性を平均化しているからです。これは、以前にいくつか前のクラスで議論された、未来のマルチモダリティと比較することができます。そこでは原点に置かれたペンがランダムに落とされる例を用いて説明していました。すべての場所の平均を取ると、ペンは決して動かなかったという誤った信念を与えてしまいます。 我々のモデルに潜在変数を導入することで、この問題に対処できます。 ## [変分予測ネットワーク](https://www.youtube.com/watch?v=VcrCr-KNBHc&t=1779s) 前節で述べた問題を解決するために、元のネットワークに低次元の潜在変数 $z_t$ を追加し、これを拡張モジュール $f_{exp}$ に通して次元数を一致させます。

図10: 変分予測ネットワーク:訓練
$z_t$は、特定の予測に対してMSEが最小化されるように選択されます。潜在変数をチューニングすることで、潜在空間での勾配法を行うことで、MSEをゼロにすることができます。しかし、これは非常にコストがかかります。実際には、エンコーダを使って潜在変数を予測することができます。エンコーダは将来の状態を取得して、平均と分散を持つ分布を与え、そこから $z_t$ をサンプリングすることができます。 訓練の間、未来を見てそこから情報を得て、その情報を使って潜在変数を予測することで、何が起こっているかを見つけることができます。しかし、テスト時には未来にアクセスできません。我々は、KLダイバージェンスを最適化することによって、エンコーダが可能な限り事前分布に近い事後分布を与えるように強制することによって、これを修正します。

図11: 変分予測ネットワーク:訓練(事前分布つき)
では、推論を見てみましょう。私たちはどのように運転するのでしょうか?

図12: 変分予測ネットワーク:推論
エンコーダが事前分布に向かうように強制して、低次元の潜在変数 $z_t$ を、事前分布からサンプリングします。予測 $\hat s_{t+1}$ が得られたら、それを元に戻して(自己回帰的なステップで)、次の予測 $\hat s_{t+2}$ を得て、このようにネットワークに送り続けます。

図13: 実際の未来 vs 決定論的な場合
上図の右側では、正規分布からの4つの異なるサンプルが見られます。同じ初期状態から始めて、潜在変数に異なる200の値を与えています。

図14: 実際の未来 vs 決定論的な場合:動いた後
異なる潜在変数を提供することで、異なる行動を持つ異なる状態のシーケンスが生成されることがわかります。つまり、我々は未来を生成するネットワークを持っているということです。非常に魅力的です! 次は何をするのでしょうか? この膨大な量のデータを使用して、上で説明した車線コストと近接コストを最適化することで、方策を訓練することができます。 これらの複数の未来は、ネットワークに供給する潜在変数のシーケンスから得られます。勾配上昇法を実行すると、潜在空間で近接コストを増加させようとして、他の車があなたに突っ込んでくるような潜在変数のシーケンスを得ることができます。 ## 行動に対する感度の低さと潜在空間でのドロップアウト

図15: 問題:行動に対する感度の低さ
あなたが実際に未来にアクセスできるとすると、もしあなたが少しでも左に回れば、外界はすべてが右に回ろうとすることになり、それはMSEに大きな貢献をするでしょう。潜在変数が、ネットワークの下部に、すべてのものが右に向くことを知らせることができれば、MSEの損失は最小限に抑えることができます。しかしこれは私たちが望んでいるものではありません! それは決定論的なタスクなので、すべてのものがいつ右に向くかを知ることができます。 図15の大きな矢印は情報の漏洩を意味し、したがって、予測器に提供されている現在の行動に対しては、もはや敏感ではありませんでした。

図16: 問題:行動に対する感度の低さ
16の図では、一番右の図では、本当の潜在変数(最も正確な未来を得ることができる潜在変数)の列があり、エキスパートがとった実際にとった行動の列があります。この図の左側の2つの図は、ランダムにサンプリングされた潜在変数を持っていますが、本当の行動列を持っていますので、操縦という行動もあることが期待されます。左側の最後の図は、潜在変数ですが任意の行動の列を持っており、回転とアクション(他のエピソードからサンプリングされている)を符号化している行動よりも、回転のほとんどが潜在変数から来ていることがはっきりとわかります。 この問題を解決するにはどうしたら良いでしょう?

図17: 解決策:潜在変数のドロップアウト
問題は記憶の漏洩ではなく情報の漏洩です。私たちは、この潜在変数を単に削除して、事前分布からランダムにサンプリングすることで、この問題を解決します。常にエンコーダの出力($f_{enc}$)に頼るのではなく、事前分布からサンプリングします。このようにすることで、もはや潜在変数に回転操作を符号化することはできなくなります。こうして、情報は潜在変数ではなく行動の中に符号化されます。

図18: 潜在変数のドロップアウトによる性能
右辺では、実際の一連のアクションを持つ2つの異なる潜在変数のセットが見られますが、これらのネットワークは潜在変数をドロップアウトするトリックを用いて訓練されています。これによって、回転が行動によって符号化され、もはや潜在変数に符号化されていないことがわかります。 ## [エージェントの訓練](https://www.youtube.com/watch?v=VcrCr-KNBHc&t=3232s) 前節では、実世界での経験をシミュレートして世界モデルを得る方法を見ました。 この節では、この世界モデルを用いてエージェントを訓練します。 我々の目的は、過去の状態の履歴から、ある行動をとるための方策を学習することです。 ある状態$s_t$(速度、位置、コンテキスト画像)が与えられると、エージェントはアクション$a_t$(加速、ブレーキ、ステアリング)を取り、世界モデルは次の状態と、その$(s_t, a_t)$のペアに関連付けられたコストを出力します。 $$ c_\text{task} = c_\text{proximity} + \lambda_l c_\text{lane} $$ 前節で議論したように、曖昧な予測を避けるために、将来の状態$s_{t+1}$のエンコーダモジュールから、または事前分布$P(z)$から潜在変数$z_t$をサンプリングする必要があります。 世界モデルは、前の状態$s_{1:t}$と、エージェントがとった行動と、次の状態を予測するための潜在変数$z_t$を取得します。 これは、最終的な予測と最適化のための損失を与えるために、複数回複製される1つのモジュールを構成しています(図19)。

図19: タスク固有のモデルアーキテクチャ
モデルの準備が整いました。 どんな風に見えるか見てみましょう

図20: 学習された方策:エージェントはぶつかりあったり、道から離れていきます。
残念ながら、これはうまくいきません。 このように訓練された方策は、コストがゼロになるので、すべての黒を予測することを学習してしまうので、役に立たないのです。 どうすればこの問題に対処できるのでしょうか?予測を改善するために他の車両を真似してみることはできないでしょうか? ## エキスパートの真似をする エキスパートの真似をするにはどうすればいいのでしょうか?ある状態から特定の行動をとった後のモデルの予測が、実際の未来にできるだけ近いものになるようにしたいのです。これは、学習のためのエキスパートによる正則化として機能します。我々のコスト関数には、タスク固有のコスト(近接コストと車線コスト)とこのエキスパートによる正則化の項の両方が含まれています。実際の未来に関する損失も計算しているので、モデルから潜在変数を削除しなければなりません。なぜなら、潜在変数は特定の予測を与えてしまうからです。しかし、この設定では平均予測だけでやる方がうまくいきます。 $$ \mathcal{L} = c_\text{task} + \lambda u_\text{expert} $$

図21: エキスパートによる正則化に基づくモデルアーキテクチャ
このモデルはどう振る舞うでしょうか?

図22: エキスパートを真似することで学習された方策
上の図でわかるように、このモデルは実際には信じられないほどうまく動き、非常に良い予測をするように学習します。これはモデルベースの模倣学習で、私たちはエージェントをモデル化して他の人の真似をしようとしました。 しかし、もっとうまくできないでしょうか? 変分オートエンコーダーを訓練して、最終的にそれを除去しただけなのでしょうか? フォワードモデルの予測の不確実性を最小化することに目を向ければ、まだ改善できることがわかりました。 ## フォワードモデルの不確実性を最小化する フォワードおモデルの不確実性を最小化するとはどういうことでしょうか、また、どのようにしてそれを行うのでしょうか。それに答える前に、3週目の実習で見たことを思い出してみましょう。 同じデータで複数のモデルを訓練すると、それらのモデルはすべて訓練領域(赤で示されている)の点で一致し、結果として訓練領域の分散はゼロになります。しかし、訓練領域から遠ざかるにつれて、これらのモデルの損失関数の軌道は発散し始め、分散は増加します。これは図23に描かれています。 しかし、分散は微分可能なので、分散を最小化するために、分散の上で勾配降下を実行することができます。

図23: 全入力空間にわたるコストの可視化
議論に戻りますが、観測データのみを用いて方策を学習することは、実行時に生成される状態の分布が訓練段階で観測されたものと異なる可能性があるため、困難であることがわかります。世界モデルは、訓練された領域の外で任意の予測をすることがあり、それが間違って低コストになることがあります。その結果、ポリシーネットワークはダイナミクスモデルのこれらの誤差を利用して、誤って楽観的な状態になるような行動を生成する可能性があります。 これに対処するために、我々はダイナミクスモデルの予測の不確実性を測定する追加のコストを提案します。これは、同じ入力と行動を複数の異なるドロップアウトマスクに通して異なる出力間の分散を計算することで計算できます。これにより、ポリシーネットワークは、フォワードモデルが自信を持っている行動のみを生成するようになります。 $$ \mathcal{L} = c_\text{task} + \lambda c_\text{uncertainty} $$

図24: 不確実性に対する正則化を加えたモデルアーキテクチャ
では、不確実性に対する正則化は、より良い方策を学ぶのに役立つのでしょうか? はい、そうです。このようにして学習された方策は、以前のモデルよりも優れています。

図25: 不確実性の正則化に基づいて学習された方策
## 評価 図26は、我々のエージェントが渋滞している道路でどれだけ運転を学習したかを示しています。 黄色の車が元の運転手で、青の車が学習したエージェントで、緑の車はすべて我々には見えません(よって制御できません)。

図26: 不確実性の正則化つきモデルの性能

📝 Anuj Menta, Dipika Rajesh, Vikas Patidar, Mohith Damarapati
Shiro Takagi
14 April 2020