SlideShare a Scribd company logo
Ver1.1 中井悦司
Twitter @enakai00
オープンクラウド・キャンパス
TensorFlowで学ぶDQN
Open Cloud Campus
2
TensorFlowで学ぶDQN
自己紹介
 中井悦司(なかいえつじ)
– Twitter @enakai00
 日々の仕事
– Cloud Solutions Architect at Google
 昔とった杵柄
– 素粒子論の研究(超弦理論とか)
– 予備校講師(物理担当)
– インフラエンジニア(Unix/Linux専門)
– Linuxディストリビューターのエバンジェリスト
好評発売中!
DQN (Deep Q-Network) とは?
Open Cloud Campus
4
TensorFlowで学ぶDQN
DQNの適用例
 ビデオゲームの画面イメージを入力データとして、「取得点数が高くなる操作方
法」を学習
– ゲームのルールは知らなくても、「どの画面で、どの操作をすれば、どのように点数が変
化するか」というデータを「あらゆる画面の状況」に対して取得すれば、原理的には学習
できるはず。
– 囲碁のルールを知らなくても、「どの盤面で、どこに石を打てば、どのように優劣が変化
するか」というデータを「あらゆる盤面」に対して取得すれば、原理的には最強の囲碁ア
ルゴリズムができるのと同じ原理。
https://www.youtube.com/watch?v=r3pb-ZDEKVghttps://www.youtube.com/watch?v=V1eYniJ0Rnk
Open Cloud Campus
5
TensorFlowで学ぶDQN
DQNの理論的枠組み
 「現在の状態 (State) s とその時の操作 (Action) a 」に対して、その直後に得られ
る「点数 (Reward) r と新しい状態 s' 」の4つ組データ (s, a, r, s') があらゆる (s, a)
に対して分かっているものと仮定します。
– 「どの画面で、どの操作をすれば、どのように点数が変化するか」というデータに相当す
るものです。実際には、すべての (s, a) についてのデータを得ることは不可能ですが、十
分たくさんのデータがあるものと考えておいてください。
– 数学的には、r と s' は、(s, a) の関数になっている点に注意してください。
 このようなデータがあれば、単純に考えると、現在の状態 s が与えられた時、次の
ルールで操作を決定すればよい気がします。
          
 ⇒ 「状態 s において、その直後に得られる点数 r が最大になる行動 a を選択する」
 しかしながら、これは必ずしもベストな結果にはなりません。
– たとえば、ブロック崩しの場合、急いでブロックを消して目先の点数を稼ぐよりも、少し
時間がかかっても、隅のブロックを狙った方が、トータルの点数は高くなります。
– 直後の点数ではなく、「長期的なトータルの点数」を最大化する行動 a を見つける方法が
必要なのです。
Open Cloud Campus
6
TensorFlowで学ぶDQN
魔法の「Q 関数」の存在を仮定する
 長期的なトータルの点数を次のように定義します。
–   と  は n ステップ目の状態と操作を表します。 は 0.9 程度の値とします。(トータ
ルの点数が発散しないための計算上の工夫として入れてあります。)
 ここで、どうやって計算するかはまったく謎ですが、次のような都合のよい魔法の
関数 Q(s, a) があったと仮定してみます。
Q(s, a) = 「状態 s において行動 a を選択したとして、さらにその後、常にベストな行動 
    をとり続けた場合のトータルの点数」
 魔法の関数 Q(s, a) が手に入れば、状態 s におけるベストな行動は、次のルールで
決まります。
 ⇒ 「状態 s において、その後にベストな行動をとり続けた場合のトータルの点数が最大に
   なる行動 a を選択する」
Open Cloud Campus
7
TensorFlowで学ぶDQN
数学における「帰納的関係」の魔力
 関数 Q(s, a) の計算方法はまったく謎ですが、少なくとも、次の関係式を満たすこ
とは言えます。
– ここでは、これを「Q関係式」と呼んでおきます。(証明は次ページを参照)
Open Cloud Campus
8
TensorFlowで学ぶDQN
数学における「帰納的関係」の魔力
 証明
