Slide 1

Slide 1 text

DQNはDQNでも賢いDQN速習会@Wantedly 妹尾卓磨

Slide 2

Slide 2 text

自己紹介 妹尾 卓磨 慶應義塾大学理工学部情報工学科 今井研究室 強化学習についての研究 好きなもの: Star Wars 2

Slide 3

Slide 3 text

速習すること ● 強化学習の概要をなんとなく知る ○ DQNで遊ぶのに必要なミニマルな基礎理論を知る ● DQNがどうやって動いているか知る ○ DQNで遊ぶのに必要なDQNの仕組みを知る ● DQNで遊んでみる ○ 遊んでみる 3

Slide 4

Slide 4 text

今回の経緯 強化学習の研究をしているのでプロダクトに活かしたいので速習会やろ でもDQNはまだ気軽にプロダクションへ活かせるものではない (そもそもDeepである必要がない場合が多いだろう) だからこそ最初に強化学習の概要を知るのは大事 でも入り口としてDQNは面白いじゃん!! 4

Slide 5

Slide 5 text

強化学習を知る 5

Slide 6

Slide 6 text

強化学習で話題になったこと(1) AlphaGo 囲碁チャンピオンを倒したAI https://www.youtube.com/watch?v=f_r9smp4-0U Silver, David and Huang, Aja and Maddison, Chris J. and Guez, Arthur and Sifre, Laurent and van den Driessche, George and Schrittwieser, Julian and Antonoglou, Ioannis and Panneershelvam, Veda and Lanctot, Marc and Dieleman, Sander and Grewe, Dominik and Nham, John and Kalchbrenner, Nal and Sutskever, Ilya and Lillicrap, Timothy and Leach, Madeleine and Kavukcuoglu, Koray and Graepel, Thore and Hassabis, Demis, Mastering the Game of Go with Deep Neural Networks and Tree Search, 2016 6

Slide 7

Slide 7 text

強化学習で話題になったこと(2) Deep Q-Network (DQN) Atariで人間と同じかそれ以上の点数を取れるようになった https://www.youtube.com/watch?v=TmPfTpjtdgg 7 Volodymyr Mnih and Koray Kavukcuoglu and David Silver and Alex Graves and Ioannis Antonoglou and Daan Wierstra and Martin Riedmiller,Playing Atari With Deep Reinforcement Learning, 2013 Volodymyr Mnih, Koray Kavukcuoglu, David Silver, Andrei A. Rusu, Joel Veness, Marc G. Bellemare, Alex Graves, Martin Riedmiller, Andreas K. Fidjeland, Georg Ostrovski, Stig Petersen, Charles Beattie, Amir Sadik, Ioannis, Antonoglou, Helen King, Dharshan Kumaran, Daan Wierstra, Shane Legg, Demis Hassabis, Human-level control through deep reinforcement learning, 2015

Slide 8

Slide 8 text

強化学習で話題になったこと(3) Googleがデータセンターの冷却に必要なエネルギーを40%削減したらしい (DQNを使ったとは明示的には書いていないが) https://environment.google/projects/machine-learning/ https://blog.google/topics/environment/deepmind-ai-reduces-energy-used-for/ 8

Slide 9

Slide 9 text

身近な強化学習の例 遭難して無人島にいるところを想像しましょう 浜辺にずっといると死んでしまうので島を探索しなければならない ● 戦略1 綺麗な水や食べ物を探しに歩きまわる ● 戦略2 歩いたら疲れるし、悪い水を飲んだら危ないので浜辺でじっとする 牧野貴樹、渋谷長史、白真一、これからの強化学習、 2016より抜粋 9

Slide 10

Slide 10 text

無人島での戦略 ● 戦略1: 綺麗な水や食べ物を探しに歩きまわる リスクはあるが、もし発見できれば今後そこを利用して長く生存できる可能性 ● 戦略2: 歩いたら疲れるし、悪い水を飲んだら危ないので浜辺でじっとする リスクはないのでアクシデントで死ぬことはないが、このままだと死ぬ これをうまく解くのが強化学習! 10

