Slide 1

Slide 1 text

AIか何かについて
 kunou 2019/7/19


Slide 2

Slide 2 text

今回は
 「強化学習」
 の話をしようと思います


Slide 3

Slide 3 text

強化学習って何?


Slide 4

Slide 4 text

強化学習って何?
 強化学習(きょうかがくしゅう、英: Reinforcement learning)とは、ある環境内におけ るエージェントが、現在の状態を観測し、取るべき行動を決定する問題を扱う機械学 習の一種。エージェントは行動を選択することで環境から報酬を得る。強化学習は一 連の行動を通じて報酬が最も多く得られるような方策(policy)を学習する。代表的な 手法としてTD学習やQ学習が知られている。 最も基本的なモデルでは、ここでの環境は、有限状態数のマルコフ決定過程として定 式化される。また、強化学習のアルゴリズムは動的計画法に類似したアルゴリズムで ある。 https://ja.wikipedia.org/wiki/%E5%BC%B7%E5%8C%96%E5%AD%A6%E7%BF%92

Slide 5

Slide 5 text

強化学習って何?
 強化学習(きょうかがくしゅう、英: Reinforcement learning)とは、ある環境内におけ るエージェントが、現在の状態を観測し、取るべき行動を決定する問題を扱う機械学 習の一種。エージェントは行動を選択することで環境から報酬を得る。強化学習は一 連の行動を通じて報酬が最も多く得られるような方策(policy)を学習する。代表的な 手法としてTD学習やQ学習が知られている。 最も基本的なモデルでは、ここでの環境は、有限状態数のマルコフ決定過程として定 式化される。また、強化学習のアルゴリズムは動的計画法に類似したアルゴリズムで ある。 https://ja.wikipedia.org/wiki/%E5%BC%B7%E5%8C%96%E5%AD%A6%E7%BF%92

Slide 6

Slide 6 text

強化学習って何?
 https://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%82%B3%E3%83 %95%E6%B1%BA%E5%AE%9A%E9%81%8E%E7%A8%8B マルコフ決定過程 ある状態(S0 | S1 | S2 )の時に、ある行動(a0 | a1 )を取ると、 確率的に報酬を得て次の状態に遷移する。 強化学習では、解きたい問題をこのモデルに当てはめ、 得られる報酬が最大になる組み合わせを 自動で探し出し学習する。

Slide 7

Slide 7 text

DEMO
 時間に余裕があるうちにDEMOをします

Slide 8

Slide 8 text

DEMO
 時間に余裕があるうちにDEMOをします 今回はCatcherという非常に単純なゲームを学習させました 画面上部から落ちてくるボールをバーを左 右に動かして受け止めるゲームです。 ボールを受け止められるとスコアが増え、 ボールを落とすとスコアが減ります。 ボールを3回落とすとゲームオーバーになり ます。

Slide 9

Slide 9 text

どうやって行動を決定してるの?


Slide 10

Slide 10 text

どうやって行動を決定してるの?
 今回は ニューラル ネットワーク (学習済み) 0(左) 1(右) 2(入力 なし) 直近4フレームから ※1 実際は回帰問題なので分類問題では 無いのですが、説明を単純にするため便 宜上分類問題のように書いています アクションを決定してい る ※1

Slide 11

Slide 11 text

どうやって行動を決定してるの?
 今回は ニューラル ネットワーク (学習済み) 0(左) 1(右) 2(入力 なし) 直近4フレームから アクションを決定してい る ※1 ※1 実際は回帰問題なので分類問題では 無いのですが、説明を単純にするため便 宜上分類問題のように書いています データとしては、縦、横、フレームの 3 次元配列で表現できる ※2 ※2 この問題の場合は色は重要ではない のでグレースケールとして扱っている

Slide 12

Slide 12 text

どうやって行動を決定してるの?
 今回は ニューラル ネットワーク (学習済み) 0(左) 1(右) 2(入力 なし) 直近4フレームを表す配 列を受け取り アクションに応じた数値 を返す ※1 ※1 実際は回帰問題なので分類問題では 無いのですが、説明を単純にするため便 宜上分類問題のように書いています [ [[256, 128, 192, 192], ...], [[256, 128, 192, 192], ...], [[256, 128, 192, 192], ...], [[256, 128, 192, 192], ...], [[256, 128, 192, 192], ...], [[256, 128, 192, 192], ...], [[256, 128, 192, 192], ...], [[256, 128, 192, 192], ...], [[256, 128, 192, 192], ...], [[256, 128, 192, 192], ...], [[256, 128, 192, 192], ...], [[256, 128, 192, 192], ...], [[256, 128, 192, 192], ...], [[256, 128, 192, 192], ...], : ]

Slide 13

Slide 13 text

どうやって学習してるの?


Slide 14

Slide 14 text

どうやって学習してるの?
 今回はQ-learningという手法を使っています。

Slide 15

Slide 15 text

どうやって学習してるの?
 今回はQ-learningという手法を使っています。 概念的にはQTableと呼ばれる表をイメージすると理解しやすいです。

Slide 16

Slide 16 text

どうやって学習してるの?
 QTable(初期状態) 状態\行動 ← → そのまま 0.323 -0.345 0.234 -0.111 0.222 0.333 -0.432 0.543 0.325 各セルを乱数で 初期化を行う

Slide 17

Slide 17 text

どうやって学習してるの?
 QTable(学習中) 状態\行動 ← → そのまま 0.323 -0.345 0.234 -0.111 0.222 0.333 -0.432 0.543 0.325

Slide 18

Slide 18 text

