このマリオ、AIでステージ攻略を学習するんです! 敵やブロックの位置から割り出された“最適行動”でゴールを目指す姿に「俺より上手いな」
ニコニコニュース / 2021年2月19日 18時15分
今回紹介する、ToMoMoTo Factoryさんが投稿した『決定木でマリオが学習してみた』という動画では、音声読み上げソフトを使用して、マリオを決定木で学習させていく方法について解説していきます。
投稿者メッセージ(動画説明文より)
ニューラルネットワークでマリオを教育してみた ( sm20467957 )
に引き続いて、決定木でやってみました。
ニューラルネットワークのときと違って、今度こそちゃんと考えている風に行動しています。
ご興味あれば、ご覧ください!
![](https://originalnews.nico/wp-content/uploads/2021/02/02012137/ddceb6c5c947decfc9345e3cd061e169-600x351.png)
この動画のマリオAIの目標を説明します。状況を判断して行動するマリオAIの作成を目指しています。
つまり、敵やブロックの位置などからどの行動がベストなのかを考え、行動するAIの実現を目指しています。これにより究極的にはマリオ1で復習したモデルでマリオ2をクリアすることができるのです。
![](https://originalnews.nico/wp-content/uploads/2021/02/02012201/4be794421e3c64d2a76ea07f45b0ff0c-600x350.png)
今回のマリオAIは、ゲーム情報から分析モデルに必要なメモリデータを取り出し、その分析モデルに適用してアクションを決めてアクションの結果からフィードバックを得て分析モデルを更新するという仕組みで作っています。
お手本プレイからの学習は行わず、マリオ自身が学ぶ仕組みとなっています。
![](https://originalnews.nico/wp-content/uploads/2021/02/02012236/534c73bfd9fd5737c34ded8ae1504f82-600x351.png)
この仕組みで重要となるのがどんな分析モデルにするかとどんなメモリデータを利用するかです。今回の分析モデルには、決定木を利用します。簡単に説明すると決定木とは、名前の通り木の形のような分析モデルでデータの値の条件に従って、二つに別れていき最終的に根元まで行って答えを決めるモデルです。学習データからデータの値の種類やデータの値の条件内容と木の形を作っていきます。
木が大きければ大きくなるほど複雑な条件を考えられるようになりますが、同時に複雑になりすぎて過学習といった汎用的なルールが作れない状態に陥いることもあります。過学習とは、要はガリ勉しすぎて頭デッカチになっちゃうと考えれば大体合っています。
ちなみに今回は、Jumpをする、しないを判定する決定木とJumpをしない場合に右に進む、左に進むを判定する決定木の二つを利用してマリオのアクションを決めています。
![](https://originalnews.nico/wp-content/uploads/2021/02/02012316/76558b8494c1a93d28d69da09cbdfeff-600x350.png)
最初のマリオのAIは、シンプルな決定木のモデルでとてもバカです。しかし、マリオは学習するためにそのモデルを利用してゲームをプレイしてデータを集めていきます。
そして、マリオが死んだときに集めたデータを良いアクションと悪いアクションに分けてそのデータを使って分析モデルを更新して賢くなっていきます。これを繰り返すことによってマリオはどんどん賢くなっていきます。
![](https://originalnews.nico/wp-content/uploads/2021/02/02012355/26c56bc8ec6c1c8c026281ae74ac2d53-600x351.png)
次にメモリデータについて説明します。まずはブロック情報の表現について説明します。マリオのステージのブロックは、16ドット×16ドットのマス目になっています。説明のために今回は白い枠の中のブロック情報だけ考えていきます。
普通にブロック情報のデータ化を考えるとブロックのあり、なしを0、1で表現する方法が考えられます。しかし、データの種類が多くなりすぎてまともな学習ができなくなります。例えば、この例だと変数が56個になるので2の56乗イコール7京のパターンを学習しないといけなくなります。
![](https://originalnews.nico/wp-content/uploads/2021/02/02012526/b8c8723daa5bd12a4d2021590c2dd3bd-600x349.png)
そこで、ブロック情報のデータ化をマリオとの距離で表現することにしました。上のブロック距離は、各列のブロックがマリオと同じ高さから何マス目にあるのかで表現します。ブロックがない場合は、すごく遠くにあるという意味にするために十分に大きな値を設定します。下のブロック距離も同様にします。
これによって0、1で表現する場合と比較して変数の数が減ってパターン数を減らすことができました。ちなみに実際の距離はドットを利用して、より細かな判断を可能にしています。それに加えて範囲ももっと広いので左と下もちゃんと見ています。
![](https://originalnews.nico/wp-content/uploads/2021/02/02012444/b8483d542f4f59336e8de21bd6fc1ac1-600x350.png)
最後に敵情報の表現について説明します。敵情報の表現は、マリオと敵との距離で表現します。また把握する敵はマリオに近い三匹までにします。これは変数の数を減らすためです。三匹未満の場合は、ブロック同様にすごく遠くにいるという意味にするため十分に大きな値を設定します。
ちなみに、マリオの敵はメモリの構造上五匹までしか出られないようになっています。ブロックや敵の情報以外にもマリオの加速度状況などの情報も使っていますが今回は割愛します。ただもちろんステージの位置や時間とかは使っていません。
![](https://originalnews.nico/wp-content/uploads/2021/02/02012628/32de29ea2a667f6d9eaf370b478cd1fa-600x350.png)
![](https://originalnews.nico/wp-content/uploads/2021/02/02012626/c6752c003048f6b590dc34054576035e-600x351.png)
![](https://originalnews.nico/wp-content/uploads/2021/02/02012624/59dda203a904f5f71bff60c01fe320f7-600x349.png)
マリオの学習成果を紹介します。やっと1-2まではクリアすることが出来ました。そこそこ状況を判断しているように見えました。ただ一部はステージの形を覚えて行動しているかもしれません。
学習させたマリオの結果は、ステージの1-1、1-2をクリアすることができましたが、1-3はクリアすることが出来ませんでした。ただ状況を判断しているように見えたのでまだまだ可能性を感じさせます。
学習の様子をノーカットで楽しみたい方はぜひ動画をご視聴ください。
視聴者のコメント
俺より上手いな
プログラミングのレベルじゃねぇよなw
人間ってすごいな
すごい人間っぽいね
めっちゃ敵から逃げんの笑う
外部リンク
この記事に関連するニュース
-
トヨタ、世界初の「自動運転タンデムドリフト」に成功
レスポンス / 2024年7月25日 11時45分
-
超音波診断動画から肺病変の所見に必要な特徴を高精度・高速に自動検出するAIを開発
共同通信PRワイヤー / 2024年7月24日 18時0分
-
そもそも「Copilot+ PC」とは何なのか?
ASCII.jp / 2024年7月14日 10時0分
-
チェック・ポイント・ソフトウェア・テクノロジーズ、増え続けるなりすましに対抗する新しいAIエンジン「DeepBrand Clustering」を追加
PR TIMES / 2024年7月10日 16時15分
-
IEEEが提言を発表 フィットネストラッカーでこころの健康について分かること
@Press / 2024年6月28日 11時0分
ランキング
-
1温水洗浄便座の異常、放置しないで──NITEが注意喚起 発火のおそれも
ITmedia NEWS / 2024年7月25日 19時13分
-
2中国のサイバー攻撃グループ、Macを狙うマルウェアアップデート
マイナビニュース / 2024年7月25日 12時46分
-
3コントローラー付きドックってPCで動画見る時に便利かも!
&GP / 2024年7月25日 6時0分
-
4人気Androidアプリにゼロデイ脆弱性、動画に扮してマルウェア感染
マイナビニュース / 2024年7月25日 9時12分
-
5プロが本気で“アンパンマンの塗り絵”をしたら…… 衝撃の仕上がりが360万再生「凄すぎて笑うしかないww」「チーズが、、、」
ねとらぼ / 2024年7月18日 22時0分
記事ミッション中・・・
記事にリアクションする
![](/pc/img/mission/mission_close_icon.png)
記事ミッション中・・・
記事にリアクションする
![](/pc/img/mission/point-loading.png)
エラーが発生しました
ページを再読み込みして
ください
![](/pc/img/mission/mission_close_icon.png)