Slide 11

Slide 11 text

強化学習とは(1) 機械学習には大きく分けて3つのタイプがあります ● 教師あり学習 ● 教師なし学習 ● 強化学習 強化学習は教師あり学習でも教師なし学習でもありません 11

Slide 12

Slide 12 text

強化学習とは(2) ● 教師あり学習 ○ 教師データを元に学習を行う ● 教師なし学習 ○ 入力データ群に対して隠れたデータ構造を発見する ● 強化学習 ○ 環境とインタラクションしつつ報酬を最大化する行動を獲得する 12

Slide 13

Slide 13 text

強化学習とは(3) エージェントが環境とインタラクションしつつ 環境から受け取る報酬の和を最大化する行動を獲得する手法 13

Slide 14

Slide 14 text

強化学習の特徴 知識と探索を駆使して報酬を最大化する行動を獲得する手法 ● 知識の利用 過去の経験で得られた知識を利用して報酬を最大化する ● 探索 今まで見たことのない、より高い報酬を探し求める このバランスを取るのが大事 14

Slide 15

Slide 15 text

無人島の例に戻ると エージェント: 人間 環境: 無人島 報酬: 行動が生存につながった度合い 行動: 無人島で人間がする行動 目標: より長く生存すること 報酬の総和を最大化すること 15

Slide 16

Slide 16 text

無人島の例での戦略 ● 戦略1: 綺麗な水や食べ物を探しに歩きまわる リスクはあるが、もし発見できれば今後そこを利用して長く生存できる可能性 探索と知識の利用をうまくすれば収益を最大化できそう その代わり、知識の利用をせずに探索すると収益が低くなるかも ● 戦略2: 歩いたら疲れるし、悪い水を飲んだら危ないので浜辺でじっとする リスクはないのでアクシデントで死ぬことはないが、このままだと死ぬ 探索が足りておらず、局所解に陥ってしまった 16

Slide 17

Slide 17 text

Webにおいてどういう場合に使える? ● 教師データがないような場合にパラメータを探索したい 検索のスコアリングの重み付けの最適化 ● UIの出し方を最適化しつつ変更したい クリック率などを報酬に設定してUIを最適化 ● インフラの最適化などをオンラインで学習しつつやる 料金と応答時間のバランスを最適化 17

Slide 18

Slide 18 text

少し詳しく見る 18

Slide 19

Slide 19 text

用語を覚えよう 状態 エージェントのいる環境の様子 s t : tでの環境の様子 19

Slide 20

Slide 20 text

用語を覚えよう 行動 エージェントが環境に働きかける行動 a t : tでの行動 20 ファイヤー!

Slide 21

Slide 21 text

用語を覚えよう 報酬 環境からエージェントへ与えられる評価 r t : tでの環境からの評価 21

Slide 22

Slide 22 text

用語を覚えよう 方策 エージェントの行動パターン π(s, a): 状態sで行動aを取る確率として表すことが多い 22 ここをジャンプだ!

Slide 23

Slide 23 text

用語を覚えよう 収益 報酬の和。割引率γを導入してどのくらいのスパンでの収益かを調整する R t = r t + γr t+1 + γ2r t+2 + γ3r t+3 + …. 23

Slide 24

Slide 24 text

マルコフ性 次の状態が今の状態と行動にしか依らない Pr {s t+1 = s’, r t+1 = r | s t , a t } 強化学習では環境がマルコフ性をもつとする 24

Slide 25

Slide 25 text

状態価値関数 状態に対する価値(収益)を返す関数 真の価値関数を求めるのが目標!! 収益 25

Slide 26

Slide 26 text

簡単な方策の例 状態価値関数をすでに持ってるなら 常に一番大きな価値を持つ状態に移動するように行動 s s 1 s 2 s 3 V(s 1 ) = 0.1 V(s 2 ) = 0.2 V(s 3 ) = 0.1 囲碁とかチェスはこれで行動選択できる 26

Slide 27

Slide 27 text