– 状態  から出発して、ベストな行動をとり続けた場合に、状態と行動は次のように変化
したとします。
– この時、 Q(s, a) の定義より、次が成り立ちます。
– ここで、最初の状態が  ではなくて だったとすると、そこからベストな行動をとり続
けると、状態と行動は次のように変化します。
– この時、 Q(s, a) の定義より、次が成り立ちます。
– (1) を次のように変形して、(2) を代入します。
– 次の関係に注意すると、「Q関係式」が得られます。
―― (1)
―― (2)
Open Cloud Campus
9
TensorFlowで学ぶDQN
Q関係式を手がかりにQ関数を近似的に求める
 パラメーターを含む関数を適当に用意して、パラメーターをうまく調整した結果、
Q関係式を満たすようにできれば、それが求めるべきQ関数に他なりません。
– 厳密には、必要条件であって十分条件ではありませんが、(一定の条件の下に)十分性が
成り立つことも数学的に示されています。
 具体的には、次の手順でパラメーターを調整していきます。
– (1) 手元にある4つ組データ (s, a, r, s') のすべてを D とします。
– (2) Q関数の候補 Q(s, a | w) を用意します。パラメーター w には、適当な値をセットして
おきます。
– (3) D に含まれるすべて(もしくは、一部)のデータについて、Q関係式の両辺の差(の
2乗)の合計を「誤差関数 E(w)」として計算します。
– (4) 誤差関数の値が小さくなるようにパラメーター w の値を修正して、(3)に戻ります。
 (3)(4)を繰り返して、誤差関数 E(w) が十分小さくなれば、近似的にQ関数が求めら
れたことになります。
– ただし、最初に用意した「パラメーターを含む関数」が単純な関数だと、よい近似にはな
りません。できるだけ複雑な関数を用意するほうが得策です。
Open Cloud Campus
10
TensorFlowで学ぶDQN
できるだけ複雑な関数???
 そっそそそっそそっそそそそっそそそそそそれって・・・・
ディープニューラルネットワーク!
 前述の「パラメーターを含む関数」として、多段ニューラルネットワークを利用し
たものが、「Deep Q-Network」の正体です。
Open Cloud Campus
11
TensorFlowで学ぶDQN
え?ニューラルネットワークって何?
 ものすごく単純化して言うと、単一の関数を表すノードを組み合わせて、複雑な関
数を作り出すテクニックです。
Open Cloud Campus
12
TensorFlowで学ぶDQN
4つ組データの収集方法について
 4つ組データ (s, a, r, s') はどのようにして収集するのでしょうか?
– 基本的には、ランダムなアクションでゲームをプレイしまくって集めます。
– 無限の時間プレイすれば、理屈上は、すべての状態のデータが集まるはずです。
 とはいえ、ランダムなアクションでは(確率的になかなか)得られない状態もある
ので、次のような工夫をします。
– ある程度データが溜まったら、その時点のデータで近似的なQ関数を学習します。
– それ以降は、ランダムなアクションと現時点のQ関数を用いた(現時点でベストと判断さ
れる)アクションを適当な割合でまぜてプレイして、さらにデータを集めます。
– さらに集まったデータで、再度、近似的なQ関数を学習します。
– これを繰り返すと、より上達したQ関数を得ながら、上達したプレイでないと得られない
データを収集していくことが可能になります。
 ランダムなアクションを混ぜずに、その時点のQ関数でベストなプレイのデータだ
け集めたらだめなの?
– だめです。ダメなアクションを含めて、あらゆる状態のデータを集めることで、「短期的
にはダメだけど長期的には成功する」という判断が可能になります。
TensorFlowで学ぶDQN
DQN (Deep Q-Network) の実装例
Open Cloud Campus
14
TensorFlowで学ぶDQN
倒立振子(とうりつしんし)の問題
– Chainerで4層NNを用いた実装例が紹介されています。
– あえて0層〜2層の単純なNNを用いた場合に、結果がどのように変わるかをTensorFlowで
実験しています。
http://qiita.com/ashitani/items/bb393e24c20e83e54577
http://enakai00.hatenablog.com/entry/2016/05/18/125007
Open Cloud Campus
15
TensorFlowで学ぶDQN
倒立振子(とうりつしんし)の問題
詳しくはデモでご紹介!
中井悦司
Twitter @enakai00
オープンクラウド・キャンパス
TensorFlowで楽しく
機械学習を学びましょう!

More Related Content

What's hot

Convolutional Neural Network @ CV勉強会関東
Convolutional Neural Network @ CV勉強会関東Convolutional Neural Network @ CV勉強会関東
Convolutional Neural Network @ CV勉強会関東
Hokuto Kagaya
 

What's hot (20)

「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
 
これから始める人のためのディープラーニング基礎講座
これから始める人のためのディープラーニング基礎講座これから始める人のためのディープラーニング基礎講座
これから始める人のためのディープラーニング基礎講座
 
画像認識のための深層学習
画像認識のための深層学習画像認識のための深層学習
画像認識のための深層学習
 
深層学習 第4章 大規模深層学習の実現技術
深層学習 第4章 大規模深層学習の実現技術深層学習 第4章 大規模深層学習の実現技術
深層学習 第4章 大規模深層学習の実現技術
 
Deep Learningの技術と未来
Deep Learningの技術と未来Deep Learningの技術と未来
Deep Learningの技術と未来
 
Getting Started with Deep Learning using Scala
Getting Started with Deep Learning using ScalaGetting Started with Deep Learning using Scala
Getting Started with Deep Learning using Scala
 
MIRU2014 tutorial deeplearning
MIRU2014 tutorial deeplearningMIRU2014 tutorial deeplearning
MIRU2014 tutorial deeplearning
 
畳み込みニューラルネットワークが なぜうまくいくのか?についての手がかり
畳み込みニューラルネットワークが なぜうまくいくのか?についての手がかり畳み込みニューラルネットワークが なぜうまくいくのか?についての手がかり
畳み込みニューラルネットワークが なぜうまくいくのか?についての手がかり
 
Deep learningの発展と化学反応への応用 - 日本化学会第101春季大会(2021)
Deep learningの発展と化学反応への応用 - 日本化学会第101春季大会(2021)Deep learningの発展と化学反応への応用 - 日本化学会第101春季大会(2021)
Deep learningの発展と化学反応への応用 - 日本化学会第101春季大会(2021)
 
20150414seminar
20150414seminar20150414seminar
20150414seminar
 
20150930
2015093020150930
20150930
 
Convolutional Neural Network @ CV勉強会関東
Convolutional Neural Network @ CV勉強会関東Convolutional Neural Network @ CV勉強会関東
Convolutional Neural Network @ CV勉強会関東
 
Tutorial-DeepLearning-PCSJ-IMPS2016
Tutorial-DeepLearning-PCSJ-IMPS2016Tutorial-DeepLearning-PCSJ-IMPS2016
Tutorial-DeepLearning-PCSJ-IMPS2016
 
Dropout Distillation
Dropout DistillationDropout Distillation
Dropout Distillation
 
Meta-Learning with Memory Augmented Neural Network
Meta-Learning with Memory Augmented Neural NetworkMeta-Learning with Memory Augmented Neural Network
Meta-Learning with Memory Augmented Neural Network
 
深層学習入門
深層学習入門深層学習入門
深層学習入門
 
輪読資料 Xception: Deep Learning with Depthwise Separable Convolutions
輪読資料 Xception: Deep Learning with Depthwise Separable Convolutions輪読資料 Xception: Deep Learning with Depthwise Separable Convolutions
輪読資料 Xception: Deep Learning with Depthwise Separable Convolutions
 
鳥肌必至のニューラルネットワークによる近未来の画像認識技術を体験し、IoTの知られざるパワーを知る
鳥肌必至のニューラルネットワークによる近未来の画像認識技術を体験し、IoTの知られざるパワーを知る鳥肌必至のニューラルネットワークによる近未来の画像認識技術を体験し、IoTの知られざるパワーを知る
鳥肌必至のニューラルネットワークによる近未来の画像認識技術を体験し、IoTの知られざるパワーを知る
 
モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化
 
[DL輪読会]Xception: Deep Learning with Depthwise Separable Convolutions
[DL輪読会]Xception: Deep Learning with Depthwise Separable Convolutions[DL輪読会]Xception: Deep Learning with Depthwise Separable Convolutions
[DL輪読会]Xception: Deep Learning with Depthwise Separable Convolutions
 

Viewers also liked

2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調
2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調
2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調
智啓 出川
 
カップルが一緒にお風呂に入る割合をベイズ推定してみた
カップルが一緒にお風呂に入る割合をベイズ推定してみたカップルが一緒にお風呂に入る割合をベイズ推定してみた
カップルが一緒にお風呂に入る割合をベイズ推定してみた
hoxo_m
 
統計勉強会 LT ベイジアンって?
統計勉強会 LT ベイジアンって?統計勉強会 LT ベイジアンって?
統計勉強会 LT ベイジアンって?
Yuto Suzuki
 
ベイズ基本0425
ベイズ基本0425ベイズ基本0425
ベイズ基本0425
asato kuno
 
ベイズ統計入門
ベイズ統計入門ベイズ統計入門
ベイズ統計入門
Miyoshi Yuya
 

Viewers also liked (20)

Tensor flow唐揚サーバーロボット rev1
Tensor flow唐揚サーバーロボット rev1Tensor flow唐揚サーバーロボット rev1
Tensor flow唐揚サーバーロボット rev1
 
2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調
2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調
2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調
 
EthernetやCPUなどの話
EthernetやCPUなどの話EthernetやCPUなどの話
EthernetやCPUなどの話
 
経験過程
経験過程経験過程
経験過程
 
カップルが一緒にお風呂に入る割合をベイズ推定してみた
カップルが一緒にお風呂に入る割合をベイズ推定してみたカップルが一緒にお風呂に入る割合をベイズ推定してみた
カップルが一緒にお風呂に入る割合をベイズ推定してみた
 
統計勉強会 LT ベイジアンって?
統計勉強会 LT ベイジアンって?統計勉強会 LT ベイジアンって?
統計勉強会 LT ベイジアンって?
 
仕事の流儀 Vol1 基本編_ver1.1_外部公開ver
仕事の流儀 Vol1 基本編_ver1.1_外部公開ver仕事の流儀 Vol1 基本編_ver1.1_外部公開ver
仕事の流儀 Vol1 基本編_ver1.1_外部公開ver
 
ベイズ基本0425
ベイズ基本0425ベイズ基本0425
ベイズ基本0425
 
確率論基礎
確率論基礎確率論基礎
確率論基礎
 
Windows10の展開手法
Windows10の展開手法Windows10の展開手法
Windows10の展開手法
 
MLaPP 2章 「確率」(前編)
MLaPP 2章 「確率」(前編)MLaPP 2章 「確率」(前編)
MLaPP 2章 「確率」(前編)
 
「数学の世界」発表資料
「数学の世界」発表資料「数学の世界」発表資料
「数学の世界」発表資料
 
便利な数を100億個の乱数から算出
便利な数を100億個の乱数から算出便利な数を100億個の乱数から算出
便利な数を100億個の乱数から算出
 
AtCoder Regular Contest 016 解説
AtCoder Regular Contest 016 解説AtCoder Regular Contest 016 解説
AtCoder Regular Contest 016 解説
 
H231126 統計および確率を利用した予測と判断rev1
H231126 統計および確率を利用した予測と判断rev1H231126 統計および確率を利用した予測と判断rev1
H231126 統計および確率を利用した予測と判断rev1
 
Cpu cache arch
Cpu cache archCpu cache arch
Cpu cache arch
 
Cpu pipeline basics
Cpu pipeline basicsCpu pipeline basics
Cpu pipeline basics
 
ベイズ統計入門
ベイズ統計入門ベイズ統計入門
ベイズ統計入門
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
 
10年効く分散ファイルシステム技術 GlusterFS & Red Hat Storage
10年効く分散ファイルシステム技術 GlusterFS & Red Hat Storage10年効く分散ファイルシステム技術 GlusterFS & Red Hat Storage
10年効く分散ファイルシステム技術 GlusterFS & Red Hat Storage
 

Similar to TensorFlowで学ぶDQN

Eucalyptus infra technology
Eucalyptus infra technologyEucalyptus infra technology
Eucalyptus infra technology
Etsuji Nakai
 
これから始める人の為のディープラーニング基礎講座
これから始める人の為のディープラーニング基礎講座これから始める人の為のディープラーニング基礎講座
これから始める人の為のディープラーニング基礎講座
NVIDIA Japan
 

Similar to TensorFlowで学ぶDQN (18)

DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜
 
Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
Dockerクイックツアー
 
Eucalyptus infra technology
Eucalyptus infra technologyEucalyptus infra technology
Eucalyptus infra technology
 
DAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也hare
DAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也hareDAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也hare
DAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也hare
 
Deep Learningと画像認識   ~歴史・理論・実践~
Deep Learningと画像認識 ~歴史・理論・実践~Deep Learningと画像認識 ~歴史・理論・実践~
Deep Learningと画像認識   ~歴史・理論・実践~
 
ae-10. 中間まとめ(ディープラーニング)
ae-10. 中間まとめ(ディープラーニング)ae-10. 中間まとめ(ディープラーニング)
ae-10. 中間まとめ(ディープラーニング)
 
ディープラーニングイメージで構築する快適・高速な機械学習環境
ディープラーニングイメージで構築する快適・高速な機械学習環境ディープラーニングイメージで構築する快適・高速な機械学習環境
ディープラーニングイメージで構築する快適・高速な機械学習環境
 
ChainerでDeep Learningを試す為に必要なこと
ChainerでDeep Learningを試す為に必要なことChainerでDeep Learningを試す為に必要なこと
ChainerでDeep Learningを試す為に必要なこと
 
Deep learningの概要とドメインモデルの変遷
Deep learningの概要とドメインモデルの変遷Deep learningの概要とドメインモデルの変遷
Deep learningの概要とドメインモデルの変遷
 
完全分散エッジ処理で実現するNeutron仮想ネットワーク
完全分散エッジ処理で実現するNeutron仮想ネットワーク完全分散エッジ処理で実現するNeutron仮想ネットワーク
完全分散エッジ処理で実現するNeutron仮想ネットワーク
 
ChainerでDeep Learningを試すために必要なこと
ChainerでDeep Learningを試すために必要なことChainerでDeep Learningを試すために必要なこと
ChainerでDeep Learningを試すために必要なこと
 
これから始める人の為のディープラーニング基礎講座
これから始める人の為のディープラーニング基礎講座これから始める人の為のディープラーニング基礎講座
これから始める人の為のディープラーニング基礎講座
 
AIとScrumとスケール
AIとScrumとスケールAIとScrumとスケール
AIとScrumとスケール
 
NVIDIA GPU Cloud の紹介
NVIDIA GPU Cloud の紹介NVIDIA GPU Cloud の紹介
NVIDIA GPU Cloud の紹介
 
Deep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlowDeep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlow
 
JAWS-UG Nagoya 20160729
JAWS-UG Nagoya 20160729JAWS-UG Nagoya 20160729
JAWS-UG Nagoya 20160729
 
20180830 implement dqn_platinum_data_meetup_vol1
20180830 implement dqn_platinum_data_meetup_vol120180830 implement dqn_platinum_data_meetup_vol1
20180830 implement dqn_platinum_data_meetup_vol1
 
SeRanet
SeRanetSeRanet
SeRanet
 

More from Etsuji Nakai

TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎
Etsuji Nakai
 

More from Etsuji Nakai (20)

PRML11.2-11.3
PRML11.2-11.3PRML11.2-11.3
PRML11.2-11.3
 
「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える
 
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
 
Introducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlowIntroducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlow
 
Googleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービスGoogleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービス
 
Spannerに関する技術メモ
Spannerに関する技術メモSpannerに関する技術メモ
Spannerに関する技術メモ
 
Googleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsGoogleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOps
 
A Brief History of My English Learning
A Brief History of My English LearningA Brief History of My English Learning
A Brief History of My English Learning
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎
 
TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門
 
Using Kubernetes on Google Container Engine
Using Kubernetes on Google Container EngineUsing Kubernetes on Google Container Engine
Using Kubernetes on Google Container Engine
 
Lecture note on PRML 8.2
Lecture note on PRML 8.2Lecture note on PRML 8.2
Lecture note on PRML 8.2
 
Machine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application DevelopersMachine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application Developers
 
Your first TensorFlow programming with Jupyter
Your first TensorFlow programming with JupyterYour first TensorFlow programming with Jupyter
Your first TensorFlow programming with Jupyter
 
Deep Q-Network for beginners
Deep Q-Network for beginnersDeep Q-Network for beginners
Deep Q-Network for beginners
 
DevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきかDevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきか
 
PRML7.2
PRML7.2PRML7.2
PRML7.2
 
Exploring the Philosophy behind Docker/Kubernetes/OpenShift
Exploring the Philosophy behind Docker/Kubernetes/OpenShiftExploring the Philosophy behind Docker/Kubernetes/OpenShift
Exploring the Philosophy behind Docker/Kubernetes/OpenShift
 
Docker活用パターンの整理 ― どう組み合わせるのが正解?!
Docker活用パターンの整理 ― どう組み合わせるのが正解?!Docker活用パターンの整理 ― どう組み合わせるのが正解?!
Docker活用パターンの整理 ― どう組み合わせるのが正解?!
 
Open Shift v3 主要機能と内部構造のご紹介
Open Shift v3 主要機能と内部構造のご紹介Open Shift v3 主要機能と内部構造のご紹介
Open Shift v3 主要機能と内部構造のご紹介
 

Recently uploaded

2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
ssuserbefd24
 

Recently uploaded (12)

論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
 
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
 
Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )
 
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
 
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
 
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
 
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
 
20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf
 
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
 

TensorFlowで学ぶDQN

  • 2. Open Cloud Campus 2 TensorFlowで学ぶDQN 自己紹介  中井悦司(なかいえつじ) – Twitter @enakai00  日々の仕事 – Cloud Solutions Architect at Google  昔とった杵柄 – 素粒子論の研究(超弦理論とか) – 予備校講師(物理担当) – インフラエンジニア(Unix/Linux専門) – Linuxディストリビューターのエバンジェリスト 好評発売中!
  • 4. Open Cloud Campus 4 TensorFlowで学ぶDQN DQNの適用例  ビデオゲームの画面イメージを入力データとして、「取得点数が高くなる操作方 法」を学習 – ゲームのルールは知らなくても、「どの画面で、どの操作をすれば、どのように点数が変 化するか」というデータを「あらゆる画面の状況」に対して取得すれば、原理的には学習 できるはず。 – 囲碁のルールを知らなくても、「どの盤面で、どこに石を打てば、どのように優劣が変化 するか」というデータを「あらゆる盤面」に対して取得すれば、原理的には最強の囲碁ア ルゴリズムができるのと同じ原理。 https://www.youtube.com/watch?v=r3pb-ZDEKVghttps://www.youtube.com/watch?v=V1eYniJ0Rnk
  • 5. Open Cloud Campus 5 TensorFlowで学ぶDQN DQNの理論的枠組み  「現在の状態 (State) s とその時の操作 (Action) a 」に対して、その直後に得られ る「点数 (Reward) r と新しい状態 s' 」の4つ組データ (s, a, r, s') があらゆる (s, a) に対して分かっているものと仮定します。 – 「どの画面で、どの操作をすれば、どのように点数が変化するか」というデータに相当す るものです。実際には、すべての (s, a) についてのデータを得ることは不可能ですが、十 分たくさんのデータがあるものと考えておいてください。 – 数学的には、r と s' は、(s, a) の関数になっている点に注意してください。  このようなデータがあれば、単純に考えると、現在の状態 s が与えられた時、次の ルールで操作を決定すればよい気がします。             ⇒ 「状態 s において、その直後に得られる点数 r が最大になる行動 a を選択する」  しかしながら、これは必ずしもベストな結果にはなりません。 – たとえば、ブロック崩しの場合、急いでブロックを消して目先の点数を稼ぐよりも、少し 時間がかかっても、隅のブロックを狙った方が、トータルの点数は高くなります。 – 直後の点数ではなく、「長期的なトータルの点数」を最大化する行動 a を見つける方法が 必要なのです。
  • 6. Open Cloud Campus 6 TensorFlowで学ぶDQN 魔法の「Q 関数」の存在を仮定する  長期的なトータルの点数を次のように定義します。 –   と  は n ステップ目の状態と操作を表します。 は 0.9 程度の値とします。(トータ ルの点数が発散しないための計算上の工夫として入れてあります。)  ここで、どうやって計算するかはまったく謎ですが、次のような都合のよい魔法の 関数 Q(s, a) があったと仮定してみます。 Q(s, a) = 「状態 s において行動 a を選択したとして、さらにその後、常にベストな行動      をとり続けた場合のトータルの点数」  魔法の関数 Q(s, a) が手に入れば、状態 s におけるベストな行動は、次のルールで 決まります。  ⇒ 「状態 s において、その後にベストな行動をとり続けた場合のトータルの点数が最大に    なる行動 a を選択する」
  • 7. Open Cloud Campus 7 TensorFlowで学ぶDQN 数学における「帰納的関係」の魔力  関数 Q(s, a) の計算方法はまったく謎ですが、少なくとも、次の関係式を満たすこ とは言えます。 – ここでは、これを「Q関係式」と呼んでおきます。(証明は次ページを参照)
  • 8. Open Cloud Campus 8 TensorFlowで学ぶDQN 数学における「帰納的関係」の魔力  証明 – 状態  から出発して、ベストな行動をとり続けた場合に、状態と行動は次のように変化 したとします。 – この時、 Q(s, a) の定義より、次が成り立ちます。 – ここで、最初の状態が  ではなくて だったとすると、そこからベストな行動をとり続 けると、状態と行動は次のように変化します。 – この時、 Q(s, a) の定義より、次が成り立ちます。 – (1) を次のように変形して、(2) を代入します。 – 次の関係に注意すると、「Q関係式」が得られます。 ―― (1) ―― (2)
  • 9. Open Cloud Campus 9 TensorFlowで学ぶDQN Q関係式を手がかりにQ関数を近似的に求める  パラメーターを含む関数を適当に用意して、パラメーターをうまく調整した結果、 Q関係式を満たすようにできれば、それが求めるべきQ関数に他なりません。 – 厳密には、必要条件であって十分条件ではありませんが、(一定の条件の下に)十分性が 成り立つことも数学的に示されています。  具体的には、次の手順でパラメーターを調整していきます。 – (1) 手元にある4つ組データ (s, a, r, s') のすべてを D とします。 – (2) Q関数の候補 Q(s, a | w) を用意します。パラメーター w には、適当な値をセットして おきます。 – (3) D に含まれるすべて(もしくは、一部)のデータについて、Q関係式の両辺の差(の 2乗)の合計を「誤差関数 E(w)」として計算します。 – (4) 誤差関数の値が小さくなるようにパラメーター w の値を修正して、(3)に戻ります。  (3)(4)を繰り返して、誤差関数 E(w) が十分小さくなれば、近似的にQ関数が求めら れたことになります。 – ただし、最初に用意した「パラメーターを含む関数」が単純な関数だと、よい近似にはな りません。できるだけ複雑な関数を用意するほうが得策です。
  • 10. Open Cloud Campus 10 TensorFlowで学ぶDQN できるだけ複雑な関数???  そっそそそっそそっそそそそっそそそそそそれって・・・・ ディープニューラルネットワーク!  前述の「パラメーターを含む関数」として、多段ニューラルネットワークを利用し たものが、「Deep Q-Network」の正体です。
  • 11. Open Cloud Campus 11 TensorFlowで学ぶDQN え?ニューラルネットワークって何?  ものすごく単純化して言うと、単一の関数を表すノードを組み合わせて、複雑な関 数を作り出すテクニックです。
  • 12. Open Cloud Campus 12 TensorFlowで学ぶDQN 4つ組データの収集方法について  4つ組データ (s, a, r, s') はどのようにして収集するのでしょうか? – 基本的には、ランダムなアクションでゲームをプレイしまくって集めます。 – 無限の時間プレイすれば、理屈上は、すべての状態のデータが集まるはずです。  とはいえ、ランダムなアクションでは(確率的になかなか)得られない状態もある ので、次のような工夫をします。 – ある程度データが溜まったら、その時点のデータで近似的なQ関数を学習します。 – それ以降は、ランダムなアクションと現時点のQ関数を用いた(現時点でベストと判断さ れる)アクションを適当な割合でまぜてプレイして、さらにデータを集めます。 – さらに集まったデータで、再度、近似的なQ関数を学習します。 – これを繰り返すと、より上達したQ関数を得ながら、上達したプレイでないと得られない データを収集していくことが可能になります。  ランダムなアクションを混ぜずに、その時点のQ関数でベストなプレイのデータだ け集めたらだめなの? – だめです。ダメなアクションを含めて、あらゆる状態のデータを集めることで、「短期的 にはダメだけど長期的には成功する」という判断が可能になります。
  • 14. Open Cloud Campus 14 TensorFlowで学ぶDQN 倒立振子(とうりつしんし)の問題 – Chainerで4層NNを用いた実装例が紹介されています。 – あえて0層〜2層の単純なNNを用いた場合に、結果がどのように変わるかをTensorFlowで 実験しています。 http://qiita.com/ashitani/items/bb393e24c20e83e54577 http://enakai00.hatenablog.com/entry/2016/05/18/125007