AIを用いたマリオカート64の全自動走行がNINTENDO64の実機で成功
Googleが開発した機械学習のためのソフトウェアライブラリ「TensorFlow」を使用し、NINTENDO64でマリオカートの全自動走行を成し遂げた人物が登場しました。
Can an AI learn to drive Mario Kart 64? - YouTube
Let’s-a Go, TensorFlow! - Hackster.io
https://www.hackster.io/news/let-s-a-go-tensorflow-713147d81e18
マリオカートの全自動走行を成し遂げたのは、セキュリティ研究者であるstacksmashing氏。stacksmashing氏は2017年に登場した「TensorFlowを用いて人工知能(AI)がマリオカート64をプレイできるように学習させる」というプロジェクトに感銘を受けたとのことですが、このプロジェクトは実機ではなくエミュレーターを使用して行われていたため、同氏は実際にNINTENDO64を使用した全自動走行が行えるよう、ソフトウェアの改修を試みました。
stacksmashing氏のアイデアは、NINTENDO64から出力された映像をPCに取り込んで機械学習を行い、PCからの出力結果をコントローラー入力としてNINTENDO64に送り返すというもの。NINTENDO64からのAV出力はアダプターを使用してHDMIに変換、PCからのコントローラー信号出力はRaspberry Pi Picoを用いて変換を行いました。
全体像はこんな感じ。間に観測用のモニターも挟まれています。
そして、stacksmashing氏は前述のプロジェクトで作成されたマリオカート64を制御するための機械学習モデルとツールのセット「TensorKart」を借用。PlayStation 4のコントローラーを用い、マリオカート64から出力される映像のフレームとコントローラーの入力信号を関連づける学習をAIに行わせました。この際遅延を減らしたり、コントローラーの入力しきい値を変更したりといった調整を加えたとのこと。
stacksmashing氏は1万ものフレームを用いてトレーニングを行いましたが、最初のモデルではキャラクターが砂に突っ込んだり壁にぶつかったりしてしまいました。
そこからパラメーターの調整を加え続けた結果、ルイージサーキットを全3ラウンド問題なく走行できるようになったとのこと。
stacksmashing氏はトレーニングの際に感じた興味深い点として、AIは「マップ」から学習しているように見えたということを挙げています。AIはマップ表示をオンにするとマップから学習し、マップ表示をオフにするとキャラクターから学習。さらにマップやタイム表示などの余計な情報を全て排除すると、AIのパフォーマンスが大幅に向上したとのこと。
stacksmashing氏は訓練データの学習回数を指すエポック数を増やすとパフォーマンスが向上し、エポック数150で3ラウンドを問題なく走りきったと述べています。なお、パフォーマンスには一貫性があり、ラウンド2とラウンド3の走破タイムの差はわずか0.01秒でした。
ルイージサーキットでのトレーニングを終えたところで、stacksmashing氏は新しいコースとしてカラカラ砂漠を追加して学習を行わせました。その結果、このコースではわずか2ラウンド分の学習で走破に成功したとのこと。stacksmashing氏は「他のコースでも走破することは可能ですが、パフォーマンスはそれほどいいとは言えません。より多くのトレーニングが必要だと思います」と述べました。
なお、stacksmashing氏が改良を加えたモデル「TensorKartRealHW」はGitHubで公開されています。
・関連記事
TensorFlow×マリオカートでキノコカップ優勝も可能なリカレントニューラルネットワーク「MariFlow」を開発 - GIGAZINE
AIに「スーパーマリオ64でスターをゲットする方法」を学習させる - GIGAZINE
AIはゲームプレイ動画からスーパーマリオブラザーズやロックマンのゲームそのものを再現可能 - GIGAZINE
マリオが自己学習し感情さえも持つ人工知能のプロジェクトとは? - GIGAZINE
・関連コンテンツ