SlideShare una empresa de Scribd logo
1 de 16
Descargar para leer sin conexión
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で楽しく
機械学習を学びましょう!

Más contenido relacionado

La actualidad más candente

「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化marsee101
 
これから始める人のためのディープラーニング基礎講座
これから始める人のためのディープラーニング基礎講座これから始める人のためのディープラーニング基礎講座
これから始める人のためのディープラーニング基礎講座NVIDIA Japan
 
画像認識のための深層学習
画像認識のための深層学習画像認識のための深層学習
画像認識のための深層学習Saya Katafuchi
 
深層学習 第4章 大規模深層学習の実現技術
深層学習 第4章 大規模深層学習の実現技術深層学習 第4章 大規模深層学習の実現技術
深層学習 第4章 大規模深層学習の実現技術孝昌 田中
 
Deep Learningの技術と未来
Deep Learningの技術と未来Deep Learningの技術と未来
Deep Learningの技術と未来Seiya Tokui
 
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 ScalaTaisuke Oe
 
畳み込みニューラルネットワークが なぜうまくいくのか?についての手がかり
畳み込みニューラルネットワークが なぜうまくいくのか?についての手がかり畳み込みニューラルネットワークが なぜうまくいくのか?についての手がかり
畳み込みニューラルネットワークが なぜうまくいくのか?についての手がかりtm_2648
 
Deep learningの発展と化学反応への応用 - 日本化学会第101春季大会(2021)
Deep learningの発展と化学反応への応用 - 日本化学会第101春季大会(2021)Deep learningの発展と化学反応への応用 - 日本化学会第101春季大会(2021)
Deep learningの発展と化学反応への応用 - 日本化学会第101春季大会(2021)Preferred Networks
 
Convolutional Neural Network @ CV勉強会関東
Convolutional Neural Network @ CV勉強会関東Convolutional Neural Network @ CV勉強会関東
Convolutional Neural Network @ CV勉強会関東Hokuto Kagaya
 
Tutorial-DeepLearning-PCSJ-IMPS2016
Tutorial-DeepLearning-PCSJ-IMPS2016Tutorial-DeepLearning-PCSJ-IMPS2016
Tutorial-DeepLearning-PCSJ-IMPS2016Takayoshi Yamashita
 
Dropout Distillation
Dropout DistillationDropout Distillation
Dropout DistillationShotaro Sano
 
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 NetworkYusuke Watanabe
 
輪読資料 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 ConvolutionsKotaro Asami
 
鳥肌必至のニューラルネットワークによる近未来の画像認識技術を体験し、IoTの知られざるパワーを知る
鳥肌必至のニューラルネットワークによる近未来の画像認識技術を体験し、IoTの知られざるパワーを知る鳥肌必至のニューラルネットワークによる近未来の画像認識技術を体験し、IoTの知られざるパワーを知る
鳥肌必至のニューラルネットワークによる近未来の画像認識技術を体験し、IoTの知られざるパワーを知るKazuki Nakajima
 
モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化Yusuke Uchida
 
