1
シーエイトラボ株式会社
TensorFlow と Gymを使ってDoubleDQN
TensroFlow勉強会 第4回
2016/6/23C8Lab Copyright 2014 C8Lab Inc. All rights reserved
2 2016/6/23
C8Lab Copyright 2014 C8Lab Inc. All rights reserved
 自己紹介
新村拓也
- シーエイトラボ株式会社 代表取締役
- TensorFlow勉強会
- 機械学習のための数学塾
3
概要
 DQN
 Deep Q Network (ヤンキーじゃないよ)
 DeepLearning とQ Learningを組み合わせたもの
 AlphaGoにも使われていたらしいやつ
 DoubleDQN
 Double Deep Q Network(二人のヤンキーじゃないよ)
 DeepMindが2015年12月に発表
 同年2月にDQN出したばかりなのに。。。
 DQNより精度いいよ(後述)
 Gym
 OpenAIが提供しているオープンソース
 今年のどっかで出した
 ゲームや物理エンジン向けのシミュレーション環境
 まだβ版?
2016/6/23
C8Lab Copyright 2014 C8Lab Inc. All rights reserved
4
参考にしたサイト、コード
 ウェブサイト
 ご注文は機械学習ですか?http://musyoku.github.io/2016/03/16/deep-reinforcement-
learning-with-double-q-learning/
 ゼロからDeepまで学ぶ強化学習 http://qiita.com/icoxfog417/items/242439ecd1a477ece312
 DQNの生い立ち + Deep Q-NetworkをChainerで書いた http://qiita.com/Ugo-
Nama/items/08c6a5f6a571335972d5
 論文
 Hado van Hasselt, Arthur Guez, David Silver. Deep Reinforcement Learning with Double
Q-learning. arXiv:1509.06461. 2015 http://arxiv.org/abs/1509.06461
 ソースコード
 devsisters/DQN-tensorflo https://github.com/devsisters/DQN-tensorflow
2016/6/23
C8Lab Copyright 2014 C8Lab Inc. All rights reserved
とても参考になりました!ありがとうございます!
5
強化学習について簡単に
2016/6/23
C8Lab Copyright 2014 C8Lab Inc. All rights reserved
・右に進む
・左に進む
・餌が食べられる
・サメに食べられる
行動
報酬
新しい状態
環境
現状を考えて、一番将来的に報酬
が多くなる行動を選択する。
状態
6
簡単な例(迷路)
2016/6/23
C8Lab Copyright 2014 C8Lab Inc. All rights reserved
下の方がゴールに
近そうだけど・・・
▼報酬
・どれだけゴールに近いか
・ゴールしたらもっと沢山
▼報酬(マイナス)
・かかった時間
▼状態
・今どこにいるか
▼行動
・上下左右移動
Try & Errorを繰り返して、「この場所にいた時に」
「こっちに動いた方がいい」ということを学習
7
Q学習について簡単に
 ポリシー決定手法の一つ
 つか、Q学習以外はActorCriticしか知らん
 ある状態sにおける行動aが将来まで合計してもたらす価値Qを最大化
するような方策をとるというポリシー
2016/6/23
C8Lab Copyright 2014 C8Lab Inc. All rights reserved
行動を決定する関数
Target(教師)データ
Qは状態sの時に行動aを取った時に得られる報酬
を予測する関数
8
補足
2016/6/23
C8Lab Copyright 2014 C8Lab Inc. All rights reserved
状態sでaを行った報酬
行動したあとの状態s’で最適な行
動を取った時に将来的に得られる
報酬
状態sで最適な行動を取った時に将
来的に得られる報酬
行動価値評価を行うQが正しければこの式は限
りなく同じ値になる!
9
DQNについて簡単に
 行動価値を決めるQとかいっているが、具体的に何を使うのか?
 DQNでは、Qはニューラルネットワークそのもの
2016/6/23
C8Lab Copyright 2014 C8Lab Inc. All rights reserved
conv1 conv2 outfc1
▼出力
・この状況で取りうる行動の価値
例)
左・・・10点
右・・・5点
停止・・・5点
10
DQNについて簡単に
 ニューラルネットワーク自体は同じ構造のものが二つ存在している
2016/6/23
C8Lab Copyright 2014 C8Lab Inc. All rights reserved
実際に行動を行ってその評価価値
は何点だ!と予測するネットワーク
行動の結果の状況s’で取るべき行動a’
の価値を評価するネットワーク
11
DQNのデータセット
 とあるの状況(s)
 その時撮った行動(a)
 それによって得られた報酬(r)
 その行動を取ったことによって生じた新しい状況(s’)