遅れて発生する報酬 インベーダーゲームだと、撃ってからしばらくしてスコアが貰える 打った瞬間の状態にも価値を与える必要がある 27

Slide 28

Slide 28 text

Belleman方程式(1) ある状態の報酬と後続の状態群の報酬の関係を表した式 即時報酬 未来の割引報酬 28

Slide 29

Slide 29 text

Belleman方程式(2) 次の状態の価値との関係を表せる 次の状態の価値 29 即時報酬

Slide 30

Slide 30 text

TD学習(1) 状態価値関数をオンラインで更新する手法 各ステップで上を計算することで 報酬を前の状態に伝搬させる 目標 今の値 30

Slide 31

Slide 31 text

TD学習(2) V(s t+3 )=0, V(s t+2 )=0, V(s t+1 )=0, V(s t )=0, a = 1, γ=0.9 s t+2 s t+1 s t r t+3 =1 r t+2 =0 r t+1 =0 V(s t+2 ) = 0 + {1 + 0 - 0} V(s t+1 ) = 0+ {0 + 0 - 0} V(s t ) = 0 + {0 + 0 - 0} iteration1 例としていつも同じ状態遷移をするとする 31

Slide 32

Slide 32 text

TD学習(3) V(s t+3 )=0, V(s t+2 )=1, V(s t+1 )=0, V(s t )=0, a = 1, γ=0.9 s t+2 s t+1 s t r t+3 =1 r t+2 =0 r t+1 =0 V(s t+2 ) = 1 + {1 + 0 - 1} V(s t+1 ) = 0 + {0 + 0.9 - 0} V(s t ) = 0 + {0 + 0 - 0} iteration2 32

Slide 33

Slide 33 text

TD学習(4) V(s t+3 )=0, V(s t+2 )=1, V(s t+1 )=0.9, V(s t )=0, a = 1, γ=0.9 s t+2 s t+1 s t r t+3 =1 r t+2 =0 r t+1 =0 V(s t+2 ) = 1 + {1 + 0 - 1} V(s t+1 ) = 0.9 + {0 + 0.9 - 0.9} V(s t ) = 0 + {0 + 0.81 - 0} iteration3 33

Slide 34

Slide 34 text

状態価値関数の不便なところ 状態価値関数は次の状態がわからないと使えなくない? s s ? s ? s ? 状態価値関数に入れる状態がわからない 34

Slide 35

Slide 35 text

行動価値関数 状態と行動に対する価値(収益)を返す関数 状態価値関数との関係 35

Slide 36

Slide 36 text

行動価値関数の簡単な方策の例 行動価値関数をすでに持ってるなら 常に一番大きな行動価値を持つ行動を選択 s Q(s, a 1 ) = 0.1 Q(s, a 2 ) = 0.2 Q(s, a 3 ) = 0.1 これなら次の状態を考えなくて良い(マルコフ性のおかげ) 36

Slide 37

Slide 37 text

行動価値関数の後続の状態との関係 次の状態の最大のQ値 37

Slide 38

Slide 38 text

Q学習 TD学習と同様にオンラインで行動価値関数を更新する 一番簡単なQ関数の表し方はテーブル 状態/行動 行動1 行動2 状態1 ... ... 状態2 ... ... 目標 今の値 38

Slide 39

Slide 39 text

探索について 今持っている方策にいつも従うと経験できない状態がある ここを如何にうまくやるかが大事!! 39

Slide 40

Slide 40 text

行動の選択方法 ● greedy選択 常に現在の学習状態で最高の選択を行う ● ε-greedy選択 確率εでランダムに行動を選択する ● ボルツマン行動選択 各行動のQ値に対してsoftmax関数を適応した確率分布で選択 40

Slide 41

Slide 41 text

DQNを知る 41

Slide 42

Slide 42 text