[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 ConvolutionsDeep Learning JP
 

La actualidad más candente (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
 

Destacado

Tensor flow唐揚サーバーロボット rev1
Tensor flow唐揚サーバーロボット rev1Tensor flow唐揚サーバーロボット rev1
Tensor flow唐揚サーバーロボット rev1Yuki Nakagawa
 
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などの話Takanori Sejima
 
経験過程
経験過程経験過程
経験過程hoxo_m
 
カップルが一緒にお風呂に入る割合をベイズ推定してみた
カップルが一緒にお風呂に入る割合をベイズ推定してみたカップルが一緒にお風呂に入る割合をベイズ推定してみた
カップルが一緒にお風呂に入る割合をベイズ推定してみたhoxo_m
 
統計勉強会 LT ベイジアンって?
統計勉強会 LT ベイジアンって?統計勉強会 LT ベイジアンって?
統計勉強会 LT ベイジアンって?Yuto Suzuki
 
仕事の流儀 Vol1 基本編_ver1.1_外部公開ver
仕事の流儀 Vol1 基本編_ver1.1_外部公開ver仕事の流儀 Vol1 基本編_ver1.1_外部公開ver
仕事の流儀 Vol1 基本編_ver1.1_外部公開verHirotaka Nishimiya
 
ベイズ基本0425
ベイズ基本0425ベイズ基本0425
ベイズ基本0425asato kuno
 
確率論基礎
確率論基礎確率論基礎
確率論基礎hoxo_m
 
Windows10の展開手法
Windows10の展開手法Windows10の展開手法
Windows10の展開手法NAOKI ABE
 
MLaPP 2章 「確率」(前編)
MLaPP 2章 「確率」(前編)MLaPP 2章 「確率」(前編)
MLaPP 2章 「確率」(前編)Shinichi Tamura
 
「数学の世界」発表資料
「数学の世界」発表資料「数学の世界」発表資料
「数学の世界」発表資料spdbear
 
便利な数を100億個の乱数から算出
便利な数を100億個の乱数から算出便利な数を100億個の乱数から算出
便利な数を100億個の乱数から算出Toshiyuki Shimono
 
AtCoder Regular Contest 016 解説
AtCoder Regular Contest 016 解説AtCoder Regular Contest 016 解説
AtCoder Regular Contest 016 解説AtCoder Inc.
 
H231126 統計および確率を利用した予測と判断rev1
H231126 統計および確率を利用した予測と判断rev1H231126 統計および確率を利用した予測と判断rev1
H231126 統計および確率を利用した予測と判断rev1Kenichi Takara
 
ベイズ統計入門
ベイズ統計入門ベイズ統計入門
ベイズ統計入門Miyoshi Yuya
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門Hirotaka Kawata
 
10年効く分散ファイルシステム技術 GlusterFS & Red Hat Storage
10年効く分散ファイルシステム技術 GlusterFS & Red Hat Storage10年効く分散ファイルシステム技術 GlusterFS & Red Hat Storage
10年効く分散ファイルシステム技術 GlusterFS & Red Hat StorageEtsuji Nakai
 

Destacado (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 a TensorFlowで学ぶDQN

DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜Jun Okumura
 
Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
DockerクイックツアーEtsuji Nakai
 
Eucalyptus infra technology
Eucalyptus infra technologyEucalyptus infra technology
Eucalyptus infra technologyEtsuji Nakai
 
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技術」 金子紘也harePreferred Networks
 
Deep Learningと画像認識   ~歴史・理論・実践~
Deep Learningと画像認識 ~歴史・理論・実践~Deep Learningと画像認識 ~歴史・理論・実践~
Deep Learningと画像認識   ~歴史・理論・実践~nlab_utokyo
 
ae-10. 中間まとめ(ディープラーニング)
ae-10. 中間まとめ(ディープラーニング)ae-10. 中間まとめ(ディープラーニング)
ae-10. 中間まとめ(ディープラーニング)kunihikokaneko1
 
ディープラーニングイメージで構築する快適・高速な機械学習環境
ディープラーニングイメージで構築する快適・高速な機械学習環境ディープラーニングイメージで構築する快適・高速な機械学習環境
ディープラーニングイメージで構築する快適・高速な機械学習環境Yaboo Oyabu
 
ChainerでDeep Learningを試す為に必要なこと
ChainerでDeep Learningを試す為に必要なことChainerでDeep Learningを試す為に必要なこと
ChainerでDeep Learningを試す為に必要なことJiro Nishitoba
 
Deep learningの概要とドメインモデルの変遷
Deep learningの概要とドメインモデルの変遷Deep learningの概要とドメインモデルの変遷
Deep learningの概要とドメインモデルの変遷Taiga Nomi
 
完全分散エッジ処理で実現するNeutron仮想ネットワーク
完全分散エッジ処理で実現するNeutron仮想ネットワーク完全分散エッジ処理で実現するNeutron仮想ネットワーク
完全分散エッジ処理で実現するNeutron仮想ネットワークEtsuji Nakai
 
ChainerでDeep Learningを試すために必要なこと
ChainerでDeep Learningを試すために必要なことChainerでDeep Learningを試すために必要なこと
ChainerでDeep Learningを試すために必要なことRetrieva inc.
 
これから始める人の為のディープラーニング基礎講座
これから始める人の為のディープラーニング基礎講座これから始める人の為のディープラーニング基礎講座
これから始める人の為のディープラーニング基礎講座NVIDIA Japan
 
AIとScrumとスケール
AIとScrumとスケールAIとScrumとスケール
AIとScrumとスケールKenji Morita
 
NVIDIA GPU Cloud の紹介
NVIDIA GPU Cloud の紹介NVIDIA GPU Cloud の紹介
NVIDIA GPU Cloud の紹介NVIDIA Japan
 
Deep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlowDeep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlowTadaichiro Nakano
 
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_vol1Keisuke Nakata
 

Similar a 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
 

Más de Etsuji Nakai

「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考えるEtsuji Nakai
 
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実Etsuji Nakai
 
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 TensorFlowEtsuji Nakai
 
Googleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービスGoogleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービスEtsuji Nakai
 
Spannerに関する技術メモ
Spannerに関する技術メモSpannerに関する技術メモ
Spannerに関する技術メモEtsuji Nakai
 
Googleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsGoogleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsEtsuji Nakai
 
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 LearningEtsuji Nakai
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎Etsuji Nakai
 
TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門Etsuji Nakai
 
Using Kubernetes on Google Container Engine
Using Kubernetes on Google Container EngineUsing Kubernetes on Google Container Engine
Using Kubernetes on Google Container EngineEtsuji Nakai
 
Lecture note on PRML 8.2
Lecture note on PRML 8.2Lecture note on PRML 8.2
Lecture note on PRML 8.2Etsuji Nakai
 
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 DevelopersEtsuji Nakai
 
Your first TensorFlow programming with Jupyter
Your first TensorFlow programming with JupyterYour first TensorFlow programming with Jupyter
Your first TensorFlow programming with JupyterEtsuji Nakai
 
Deep Q-Network for beginners
Deep Q-Network for beginnersDeep Q-Network for beginners
Deep Q-Network for beginnersEtsuji Nakai
 
DevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきかDevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきかEtsuji Nakai
 
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/OpenShiftEtsuji Nakai
 
Docker活用パターンの整理 ― どう組み合わせるのが正解?!
Docker活用パターンの整理 ― どう組み合わせるのが正解?!Docker活用パターンの整理 ― どう組み合わせるのが正解?!
Docker活用パターンの整理 ― どう組み合わせるのが正解?!Etsuji Nakai
 
Open Shift v3 主要機能と内部構造のご紹介
Open Shift v3 主要機能と内部構造のご紹介Open Shift v3 主要機能と内部構造のご紹介
Open Shift v3 主要機能と内部構造のご紹介Etsuji Nakai
 

Más de 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 主要機能と内部構造のご紹介
 

Último

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 

Último (10)

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 

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