Asynchronous Methods for Deep Reinforcement Learningを読んだ

Volodymyr Mnih, Adrià Puigdomènech Badia, Mehdi Mirza, Alex Graves, Timothy P. Lillicrap, Tim Harley, David Silver, Koray Kavukcuoglu
ICML 2016
[arXiv](https://arxiv.org/abs/1602.01783), [pdf](https://arxiv.org/pdf/1602.01783.pdf)

# どんなもの？
CPUで複数のactor-learnersを並列に計算することで，パラメータを非同期に更新．
GPUを用いたDQNよりも早く，安定した学習が可能になった．

# 先行研究との差分
DQNの学習は不安定で，パラメータの更新はデータと強い相関を持ってしまう．
そこで学習の安定のためにexperience replayが用いられる．
しかしexperience replayを使うと，大きなメモリが必要となる，Q学習などのoff-policy型のアルゴリズムに限られる，などの問題がある．

先行研究との差分

- CPUによる並列計算で強化学習
- experience replayを使用せずに，安定した学習ができる
    - 必要なメモリを削減
    - on-policy型のアルゴリズムも使える
- state-of-the-artの手法よりも高速で，より良い方策を学習できる


# 技術や手法のキモ
CPUで複数のactor-learners（NARUTOの影分身の術みたいな感じ？）を並列に計算することで，パラメータを非同期に更新．
アルゴリズムの異なる4つの手法を提案．

- Asynchronous one-step Q-learning  
毎ステップ，ローカルの$d\theta$を更新．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/3a9e6ef9-8bda-ca8b-bdc5-24b47a7607af.png)

<br>

- Asynchronous one-step Sarsa  
流れはAsynchronous one-step Q-learningと同様．更新式がSarsa．

<br>

- Asynchronous n-step Q-learning  
terminal状態になるか，$t_{max}$ステップ経過後にローカルの$d\theta$を更新．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/efca4ca6-a175-2c99-8750-9a1f5d6e4804.png)

<br>

- Asynchronous advantage actor-critic (A3C)  
流れはAsynchronous n-step Q-learningと同様．アルゴリズムはAdvantage Actor-Critic． Actor-Criticは方策と状態価値関数をそれぞれ独立に推定する手法．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/d5998c2a-f639-4113-2a69-f1843c0059a5.png)


# どうやって有効性を検証したか
Atari 2600 games, TORCS 3D car racing simulator, Mujoco, Labyrinthで実験．

- Atari 2600 Games
DQNはNvidia K40 GPUで，非同期手法は16コアCPUで学習．

    - どの非同期手法もDQNより早く学習が進んでいる
    - one-stepよりn-stepの方が良さそう
    - A3Cが他を圧倒


![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/e39bf2be-31a6-2a53-61e5-cbcbe27ba0c4.png)

（急にFF, LSTMが出てきて困惑）
1日の学習でDueling Double DQNやGorila並みのスコアになっている．

![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/e5fcc2d0-3533-2987-5235-7861700bea18.png)

<br>

- TORCS Car Racing Simulator  
もっとリアルな画像で，車の動きや制御の学習が求められる．  
4つのセッティングで実験．  
A3Cが最も良く，human testerの75~90%のスコアが得られた．  
human testerは12時間訓練．  
https://youtu.be/0xo1Ldx3L5Q

![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/9b1ee661-fc73-0e29-1ed3-9458b3929e87.png)

<br>

- Continuous Action Control Using the MuJoCo Physics Simulator  
物理エンジンで関節の制御．  
24時間弱の学習で非常に良い結果が得られるが2, 3時間の学習でもある程度学習できた．  
https://youtu.be/Ajjc08-iPx8

<br>

- Labyrinth  
報酬は迷路の中でランダムに生成される．  
agentのスタート地点は毎エピソードでランダム．  
迷路にはapplesとportalsが設置されていて，applesを取ると報酬1獲得，portalsを取ると報酬10を獲得し，ランダムな位置にリスポーン，取ったapplesは再生成．（「たくさんapplesを取ってリスポーン」を繰り返すと高得点）  
1エピソードは60秒で終了．  
A3C LSTMで訓練．  
https://youtu.be/nMR5mjCFZCw

<br>

-  Scalability and Data Efficiency  
スレッド数とあるスコアに到達するまでの時間の関係性．  
one-step手法で大幅なスピードアップ．スレッド数が増えたことで，one-stepのバイアスが低減されたからか．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/93f08af6-fe79-d798-6cd0-9f08ad6df532.png)

<br>

- Robustness and Stability  
学習率を変えた時のA3Cのスコア（5 games）．  
ある程度の範囲の学習率で高スコアが得られていることからハイパーパラメータの変化に頑健．

![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/5b80ba3b-2fb4-e56b-ea18-d0bd68047f8d.png)


# 議論はあるか
- CPUで並列に学習を走らせることで，安定した学習が可能なA3Cを提案
- experience replay無しで安定したQ-learningが可能になった．experience replayと非同期学習を組み合わせる事で，より高性能になるかも


# 次に読むべき論文
[Reinforcement Learning with Unsupervised Auxiliary Tasks](https://arxiv.org/abs/1611.05397)