DQNとは ヤンキー(不良)もしくは、軽率そうな者や実際にそうである者、粗暴そうな風貌をしてい る者や実際に粗暴な者、また、非常識で知識や知能が乏しい者を指すときに用いられる 1994年から2002年までテレビ朝日で放送されていた番組『目撃!ドキュン』が由来とされ る。目撃ドキュンの内容は、離婚などで生き別れの親子が対面などというものであった。 そのため、ヤンキーのことを、「15歳で結婚して子供が生まれて、20歳になったら離婚し て、40歳になったら目撃ドキュンにでている人たち」という意味でDQNと2ちゃんねるを 中心に呼ぶようになった。 https://ja.wikipedia.org/wiki/DQN 42

Slide 43

Slide 43 text

DQN (Deep Q-Network)とは Deep Mind より発表された深層強化学習の手法 Atariのゲームで高得点が取れるようになった 43 Volodymyr Mnih and Koray Kavukcuoglu and David Silver and Alex Graves and Ioannis Antonoglou and Daan Wierstra and Martin Riedmiller,Playing Atari With Deep Reinforcement Learning, 2013 Volodymyr Mnih, Koray Kavukcuoglu, David Silver, Andrei A. Rusu, Joel Veness, Marc G. Bellemare, Alex Graves, Martin Riedmiller, Andreas K. Fidjeland, Georg Ostrovski, Stig Petersen, Charles Beattie, Amir Sadik, Ioannis, Antonoglou, Helen King, Dharshan Kumaran, Daan Wierstra, Shane Legg, Demis Hassabis, Human-level control through deep reinforcement learning, 2015

Slide 44

Slide 44 text

DQNの成果 from NIPS 44

Slide 45

Slide 45 text

DQNの成果 from Nature Atari 2600[1] のゲームで人間よりも高いスコアが取れるようになった [1] The Arcade Learning Environment: An Evaluation Platform for General Agents, 2013, Bellemare, Naddaf, Veness, Bowling 45

Slide 46

Slide 46 text

Atari 2600 での設定 環境: ゲーム エージェント: 自機 状態: ゲーム画像 行動: ゲームの操作 報酬: ゲームのスコア 46

Slide 47

Slide 47 text

今まで何が難しかった? 状態は84x84の白黒画像 テーブルでQ関数を表すのは無理 線形関数近似でも画像を扱うのは難しい 25684x84通りの状態 47

Slide 48

Slide 48 text

CNNによる画像の扱い CNNを用いたImageNetがILSVRC2012(画像認識コンテスト)で優勝 Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton, ImageNet Classification with Deep Convolutional Neural Networks, 2012 48

Slide 49

Slide 49 text

CNNによる畳み込み計算 画像に対して畳み込み計算を行うことで空間的な情報も含めて特 徴抽出することができる https://deepage.net/deep_learning/2016/11/07/convolutional_neural_network.html 49

Slide 50

Slide 50 text

DQNでどこがディープになったのか Q関数をCNNを使ったDNNで近似 ゲーム画像をそのまま学習に使えるようになった sにゲーム画像をそのまま使える! DEEP!! 50

Slide 51

Slide 51 text

ニューラルネットワークの構成 CNN FC FC 各 行 動 の Q 値 84x84の白黒ゲーム画像 CNN CNN 51

Slide 52

Slide 52 text

探索 行動選択はε-greedy法 100万ステップかけてεが線形に 100% →10% まで下がり、このまま一定 52

Slide 53

Slide 53 text

DQNの工夫 実はDQNはQ関数をディープにしただけではない ● Experience Replay ● Freezing the target network ● Clipping rewards ● Skipping frames 色々工夫してようやくスコアが上がった! 53

Slide 54

Slide 54 text

Experience Replay オンラインでそのまま学習すると DNNは現在の経験に対して過学習してしまう 昔経験したことをランダムに選んで学習に使う 繰り返し学習することで昔のことを忘れない! Reinforcement Learning for Robots Using Neural Network, 1993, Lin 経験1 経験2 経験3 経験4 Replay Memory 学習 54

Slide 55

Slide 55 text

Experience Replay の他の効果 ● TD誤差を伝搬させるのに時間がかかる バッチ処理で過去の経験を学習させることで加速! ● いい経験を一回しか使わないのは勿体無い 過去の経験を使いまわそう! ここを改良するとかなりの性能向上につながる! 55

