[論文解説] Upside-Down RL: Training Agents using Upside-Down Reinforcement Learning

この記事は，以下の論文の解説です．

[Training Agents using Upside-Down Reinforcement Learning](https://arxiv.org/abs/1912.02877) (2019)

記事内容では，強化学習の基礎的な知識を前提としています．
また，記事中の図は全て論文からの引用です．
不備がございましたら，ご指摘頂けると幸いです．



## 概要

この論文は，「従来の強化学習と異なり，すべて教師あり学習によって強化学習を行う手法を提案した」論文になります．



強化学習を教師あり学習によって行おうというモチベーションの研究は多々存在するものの，エージェントは，**どの行動をとるのが最適なのか**ではなく，**それぞれの行動がどのくらい有効なのか**に関する情報をフィードバック信号から受け取るため，すべて教師あり学習で強化学習問題を解くことは難しいと考えられてきました．

この論文では，すべて教師あり学習によって強化学習を行う手法 **Upside-Down Reinforcement Learning (UDRL)**を提案しています．



## Upside-Down Reinforcement Learning (UDRL)

![スクリーンショット 2020-01-26 20.45.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248552/47d85a87-d8f4-4322-9f5a-b2937e41fc8b.png)


従来の強化学習は，大まかにvalue-basedとpolicy-basedの2つに分類することができます．value-basedの手法では，状態と行動から将来的な(割引した)報酬を予測することを目標とします．policy-basedの手法では，将来的な報酬を最大化するような方策を直接探します．つまり，どちらも報酬を予測することがベースになった手法と考えることができます．

一方，この論文で提案する**Upside-Down Reinforcement Learning (UDRL)**では，報酬を予測対象ではなく入力として扱うことを提案しています．つまり，**状態と理想の報酬を入力とし，行動を出力する挙動関数を学習する**ことを目標とします．

以下では，有限長のMDPを考え，トラジェクトリーの長さを$T$とします．理想の報酬の値を $d^r \in \mathcal R$，理想の時間ステップ数を $d^h \in \mathcal N$ と表し，コマンド $c_t = (d_t^r, d_h^r)$ を**この先 $d_t^h$ ステップの間に，累積報酬 $d_t^r$ を獲得すること**を表すものとします．よって，挙動関数$B$は，状態$s_t$とコマンド$c_t$を入力として受け取り，そのコマンドを達成する行動の分布を出力する関数と考えることができます(上図右)．

この挙動関数$B$には，以下の特徴があります．

- Bの出力は行動の分布を表す．
    - 決定的なMDPの時でさえ，コマンドを達成する挙動は複数存在するため，確率的に表現することが望ましい．
- Bは教師あり学習で学習できる．
    - 同じエピソード内で，$(s_{t_1}, a_{t_1}, r_{t_1})$ と $(s_{t_2}, a_{t_2}, r_{t_2})$ が与えられたとき($t_1 < t_2$)，$d^r = \sum_{t=t_1}^{t_2} r_t$，$d^h = t_2 - t_1$ とする．
    - $B(s_{t_1}, d^r, d^h)$ と $a_t$ の間のCross Entropyの最小化，もしくは $a_t$ の尤度最大化により学習できる．

ただし，この論文ではすべて $t_2 = T-1$ (エピソードの終端)とするヒューリスティックを用いています．これにより，学習のサンプル数を大幅に減らし，かつエピソード終端に向けて報酬を最大化するという本来の目的に近いため，効率的な学習が期待できると考えられます．

このように，挙動関数は過去のデータから教師ありで学習することができ，(無限に学習させれば)任意の時間ステップで任意の報酬を得るための行動分布を出力することができます．しかし，強化学習の目的は，「任意の」ではなく「最大の」報酬を得ることです．以下では，その目的を達成するためのいくつかの修正を加えていきます．

### リプレイバッファ

**UDRL**では，過去のデータに含まれる挙動を再現するように学習を行うため，明示的に報酬を最大化する学習を行なっていません．そこで，**価値の高い順に優先的にデータをリプレイバッファに保持しておく**ことで，報酬を最大化するような挙動の学習を促進します．このとき，リプレイバッファのサイズはハイパーパラメータです．

### データ収集

獲得方策は，エピソード単位でデータを収集します．

まず，初期状態 $s_0$，初期コマンド $c_0$ を受け取ります．時間 $t$ において

- 行動分布 $P(a_t| s_t, c_t) = B(s_t, c_t ; \theta)$ から，行動をサンプルする．
- 次の状態 $s_{t+1}$ と報酬 $r_t$ を観測する．
- $(s_t, a_t, r_t)$ をリプレイバッファに追加する．
- $s_t \leftarrow s_{t+1}$，$d_t^r \leftarrow d_t^r - r_t$，$d_t^h \leftarrow d_t^h - 1$，$t \leftarrow t + 1$

をエピソード終了まで繰り返します．

学習時には，出来るだけ今までよりも高い報酬を得るように探索することが望ましいです．そのために，初期コマンド $c_0$ を以下のような手順で設定します．

1. いくつかのエピソードを累積報酬の高い順にリプレイバッファから取り出します．このとき取り出す数はハイパーパラメータです．
2. ステップ数 $d_0^h$ は，取り出したエピソードの平均エピソード長とします．
3. 累積報酬 $d_0^r$ は，一様分布 $\mathcal U[M, M+S]$ からサンプルします．ただし，取り出したエピソードの累積報酬の平均と標準偏差を$M$，$S$ とします．

このように初期コマンドを設定することで，ハイパーパラメータはたった1つで，今まで最も報酬が高かった挙動付近を探索することになり，**UDRL**の報酬最大化を促進することが期待できます．

### 評価

評価時の初期コマンドは，以下のように設定します．

- 累積報酬 $d_0^r$ は，直近のエピソードでの $d_t^r (t=0, \cdots ,T-1)$ の下限をとる．
- ステップ数 $d_0^h$ は，直近のエピソードの $d_0^r$ の値を利用する．

評価時には，行動分布からサンプルするのではなく，行動分布のモードの値を利用することも考えられますが，簡単のため，この論文では行なっていないそうです．



## 検証

![スクリーンショット 2020-01-26 21.59.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248552/1d8e8a85-6424-50a4-6f7e-ac29a136298a.png)

ここでは，**DQN**と**A2C**の2つの手法と比較検証していきます．

また，以下の2つのタスクを用いています．

- **LunarLander-v2** (上図左)
  - 8次元の状態，4つの行動集合
- **TakeCover-v0** (上図右)
  - サブサンプリングしたグレイスケール画像 $32 \times 32$ の状態
  - 左右の行動

全ての検証は20シード分行い，それぞれ1000万ステップ行なっています．ネットワーク構造など，その他の実装の詳細は論文を参照してください．



### 通常の設定

![スクリーンショット 2020-01-26 22.03.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248552/87c16c56-0796-e937-cd24-b7458d2607b1.png)


上図に，2つのタスクの結果を示しています．

**LunarLander-v2**では，**UDRL**は他のタスクに比べて性能が低いことがわかります．論文では，このタスクのように報酬が密に，かつ最後に大きな報酬を与えられるようなタスクにおいては，TD学習のような従来の強化学習の手法の方が適しているのではないか，と考察しています．これに関しては，次の実験(Sparse Reward)でさらに検証しています．

**TakeCover-v0**では，**UDRL**が他の手法を大きく上回る性能を示しています．このことから，**UDRL**は高次元入力のタスクでも高い性能を示すことがわかりました．



### Sparse Reward

![スクリーンショット 2020-01-26 22.02.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248552/44cbc23c-89de-0d3c-319c-9bd5f06eae0e.png)

**LunarLander-v2**で**UDRL**がうまくいかない原因として，報酬が密で，かつ最後に大きな報酬が与えられるときは，従来の強化学習の手法の方が適しているのではないかと考察しました．ここでは，通常の**LunarLander-v2**のタスクの報酬を，エピソードの最後にまとめて与えるように修正した，スパースな報酬設計のタスク(**LunarLanderSparse**)で検証を行います．

上図から，**UDRL**が他の手法よりも高い性能を示していることが読み取れます．ただし，**UDRL**の性能が大きく上昇したというよりは，他の手法がスパースな報酬設計での学習に失敗していると考えることができます．



### 考察

上記の検証により，密な報酬(**TakeCover-v0**)，スパースな報酬(**LunarLanderSparse**)の両方において**UDRL**は学習できたものの，特定の環境においては，密な報酬よりもスパースな報酬設計の方が(相対的に)適していることがわかりました．



## まとめ

この論文では，強化学習を全て教師あり学習によって行う手法，**UDRL**を提案しました．

多くのTD誤差を用いた強化学習の手法は，累積報酬を割引率によって歪めてしまっていたり，環境の時間ステップ(行動の周波数)に鋭敏なため，制御問題に適用しにくいという課題があります．また，TD誤差のターゲットとして価値の推定値を用いており，推定値の推定によって学習が不安定になりやすいなど，多くの課題があります．

**UDRL**は，細かいテクニックや理論は未成熟なものの，これらの課題を解決する手法の出発点として，今後さらなる研究が期待されます．