どうやって学習してるの?
 QTable(学習中) 状態\行動 ← → そのまま 0.323 -0.345 0.234 -0.111 0.222 0.333 -0.432 0.543 0.325 もしこの状態に 一致するならば…

Slide 19

Slide 19 text

どうやって学習してるの?
 QTable(学習中) 状態\行動 ← → そのまま 0.323 -0.345 0.234 -0.111 0.222 0.333 -0.432 0.543 0.325 もしこの状態に 一致するならば… 報酬が最大になる アクションを選択す る

Slide 20

Slide 20 text

どうやって学習してるの?
 QTable(学習中) 状態\行動 ← → そのまま 0.323 -0.345 0.234 -0.111 0.222 0.333 -0.432 0.543 0.325 もしこの状態に 一致するならば… 報酬が最大になる アクションを選択す る その結果ボールを 落とす

Slide 21

Slide 21 text

どうやって学習してるの?
 QTable(学習中) 状態\行動 ← → そのまま -0.123 -0.345 0.234 -0.111 0.222 0.333 -0.432 0.543 0.325 もしこの状態に 一致するならば… ボールを落としたの で報酬を減らす※ ※1 実際の計算方法については省略

Slide 22

Slide 22 text

どうやって学習してるの?
 QTable(学習中) 状態\行動 ← → そのまま -0.123 -0.345 0.234 -0.111 0.222 0.333 -0.432 0.543 0.325 再度この状態に 一致するならば…

Slide 23

Slide 23 text

どうやって学習してるの?
 QTable(学習中) 状態\行動 ← → そのまま -0.123 -0.345 0.234 -0.111 0.222 0.333 -0.432 0.543 0.325 再度この状態に 一致するならば… 報酬が最大になる アクションを選択す る

Slide 24

Slide 24 text

どうやって学習してるの?
 QTable(学習中) 状態\行動 ← → そのまま -0.123 -0.345 0.234 -0.111 0.222 0.333 -0.432 0.543 0.325 再度この状態に 一致するならば… 報酬が最大になる アクションを選択す る その結果、ボール を得られる

Slide 25

Slide 25 text

どうやって学習してるの?
 QTable(学習中) 状態\行動 ← → そのまま -0.123 -0.345 0.534 -0.111 0.222 0.333 -0.432 0.543 0.325 再度この状態に 一致するならば… ボールを得られた ので報酬を増やす

Slide 26

Slide 26 text

どうやって学習してるの?
 以降これを繰り返すことで学習が進んでいきます。

Slide 27

Slide 27 text

どうやって学習してるの?
 以降これを繰り返すことで学習が進んでいきます。 ただし実際のQTableの状態は、256階調のグレースケール画像として、 256の25600(80 x 80 x 4)乗もの とてつもなく膨大な組み合わせ数が存在することになります。 Google先生も匙を 投げる大きさ

Slide 28

Slide 28 text

どうやって学習してるの?
 以降これを繰り返すことで学習が進んでいきます。 ただし実際のQTableの状態は、256階調のグレースケール画像として、 256の25600(80 x 80 x 4)乗もの とてつもなく膨大な組み合わせ数が存在することになります。 そのため、実際には畳み込みニューラルネットワークを利用して 画面の特徴量をニューラルネットワークに学習させることで、状態数が爆発的に増え るのを防いでいます。 Google先生も匙を 投げる大きさ

Slide 29

Slide 29 text

まとまってない まとめ
 ライブラリやドキュメントが整備されてきたため、 個人でも強化学習を簡単に出来るようになってきました。 (ただしマシンパワー必須) AIの用途として画像分類や自然言語解析など 実用性の高いものも面白いですが、 ゲームを操作させるというのはより人工知能らしくて面白いので、 興味がある人はいかがでしょうか。

Slide 30

Slide 30 text

付録

Slide 31

Slide 31 text

ニューラルネットって何してるの?
 例えば画像分類だと ニューラル ネットワーク (学習済み) 0(猫) 1(犬) ある画像を受け取り 分類に応じたラベルを返 す

Slide 32

Slide 32 text

ニューラルネットって何してるの?
 例えば画像分類だと ニューラル ネットワーク (学習済み) 0(猫) 1(犬) ある画像を受け取り 分類に応じたラベルを返 す データとしては、縦、横、 RGBの3 次元配列で表現できる

Slide 33

Slide 33 text

ニューラルネットって何してるの?
 例えば画像分類だと 関数 0 [ [[256, 128, 192], [211, 73, 81], ...], [[256, 128, 192], [211, 73, 81], ...], [[256, 128, 192], [211, 73, 81], ...], [[256, 128, 192], [211, 73, 81], ...], [[256, 128, 192], [211, 73, 81], ...], [[256, 128, 192], [211, 73, 81], ...], [[256, 128, 192], [211, 73, 81], ...], : ] 1 [ [[256, 128, 192], [211, 73, 81], ...], [[256, 128, 192], [211, 73, 81], ...], [[256, 128, 192], [211, 73, 81], ...], [[256, 128, 192], [211, 73, 81], ...], [[256, 128, 192], [211, 73, 81], ...], [[256, 128, 192], [211, 73, 81], ...], [[256, 128, 192], [211, 73, 81], ...], : ] ある配列を受け取り 分類に応じた数値を返 す

Slide 34

Slide 34 text

ニューラルネットって何してるの?
 つまり、ニューラルネットワークとは非常に複雑な関数の実装

Slide 35

Slide 35 text

どうやって学習してるの?


Slide 36

Slide 36 text

どうやって学習してるの?
 時間切れ 気力があったら書きます