introduction to deep q learning
TRANSCRIPT
ディープラーニングの最新動向 強化学習とのコラボ編① DQN
2016/4/28 株式会社ウェブファーマー
大政 孝充
今回取り上げるのはこれ
[1]V. Mnih, K. Kavukcuoglu, D. Silver, A. Graves I. Antonoglou, D. Wierstra, M. Riedmiller. “Playing Atari with Deep Reinforcement Learning” arXiv:1312.5602, 2013. もしくは [2]V. Mnih, et al. “Human-level control through deep reinforcement learning” nature, 2015. ディープラーニングと強化学習とを組み合わせることで、ゲームで高得点を叩き出した!
全体像は・・・
全体像は[3]塚原裕史氏「論文紹介 Playing Atari with Deep Reinforcement Learning」 http://www.slideshare.net/htsukahara/paper-intoduction-playing-atari-with-deep-reinforcement-learning や[4]藤田康博氏「Playing Atari with Deep Reinforcement Learning」 http://www.slideshare.net/mooopan/ss-30336609 などを参照してください →今回は重要な部分だけを詳しく解説
今回はここだけ解説
①Q-Learningをどう改良してDQNとしたか ②アルゴリズムの詳細はどのようなものか
まず①番
①Q-Learningをどう改良してDQNとしたか ②アルゴリズムの詳細はどのようなものか
ベルマン方程式からはじめる
Q* st,at( ) = ES '≈ε r +γmaxat+1Q* st+1,at+1( ) st,at
⎡⎣⎢
⎤⎦⎥
statQ st,at( )Q* st,at( )rγ
: t における状態
: t における行動
: 状態 で の行動をとった場合の価値
: 状態 で の行動をとり、その後最適な行動をとった場合の価値
: 報酬
: 割引率
st
st atat
ベルマン方程式を直感的に理解する(1)
Q* st,at( ) = ES '≈ε r +γmaxat+1Q* st+1,at+1( ) st,at
⎡⎣⎢
⎤⎦⎥
① この瞬間が状態 st② この時行動 をとってみる at
状態 で の行動をとった場合の価値 はその後とるであろう報酬の累計と考える
ベルマン方程式を直感的に理解する(2)
Q* st,at( ) = ES '≈ε r +γmaxat+1Q* st+1,at+1( ) st,at
⎡⎣⎢
⎤⎦⎥
Q st,at( )st at
Q st,at( ) = rt + rt+1 ⋅γ + rt+1 ⋅γ 2 +…将来分はどんどん割り引く
特に t+1 以降で最適な行動をとった場合を とする
ベルマン方程式を直感的に理解する(3)
Q* st,at( ) = ES '≈ε r +γmaxat+1Q* st+1,at+1( ) st,at
⎡⎣⎢
⎤⎦⎥
Q* st,at( )→これを を使って表現したい。 Q* st+1,at+1( )
ベルマン方程式を直感的に理解する(4)
Q* st,at( ) = ES '≈ε r +γmaxat+1Q* st+1,at+1( ) st,at
⎡⎣⎢
⎤⎦⎥
例えば、 (右へ移動)で 40点 獲得した!
at = r =
40点
次の t+1 では最適な行動 を選択する maxat+1
次の t+2 以降は最適な行動をするとする maxat+1
Q* st+1,at+1( )
ベルマン方程式を直感的に理解する(5)
Q* st,at( ) = ES '≈ε r +γmaxat+1Q* st+1,at+1( ) st,at
⎡⎣⎢
⎤⎦⎥
これに割引率 をかけて、 t の報酬 を加える γ r
ベルマン方程式を直感的に理解する(6)
Q* st,at( ) = ES '≈ε r +γmaxat+1Q* st+1,at+1( ) st,at
⎡⎣⎢
⎤⎦⎥
実際は確率的なので、期待値とする
これを使って更新していく
Qi+1 st,at( )⇐ E r +γmaxat+1
Q st+1,at+1( ) st,at⎡⎣⎢
⎤⎦⎥
とすれば、 で となるだろう i→∞ Qi →Q*
以上をDQN用に変形する
Qi+1 st,at( )⇐ E r +γmaxat+1
Q st+1,at+1( ) st,at⎡⎣⎢
⎤⎦⎥
[2]のFigure1より
DQNでは として Qi st,at( )
を使う
Qi st,at;θ( )モデルの出力
まず
以上をDQN用に変形する
Qi+1 st,at;θ( )⇐ E r +γmaxat+1
Q st+1,at+1;θ( ) st,at⎡⎣⎢
⎤⎦⎥
のようにしたい。しかし実際に更新するのはdeep learning部分の重み 。 よって、両辺の差をとり、 とし、これを誤差とする。 この差を0に収束させるように誤差逆伝播させればいい。
θ
E r +γmaxat+1
Q st+1,at+1;θ( ) st,at⎡⎣⎢
⎤⎦⎥−Qi+1 st,at;θ( )
0⇐ E r +γmaxat+1
Q st+1,at+1;θ( ) st,at⎡⎣⎢
⎤⎦⎥−Qi+1 st,at;θ( )⎛
⎝⎜
⎞⎠⎟2
次に②番
①Q-Learningをどう改良してDQNとしたか ②アルゴリズムの詳細はどのようなものか
これがアルゴリズム
[1] より
アルゴリズムの詳細(1)
[1] より
これがゲーム1回分
アルゴリズムの詳細(2)
[1] より
ε-greedy法の部分
アルゴリズムの詳細(3)
[1] より
ここでゲームを 実行する という行動をとり、 という報酬をもらい、その結果 という状態(画面)となる。
atrt xt+1
アルゴリズムの詳細(4)
[1] より
演算処理して、 や を求める st+1 φt+1
アルゴリズムの詳細(5)
[1] より
などをメモリーに 記録する φt+1
アルゴリズムの詳細(6)
[1] より
ここがdeep learningの学習部分
アルゴリズムの詳細(7)
[1] より
ミニバッチを選ぶ
アルゴリズムの詳細(8)
[1] より
ゲームの最後かどうかの分岐
アルゴリズムの詳細(9)
[1] より
誤差逆伝播の計算
アルゴリズムの詳細(10)
[1] より
こういったゲーム&学習を繰り返す。 そのうち高得点がはじき出される
終わり