Slide 56

Slide 56 text

Freezing the target network 誤差計算を行うときの目標のネットワークに古いものを使用 目標値が安定しないと収束できない 一定周期で現在のネットワークと同期する ここだけ 56

Slide 57

Slide 57 text

Clipping rewards ゲームによってスコアの大きさが違う 例 ● Pongだったら一回点を取ると1点もらえる ● Space Invadorsだったら倒したインベーダの場所に応じて10~30点 いろんなゲームに対応するために、 ● 負のスコアは-1 ● 正のスコアは+1 で統一する 57

Slide 58

Slide 58 text

Skipping frames 4フレームごとに前の4フレームを使って行動選択を行う 4フレーム後まで同じ行動を繰り返し選択する 計算コストが減るのでより多くの経験を積むことができる Atari 2600 の制限で描けるオブジェクトの数が決まっていて ビームが消えたりするので Space Invaders では3フレーム 58

Slide 59

Slide 59 text

DQNで遊んでみる お待たせしました!! 59

Slide 60

Slide 60 text

実行環境 Python3系 以下をpipでインストール ● chainer==2.0.0 ● chainerrl==0.2.0 ● gym[atari] ● opencv-python(OpenCV3は別の方法でもOK) 60

Slide 61

Slide 61 text

DQNで遊んでみよう 申し訳ありません 今学習しても全く成長しません... あらかじめ学習済のモデルを複数用意しました 61

Slide 62

Slide 62 text

まずは動かしてみよう 以下をcloneして https://github.com/takuseno/dqn-sokushukai 以下から任意のステップまで学習したモデルを落とす https://goo.gl/MN8676 breakout/30000000を上からダウンロードして実行する例 python play.py --gpu -1 --load 30000000 --env Breakout-v0 --render 62

Slide 63

Slide 63 text

学習させたゲーム 63 Breakout-v0 Pong-v0 SpaceInvaders-v0 MontezumaRevenge-v0

Slide 64

Slide 64 text

コード dqn.pyのベースになっているコードはPFNのchainerrl https://github.com/chainer/chainerrl ライブラリというよりは実装集な感じ(個人の感想) 64

Slide 65

Slide 65 text

chainerrl いろんな手法が実装されているのでとても参考になります (結構論文にハイパーパラメータがないことが多い) 今回のdqn.pyはここから説明していない箇所を削りました 65

Slide 66

Slide 66 text

見るべき実装 _compute_loss関数が の誤差計算を行なっている箇所 66

Slide 67

Slide 67 text

MontezumaRevenge やってみた人は気づいたと思いますが 全く学習ができません 67

Slide 68

Slide 68 text

報酬がスパースな環境への対策の例 個人的に感動した UC Berkeley から出てた新しい論文 報酬なしでマリオをプレイできるようにした https://www.youtube.com/watch?v=J3FHOyhUn3A Deepak Pathak, Pulkit Agrawal, Alexei A. Efros, Trevor Darrell, Curiosity-driven Exploration by Self-supervised Prediction, 2017 68

Slide 69

Slide 69 text

報酬がスパースな環境への対策の例 見たことない状態へ移動すると追加で報酬を与える 好奇心 69 Deepak Pathak, Pulkit Agrawal, Alexei A. Efros, Trevor Darrell, Curiosity-driven Exploration by Self-supervised Prediction, 2017

Slide 70

Slide 70 text

家で別のゲームを学習する 頑張って以下を実行してください CPUだとめちゃくちゃ時間かかります... python train.py --gpu -1 --env {environment} GPUある場合はgpuオプションなしで実行 以下でゲーム一覧を確認できます https://gym.openai.com/envs#atari 70

Slide 71

Slide 71 text

もっと強化学習やってみたい人へ 今日やった内容はDQNのためにかいつまんで説明しました 本格的に勉強してみたい人には以下の本がおすすめです Richard S. Sutton Andrew G.Barto 強化学習 71