Slide 1

Slide 1 text

ぼくのかんがえた さいきょうのマリオ AI 艮 鮟鱇 @ushitora anqou 1

Slide 2

Slide 2 text

とりあえずデモ https://twitter.com/ ushitora_anqou/status/ 1061234857181765633 2

Slide 3

Slide 3 text

とりあえずデモ https://goo.gl/VJhD8Q Google URL Shortener は 2019 年 3 月で サービス終了 3

Slide 4

Slide 4 text

すごくない?? 4

Slide 5

Slide 5 text

すごい! 5

Slide 6

Slide 6 text

いろんなやりかた 6

Slide 7

Slide 7 text

いろんなやりかた • ルールベース • すたっとさんとか • つらそう 6

Slide 8

Slide 8 text

いろんなやりかた • ルールベース • すたっとさんとか • つらそう • 遺伝的アルゴリズム • VT-b とか • つらそう 6

Slide 9

Slide 9 text

いろんなやりかた • ルールベース • すたっとさんとか • つらそう • 遺伝的アルゴリズム • VT-b とか • つらそう • ヂープラニーング(DQN) • 梅さんとか • つらそう 6

Slide 10

Slide 10 text

設定 • エージェント(AI)がマリオをする。 • 環境情報を受け取り、ボタンの押し方 を返す。 画像引用:http://ur0.biz/Ok3H 7

Slide 11

Slide 11 text

想定解 入力:マリオの状態や周りの情報 ⬇ エージェント f (x) ⬇ 出力:ボタンの押し方 8

Slide 12

Slide 12 text

ところで • マリオ AI のステージは固定 • ランダム要素はない。 • エージェント出力の種類は有限 • 6 個のボタンの ON/OFF なので 26 = 64 ⬇ 出力を全て決めればその評価は一定 9

Slide 13

Slide 13 text

どゆこと? 事前にエージェントの出力を決める。 1. 右移動+ダッシュ 2. 右移動+ジャンプ 3. ジャンプ . . . これを出力した後の状態を評価すると、そ の出力の「よさ」が分かる ➡ 探索可能 10

Slide 14

Slide 14 text

想定解(再掲) 入力:マリオの状態や周りの情報 ⬇ エージェント f (x) ⬇ 出力:ボタンの押し方 11

Slide 15

Slide 15 text

鮟鱇解 あからじめ出力が決められた エージェント f () ⬇ 出力:ボタンの押し方 12

Slide 16

Slide 16 text

全幅探索 計算量:O(64n) 13

Slide 17

Slide 17 text

おねえさーぁぁん! 画像引用:https://youtu.be/Q4gTV4r0zRs 14

Slide 18

Slide 18 text

すくなく計算する 64 通りも要らない。 • 左移動と右移動を同時に入力すること はない。 • 上移動は使わない。 • 四六時中ダッシュすればいい。 15

Slide 19

Slide 19 text

すくなく計算する 4 通りに減らせる。 • ダッシュ+左移動 • ダッシュ+右移動 • ダッシュ+左移動+ジャンプ • ダッシュ+右移動+ジャンプ 16

Slide 20

Slide 20 text

続‧すくなく計算する 人間がマリオを遊ぶ。 • 人間の反応時間は 0.2s。 • 片や PC の画面更新は 30fps → 0.033s ➡ 人間のほとんどの反応は前と同じ 同様にエージェントの出力をダブらせる。 17

Slide 21

Slide 21 text

計算量:O ( 4n k ) 18

Slide 22

Slide 22 text

指数時間はいやだ! 多項式時間で計算したい。 • 貪欲法 • 一番良さそうな手を選択することを繰り 返す。 • 捨てる手が多い。 • 計算量は O(4n) • ビームサーチ • 貪欲法の拡張。 • 今回はこれを選択。 19

Slide 23

Slide 23 text

ビームサーチ • 良さそうな手を m 個持っておき、その 手から伸びる手を探索する。 • 探索した手のうち、上位 m 個を次の探 索で使う。 • 計算量は O(4mn) • わりとうまくいく。 20

Slide 24

Slide 24 text

ところで 21

Slide 25

Slide 25 text

ところで 「良さそうな手」ってなに? 21

Slide 26

Slide 26 text

評価関数をつくる ϕ : 手 −→ 評価値 ある手がどのくらい「良い」のかを表す関 数をつくる。 22

Slide 27

Slide 27 text

評価関数をつくる ϕ : 手 −→ 評価値 ある手がどのくらい「良い」のかを表す関 数をつくる。 めっちゃ難しい。 22

Slide 28

Slide 28 text

続‧評価関数をつくる • マリオの x 座標を使う? • 無謀にジャンプして距離を稼ぎ死ぬ。 • 袋小路に入って死ぬ。 • マリオの y 座標を使う? • ジャンプし続けて死ぬ。 • その他の指標? • わからん!w 23

Slide 29

Slide 29 text

どうしたか 「接地していたマリオの x 座標の最大値」 24

Slide 30

Slide 30 text

どうしたか 「接地していたマリオの x 座標の最大値」 • 接地していないと評価にならない。 • 無謀なジャンプを低評価に。 • 最大値をとることで袋小路にスタック することを防ぐ。 • 全ての行動が等価になるので、乱択で行 動が決まる。 24

Slide 31

Slide 31 text

評価関数図解 1 25

Slide 32

Slide 32 text

評価関数図解 2 26

Slide 33

Slide 33 text

評価関数図解 3 27

Slide 34

Slide 34 text

まとめ • マリオ AI は意外と難しかった。 • 正直喋れてないことはたくさんある。 • どうでもいいけどステージ 4–1 は クソ。 • そのうちコソッとコードは公開します。 28

Slide 35

Slide 35 text

ご清聴 ありがとうござ いました 29