O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

TensorFlowで学ぶDQN

8.813 visualizações

Publicada em

JTF2016で発表予定の資料です。
http://2016.techfesta.jp/

Publicada em: Tecnologia
  • Seja o primeiro a comentar

TensorFlowで学ぶDQN

  1. 1. Ver1.1 中井悦司 Twitter @enakai00 オープンクラウド・キャンパス TensorFlowで学ぶDQN
  2. 2. Open Cloud Campus 2 TensorFlowで学ぶDQN 自己紹介  中井悦司(なかいえつじ) – Twitter @enakai00  日々の仕事 – Cloud Solutions Architect at Google  昔とった杵柄 – 素粒子論の研究(超弦理論とか) – 予備校講師(物理担当) – インフラエンジニア(Unix/Linux専門) – Linuxディストリビューターのエバンジェリスト 好評発売中!
  3. 3. DQN (Deep Q-Network) とは?
  4. 4. Open Cloud Campus 4 TensorFlowで学ぶDQN DQNの適用例  ビデオゲームの画面イメージを入力データとして、「取得点数が高くなる操作方 法」を学習 – ゲームのルールは知らなくても、「どの画面で、どの操作をすれば、どのように点数が変 化するか」というデータを「あらゆる画面の状況」に対して取得すれば、原理的には学習 できるはず。 – 囲碁のルールを知らなくても、「どの盤面で、どこに石を打てば、どのように優劣が変化 するか」というデータを「あらゆる盤面」に対して取得すれば、原理的には最強の囲碁ア ルゴリズムができるのと同じ原理。 https://www.youtube.com/watch?v=r3pb-ZDEKVghttps://www.youtube.com/watch?v=V1eYniJ0Rnk
  5. 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. 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. 7. Open Cloud Campus 7 TensorFlowで学ぶDQN 数学における「帰納的関係」の魔力  関数 Q(s, a) の計算方法はまったく謎ですが、少なくとも、次の関係式を満たすこ とは言えます。 – ここでは、これを「Q関係式」と呼んでおきます。(証明は次ページを参照)
  8. 8. Open Cloud Campus 8 TensorFlowで学ぶDQN 数学における「帰納的関係」の魔力  証明 – 状態  から出発して、ベストな行動をとり続けた場合に、状態と行動は次のように変化 したとします。 – この時、 Q(s, a) の定義より、次が成り立ちます。 – ここで、最初の状態が  ではなくて だったとすると、そこからベストな行動をとり続 けると、状態と行動は次のように変化します。 – この時、 Q(s, a) の定義より、次が成り立ちます。 – (1) を次のように変形して、(2) を代入します。 – 次の関係に注意すると、「Q関係式」が得られます。 ―― (1) ―― (2)
  9. 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. 10. Open Cloud Campus 10 TensorFlowで学ぶDQN できるだけ複雑な関数???  そっそそそっそそっそそそそっそそそそそそれって・・・・ ディープニューラルネットワーク!  前述の「パラメーターを含む関数」として、多段ニューラルネットワークを利用し たものが、「Deep Q-Network」の正体です。
  11. 11. Open Cloud Campus 11 TensorFlowで学ぶDQN え?ニューラルネットワークって何?  ものすごく単純化して言うと、単一の関数を表すノードを組み合わせて、複雑な関 数を作り出すテクニックです。
  12. 12. Open Cloud Campus 12 TensorFlowで学ぶDQN 4つ組データの収集方法について  4つ組データ (s, a, r, s') はどのようにして収集するのでしょうか? – 基本的には、ランダムなアクションでゲームをプレイしまくって集めます。 – 無限の時間プレイすれば、理屈上は、すべての状態のデータが集まるはずです。  とはいえ、ランダムなアクションでは(確率的になかなか)得られない状態もある ので、次のような工夫をします。 – ある程度データが溜まったら、その時点のデータで近似的なQ関数を学習します。 – それ以降は、ランダムなアクションと現時点のQ関数を用いた(現時点でベストと判断さ れる)アクションを適当な割合でまぜてプレイして、さらにデータを集めます。 – さらに集まったデータで、再度、近似的なQ関数を学習します。 – これを繰り返すと、より上達したQ関数を得ながら、上達したプレイでないと得られない データを収集していくことが可能になります。  ランダムなアクションを混ぜずに、その時点のQ関数でベストなプレイのデータだ け集めたらだめなの? – だめです。ダメなアクションを含めて、あらゆる状態のデータを集めることで、「短期的 にはダメだけど長期的には成功する」という判断が可能になります。
  13. 13. TensorFlowで学ぶDQN DQN (Deep Q-Network) の実装例
  14. 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
  15. 15. Open Cloud Campus 15 TensorFlowで学ぶDQN 倒立振子(とうりつしんし)の問題 詳しくはデモでご紹介!
  16. 16. 中井悦司 Twitter @enakai00 オープンクラウド・キャンパス TensorFlowで楽しく 機械学習を学びましょう!

×