Save 37% off PRO during our Black Friday Sale! »

ぼくのかんがえたさいきょうのマリオAI

 ぼくのかんがえたさいきょうのマリオAI

126139a2ee6a8e441e12208d0b6be790?s=128

Ushitora Anqou

December 10, 2018
Tweet

Transcript

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

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

  3. とりあえずデモ https://goo.gl/VJhD8Q Google URL Shortener は 2019 年 3 月で

    サービス終了 3
  4. すごくない?? 4

  5. すごい! 5

  6. いろんなやりかた 6

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

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

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

    VT-b とか • つらそう • ヂープラニーング(DQN) • 梅さんとか • つらそう 6
  10. 設定 • エージェント(AI)がマリオをする。 • 環境情報を受け取り、ボタンの押し方 を返す。 画像引用:http://ur0.biz/Ok3H 7

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

  12. ところで • マリオ AI のステージは固定 • ランダム要素はない。 • エージェント出力の種類は有限 •

    6 個のボタンの ON/OFF なので 26 = 64 ⬇ 出力を全て決めればその評価は一定 9
  13. どゆこと? 事前にエージェントの出力を決める。 1. 右移動+ダッシュ 2. 右移動+ジャンプ 3. ジャンプ . .

    . これを出力した後の状態を評価すると、そ の出力の「よさ」が分かる ➡ 探索可能 10
  14. 想定解(再掲) 入力:マリオの状態や周りの情報 ⬇ エージェント f (x) ⬇ 出力:ボタンの押し方 11

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

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

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

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

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

    ダッシュ+右移動+ジャンプ 16
  20. 続‧すくなく計算する 人間がマリオを遊ぶ。 • 人間の反応時間は 0.2s。 • 片や PC の画面更新は 30fps

    → 0.033s ➡ 人間のほとんどの反応は前と同じ 同様にエージェントの出力をダブらせる。 17
  21. 計算量:O ( 4n k ) 18

  22. 指数時間はいやだ! 多項式時間で計算したい。 • 貪欲法 • 一番良さそうな手を選択することを繰り 返す。 • 捨てる手が多い。 •

    計算量は O(4n) • ビームサーチ • 貪欲法の拡張。 • 今回はこれを選択。 19
  23. ビームサーチ • 良さそうな手を m 個持っておき、その 手から伸びる手を探索する。 • 探索した手のうち、上位 m 個を次の探

    索で使う。 • 計算量は O(4mn) • わりとうまくいく。 20
  24. ところで 21

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

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

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

  28. 続‧評価関数をつくる • マリオの x 座標を使う? • 無謀にジャンプして距離を稼ぎ死ぬ。 • 袋小路に入って死ぬ。 •

    マリオの y 座標を使う? • ジャンプし続けて死ぬ。 • その他の指標? • わからん!w 23
  29. どうしたか 「接地していたマリオの x 座標の最大値」 24

  30. どうしたか 「接地していたマリオの x 座標の最大値」 • 接地していないと評価にならない。 • 無謀なジャンプを低評価に。 • 最大値をとることで袋小路にスタック

    することを防ぐ。 • 全ての行動が等価になるので、乱択で行 動が決まる。 24
  31. 評価関数図解 1 25

  32. 評価関数図解 2 26

  33. 評価関数図解 3 27

  34. まとめ • マリオ AI は意外と難しかった。 • 正直喋れてないことはたくさんある。 • どうでもいいけどステージ 4–1

    は クソ。 • そのうちコソッとコードは公開します。 28
  35. ご清聴 ありがとうござ いました 29