2016/6/23
C8Lab Copyright 2014 C8Lab Inc. All rights reserved
状況s 行動a
Qθ側のNNで決定
右に行
く!
報酬r
・ブロック崩してた:+1
・死んでた。。。:−1
新しい状況s’
学習する前に最初にこれらの情報をひたすら収集
12
DQNの学習
1. Qθ側のネットワークで状況sの時に行動aを取った時の価値を算出
2. 教師信号(target)となる以下の式をr, s’ を与えてQπ側で計算
3. Qθとtargetの誤差を計算してQθを更新
4. ある程度ステップ数をこなしたらQθの重みでQπを更新
2016/6/23
C8Lab Copyright 2014 C8Lab Inc. All rights reserved
NNの順伝播みたいなもの
行動価値評価を行うQが正しければQθとtargetは限りなく同じ値になる!
13
DoubleDQNについて
 DQNの問題点
 行動価値を過大評価してしまうことによりパフォーマンスが落ちる
 なぜ過大評価してしまうのか?
2016/6/23
C8Lab Copyright 2014 C8Lab Inc. All rights reserved
このmaxのせい
 DQNでは次のステップ以降の行動を選択
のもその評価をするのもQπだけで行ってい
る。
 ちょっとしたことでネットワーク出力の1部が
いきなり大きくなった時に悪影響を及ぼす。
14
DoubleDQNについて
 DQNとDoubleDQNの違い
2016/6/23
C8Lab Copyright 2014 C8Lab Inc. All rights reserved
こうじゃ!
DQNのこれを・・・
評価自体はQπのまま
行動の決定をQθが行う!
 次以降のステップで取る行動評価が、Qπで値が最大になる行動とは限らない。
 次以降の行動評価をQπ、Qθ二つのNNで行う=>DoubleDQN
15
もう少し突っ込んで
 なぜ選択と評価をQπ、Qθでそれぞれ担当するとQ値を過大評価しなく
なるの?
2016/6/23
C8Lab Copyright 2014 C8Lab Inc. All rights reserved
 この下限値がDoubleDQNではゼロになる
DQNにおけるtarget側のQ値が、maxを持つと下限値を持ってしまう
16
DoubleDQNの実装
 DQNさえ作ってしまえばDoubleDQNへの変更は10行程度
2016/6/23
C8Lab Copyright 2014 C8Lab Inc. All rights reserved
before
after
行動価値評価はしない
次の行動をQθから取得
17
DoubleDQNの実装
2016/6/23
C8Lab Copyright 2014 C8Lab Inc. All rights reserved
取得した行動とQπを使って次以降の行動価値を計算
 DQNからDoubleDQNにするのは簡単
 だがDQNを作るのが疲れる
 ネットワーク二つあるし。。。
 シミュレーション環境どうするの。。。
 というかシミレーション環境作るのが一番大変!!!
 Unity? PyGame? Etc…
18
OpenAI Gym
 シミュレーション環境を簡単に呼び出し、状況、報酬などを簡単に取得
可能
2016/6/23
C8Lab Copyright 2014 C8Lab Inc. All rights reserved
19
今回作ったもの
 Gymにあるブロック崩しを行うAI
 TensorFlow 0.9で実装
 昨日の夜から回しています。。。。
 200万イテレーション程度(実際2000万くらいは必要)
 CPUマシンなので学習が全然すすまないww
 GPUマシンなら1日で2000万くらい回せるとのこと
2016/6/23
C8Lab Copyright 2014 C8Lab Inc. All rights reserved
20
とりま結果
2016/6/23
C8Lab Copyright 2014 C8Lab Inc. All rights reserved
報酬は少しずつ増えてきている、こ
れから伸びていきそう?(まだ二個く
らいしか壊せない。。。)
どんどんゲームで死ななくなっている
21
実演
2016/6/23
C8Lab Copyright 2014 C8Lab Inc. All rights reserved
22
まとめ
 TensorFlowとGymでDoubleDQN実装してみました
 DQN実装できればDoubleDQNは超簡単
 CPUマシンでDQNをやってはならない。。。。。
 TensorFlowで今後強化学習実装を楽にするような実装でるのに期
待!
 現状はパラメータを切り替えたり色々めんどい。。。
 学習もうすこし進めたらgithubにあげようかと
2016/6/23
C8Lab Copyright 2014 C8Lab Inc. All rights reserved
23 2016/6/23
C8Lab Copyright 2014 C8Lab Inc. All rights reserved
ご静聴ありがとうございました!
24
お問い合わせ
ご興味のある企業・団体・個人様は、以下までお問い合わせください。
シーエイトラボ株式会社
http://www.c8-lab.com
東京都港区赤坂 8-5-40 ペガサス青山
Tel 090-3320-2680
代表取締役社長/CEO 新村拓也
E-mail:tak@c8-lab.com
2016/6/23
C8Lab Copyright 2014 C8Lab Inc. All rights reserved
C8Lab株式会社は東京大学発のベンチャー企業です。
東京大学人工物工学研究センターの太田順教授と
C8Labの新村拓也氏が株式会社グローバルプレナーズと
共同研究した「SNSデータ分析によるオントロジーネット
ワーク構築」の技術がCOMPYに応用されています。
「ソーシャル情報から抽出したユーザ行動目的に基づく推
薦システム」「同行者コンテキスト依存の文書抽出および
トピック解析」「同行者依存のトピック発見モデル」など、
ユーザーの行動分析に関する研究で論文を多く発表して
います。

Tf勉強会(4)