[論文解説] HIRO: Data-Efficient Hierarchical Reinforcement Learning

以下の論文の解説(まとめ)になります．

[Data-Efficient Hierarchical Reinforcement Learning](https://arxiv.org/abs/1805.08296)

この論文は，Google Brainが出した論文でNeurIPS 2018に採択されています．階層型強化学習(HRL)における課題である汎用性とサンプル効率を改善する手法を提案していたため，今回紹介させていただきました．この論文で提案しているモデルは，**HIRO**(HIerarchical Reinforcement learning with Off-policy correction)と呼ばれる手法になります．

また，この記事は連続行動空間における強化学習の基礎を理解している人を対象としています．DDPGのアルゴリズムをまだ理解していないという方は，先にDDPGの概要を理解することをお勧めします([参考サイト](https://spinningup.openai.com/en/latest/algorithms/ddpg.html))．

記事中の図は，特に記載がない限りすべて論文からの引用です．
記事内容に不備がございましたら，ご指摘頂けると助かります．



## 概要

この論文は，既存の階層型強化学習(HRL)における2つの課題

- サンプル効率が悪いこと (多くの手法はon-policyなため)
- 汎用性がないこと (タスクに特化した設計を行っていること)

を指摘し，それぞれ

- **Off-Policy Correction**と呼ばれる手法を提案し，off-policyでの学習を実現したこと
- 下位方策の状態空間(=上位方策の行動空間)を．上位方策の状態空間(=環境からの観測空間)上に定義することで，人間によるタスク特化の(内在的な)報酬の設計をなくしたこと

によって解決したものになります．



### HRL

HRLの概要について，軽く復習していきます．この論文では，連続行動空間上の強化学習を想定していますが，下記の議論は離散行動空間上でも成り立ちます．また，以下では簡単のため2層の方策からなるHRLのみを考えます．

HRLとは，複雑なタスクをより長期的な視点で抽象的な行動計画を立てる**上位方策**と，実際に行動を起こす**下位方策**に分けて階層的に学習しよう，というモチベーションで提案された強化学習の手法です．例えば，人間が料理を作る際には，切る，焼くなどの比較的簡単な行動を低いレイヤで学習し，それらを組み合わせて料理を作ることを高いレイヤで学習していると考えられます．

このようなHRLの手法は，主に2つに分類することができます．

- **Goal-Conditioned**ベース

    上位に1つ，下位に1つの方策を持ちます．

    - 上位方策が，目標状態(数ステップ先に達成してほしいサブゴール)を出力する
    - 下位方策は，目標状態に近づくように学習する

    例) ナビゲーションタスクにおいて，上位方策が数ステップ先に到達してほしい位置を出力します．下位方策は，その位置に近づくように方策を学習します．

- **Option Framework**ベース

    上位に1つ，下位に複数個の方策を持ちます．

    - 複数の下位方策が，それぞれ異なる行動パターン(Primitive)を学習する
    - 上位方策は，数ステップごとにどの下位方策を用いて行動するかを選択する

    例) 下位で右・左・真っ直ぐに進む歩行パターンに対応する3つの方策を学習していた場合，上位方策が適切な下位方策を選択することで任意の方向に進むことができると期待されます．

これらの手法はどちらも，階層型に切り分けることで方策の解くべきタスクを簡単なものにし，学習を簡単にできると期待されます．この論文では，**Goal-Conditioned**ベースのHRLに基づいた手法を提案しているので，以下ではそちらのみを考えます．



## HIRO

サンプル効率と汎用性を改善した提案手法，**HIRO**に関して説明していきます．以下では，各方策に関する強化学習アルゴリズムとしてTD3またはDDPGを考え，詳細なパラメータの更新式等は省略します．

### モデル概要

![スクリーンショット 2019-10-11 21.36.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248552/992f29ab-a390-560a-038b-a245f3a99e4d.png)


HIROは，長期的な視点での方策にあたる**上位方策**と，毎ステップ環境に対して行動を起こす**下位方策**の2つの方策からなります．(上図参照)

**上位方策**$\mu^{hi}$は，cステップに一度目標状態$g_t$をサンプリングします．**Goal-Conditioned**なHRLでは，$g_t$はcステップ後に達成したい状態の潜在表現**Goal State**を意味します．例えば，状態$s_t$がエージェントの位置を表す場合には，目標状態(**上位方策**の行動)は「cステップ後に達成したい，現在の位置からの相対位置の潜在表現」を出力することになります．

**HIRO**では，**上位方策**の行動空間(目標状態の空間)と状態空間を一致させることを提案しています．つまり，目標状態を潜在空間上に写像せず，状態と同じ形式で保持することを提案しています．このことによって，

- タスクに特化した潜在空間や**下位方策**の内在的な報酬を設計する必要がなくなり，汎用性が改善される
- **上位方策**が潜在表現を学習する必要がなくなり，学習初期段階から**下位方策**に有意義な(内在的な)報酬を与えることができる

というメリットが期待できます．内在的な報酬については，後ほど説明します．

この**Goal State**は$g_t$で表され，cステップに一度**上位方策**からサンプリングされます．$g_t$は現在の状態$s_t$に対した相対的な目標状態を表すので，cステップの間に$g_t$は，絶対的な目標状態が変化しないように状態の変化を考慮した遷移を行います．

~~~math
\begin{align}
g_t &\sim \mu^{hi} \;\;&(\rm{when} \;t \equiv 0 \;\rm{mod} \; c) \\
g_t &= h(s_{t-1}, g_{t-1}, s_t) \\
&= s_{t-1} + g_{t-1} - s_t \;\;&(\rm{otherwise})
\end{align}
~~~

また，**上位方策**は**下位方策**がcステップ間に環境から得た報酬の総和$\sum_{\tau=t}^{t+c}R_\tau = R_{t:t+c}$を報酬として，累積報酬を最大化するように学習を行います．

**下位方策**$\mu^{lo}$は，環境から状態$s_t$，上位方策から目標状態$g_t$を観測し，行動$a_t$をサンプリングします．

~~~math
a_t \sim \mu^{lo}(s_t, g_t)
~~~

行動$a_t$を環境に作用させることで，報酬$R_t$と次の状態$s_{t+1}$を環境から受け取ります．**下位方策**は，「cステップの間にどれだけ目標状態$g_t$に近づけたか」を表す量を最大化したいので，報酬$R_t$ではなく，以下に定義する内在的な報酬$r$の累積報酬を最大化するように学習を行います．

~~~math
r(s_t, g_t, a_t, s_{t+1}) = -|| s_t + g_t - s_{t+1} ||_2
~~~

ここで内在的な報酬とは，実際には環境から観測されない報酬，という意味で用いることにします．ここで定義した内在的な報酬は，目標状態に近づけたかを表しています．

注意すべき点として，**上位方策**のQ関数は状態$s_t$と目標状態$g_t$に依存した写像$Q^{hi}(s_t, g_t)$となるのに対し，**下位方策**のQ関数は，状態$s_t$，目標状態$g_t$，行動$a_t$に依存した写像$Q^{lo}(s_t, g_t, a_t)$となります．



まとめると，

- 上位方策
    - 環境からの報酬$R$の最大化
    - cステップごとに目標状態$g_t$をサンプリングする．

    ~~~math
    g_t \sim \mu^{hi}
    ~~~
    - 目標状態$g_t$は，現在の状態$s_t$に対して，cステップ後に達成したい状態の相対的な量を表す．
    - 学習は，遷移$(s_t, g_t, R_{t:t+c}, s_{t+c})$に基づいて行われる

- 下位方策

    - 目標状態にどれだけ近づいたかを表す内在的な報酬$r$の最大化
  
    ~~~math
    r(s_t, g_t, a_t, s_{t+1}) = -|| s_t + g_t - s_{t+1} ||_2
    ~~~

    - 各ステップ，行動$a_t$をサンプリングする．
    
    ~~~math
    a_t \sim \mu^{lo}
    ~~~

    - 学習は，遷移$(s_t, g_t, a_t, r_t, s_{t+1}, h(s_t, g_t, s_{t+1}))$を基づいて行われる

となります．

先行研究との差分としては，**上位方策**の行動空間(目標状態の空間)と状態空間を一致させることで，汎用性を改善した点が挙げられます．



### Off-Policy Correction

上に述べたモデルには，**上位方策**をoff-policyで学習することができない，という大きな問題があります．これは**下位方策**も毎ステップ変化しているため，同じ状態$s_t$で同じ目標状態$g_t$を出力した時でも，得られる報酬$R_{t:t+c}$や次の状態$s_{t+c}$(，またはその背景にある状態遷移モデル)が大きく異なる可能性があるからです．

そこでこの論文では，リプレイバッファを用いてoff-policyで学習を行うために，**上位方策**の学習時に目標状態$g_t$を修正することを提案しています．具体的には，昔の**下位方策**によって得られた遷移に関して，学習時の**下位方策**$\pi^{lo}$が尤も行動$a_t$をサンプリングしやすいような目標状態$\hat g_t$を求め，その値を目標状態として修正します．すなわち，行動$a_t$の対数尤度を最大化するような$\hat g_t$を求めます．

~~~math
\log \mu^{lo}(a_{t:t+c}|s_{t:t+c}, \tilde{g}_{t:t+c}) \propto - \frac{1}{2} \sum_{i=1}^{t+c-1} || a_i - \mu^{lo}(s_i, \tilde{g}_i)||^2_2 + const
~~~

実際に上記の最大化問題を解析的に解くことはできないので，$s_{t+c}-s_t$を中心としたガウス分布から8点サンプリングし，$g_t$と$s_{t+c}-s_t$を含めた10点の中から上式を最大化する$\tilde{g}_i$を求め，修正後の値として用います．

この修正，**Off-Policy Correction**により，**上位方策**もoff-policyで学習できるようになるため，サンプル効率を大幅に改善できると期待されます．







## 検証

![スクリーンショット 2019-10-11 20.48.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248552/9226c631-43f4-5a48-7fd5-2e19373b3c23.png)


MuJoCoシミュレータを用いて設計された，4つの4脚エージェントのナビゲーションタスクで比較実験を行います．

上の図が4つのタスクを表しています．左から順に

- Ant Gather: 緑色の球を取ると+1，赤色の球を取ると-1の報酬を得る，比較的簡単なタスク
- Ant Maze: U字型の経路を通じて，目標地点(緑色)まで行くタスク
- Ant Push: 障害物(赤色)を押し除けて，目標地点(緑色)まで行くタスク
- Ant Fall: 障害物(赤色)を溝に落として，その高さを利用して目標地点(緑色)まで行くタスク

です．これらのタスク(のうち後者3つ)は，既存のHRLでない通常のRLではうまく学習できないことが先行研究から指摘されています．

また，主なハイパーパラメータを下記に示します．

- **上位方策**の更新頻度: 10ステップに1回($c=10$)
- RLアルゴリズム: TD3
- ネットワーク: 隠れ層(400, 300)，ReLU

![スクリーンショット 2019-10-11 20.55.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248552/82dc5922-8289-2983-5f18-6d40f68a9db7.png)


検証の結果，FuNなどの既存のHRLの手法に比べて，高い性能を出していることがわかりました．また，**Option Framework**ベースの代表的な手法である**Option Critic**では，全く学習できなかったと報告されています(なので結果は省かれています)．

また，論文ではablation studyも行っていますが，ここでは省略させて頂きます．ぜひ論文を参照してみてください．


## 結論

この論文では，**HIRO**と呼ばれるHRLの手法を提案し，既存のHRLだと指摘されていたサンプル効率と汎用性を改善しました．

また，MuJoCoシミュレータでのナビゲーションタスクにおいて，既存のHRLに比べて優位な性能を出せることを示しました．

個人的な感想としては，サンプル効率に関する検証がなかった点が気になりました．