AI

FPSゲーム『DOOM』の世界そのものをAIの頭脳にして手書き数字の認識や文章生成まで実現してしまう「Doomformer」


FPSゲームの金字塔である『DOOM』のゲーム内ギミックを利用してニューラルネットワークの計算を実行するプロジェクト「Doomformer」が公開されました。大量のプレイヤーの分身や床の高さ、照明の明るさなどを計算に利用することで、手書き数字の認識や文章生成、AIによるゲームの操作まで実現しています。

DOOMFORMER: integer neural networks computed by voodoo dolls in ZDoom maps
https://mottopanikeiku.github.io/doomformer/#writes-itself

mottopanikeiku/doomformer: Compile an integer neural network into a DOOM map. Voodoo dolls do the arithmetic, light levels and plane heights hold the values, and every value is checked against NumPy with tolerance 0.
https://github.com/mottopanikeiku/doomformer

『DOOM』はソースコードが公開されていることから、有志によってトラクターやカーナビ、医療用超音波スキャナー、妊娠検査キット、果ては『DOOM』のゲーム内など、さまざまなプラットフォームに移植されていることでも知られています。開発者のmottopanikeiku氏が公開した「Doomformer」は『DOOM』を動かすだけでなく、ゲームの仕組みそのものをAIの計算に利用するというプロジェクトです。

Doomformerはニューラルネットワークを『DOOM』のステージに変換し、ゲーム内のオブジェクトを動かすことで計算を実行します。実行環境には『DOOM』を拡張したZDoom系の仕組みに対応する「ViZDoom」を利用しています。以下はニューラルネットワークからDOOMのマップを作成してViZDoomで計算した結果を、Pythonで大量の数値データを高速に計算するためのライブラリであるNumPyと比較するまでの流れを示した図。


計算の中心となるのが「ブードゥードール(Voodoo Doll)」と呼ばれる仕組みです。これは『DOOM』のマップにプレイヤーの開始地点を複数設定した場合に現れるプレイヤーの分身で、Doomformerではこの分身を大量に配置して計算に利用します。


例えば、分身をベルトコンベヤーのように動く床で移動させ、特定の線を通過した際に数値を加算することで、ニューラルネットワークに必要な計算を再現します。計算結果は照明の明るさや床と天井の高さとして記録され、階段や通路なども計算処理に利用されます。


Transformerで使われるAttentionと呼ばれる計算も、天井の高さによって分身の通過を制御することで再現しています。つまり、『DOOM』の画面にAIの計算結果を表示しているだけではなく、ゲーム内の分身が実際に動くことで計算を進めているわけです。


Doomformerでは、この仕組みを使って手書き数字を認識するデモが公開されています。例えば、プレイヤーがゲーム内の床を歩きながら数字を書くと、その形が28×28ピクセルの画像としてニューラルネットワークに入力されます。数字の認識には1355体の分身が利用され、どの数字に該当する可能性が高いかを計算します。判定結果はゲーム内のディスプレイに表示され、開発者が用意した0から9までの数字をそれぞれ3通りの方法で書くテストでは、30回すべてで正しい数字を認識したと報告されています。


さらに、手書き数字のデータセット「MNIST」を使った検証では、1万枚のテスト画像に対して97.16%の認識精度を記録しています。実際に『DOOM』内で計算された結果も、Pythonの数値計算ライブラリ「NumPy」で計算した結果と一致したとされています。


Doomformerは文章生成AIなどにも使われている「Transformer」というニューラルネットワークの仕組みにも対応しています。以下は、『DOOM』のゲーム内で動作するAIが実際にDOOMをプレイするデモ。Transformerを利用したAIが敵の位置や進行方向などの情報をもとに行動を判断し、ステージ内を移動しながら敵を倒してゴールを目指します。AIの計算は55個のゲーム環境に分割して実行され、102回の行動判断についてNumPyによる計算結果との一致が確認されています。


さらに1つのステージ内で文章生成を繰り返すデモでは5875体の分身を使い、次に出力する文字の選択から次の計算の準備までをゲーム内で実行することで「DAN」という文字列を生成しています。Pythonはゲーム内の時間を進めたり計算結果を読み取ったりする役割を担いますが、文字の選択自体はゲーム内で行われます。


ショウジョウバエの神経接続データ「FlyWire」から構築した255個のニューロンを持つモデルを利用し、食べ物を食べる、拒否する、身づくろいをする、飛び立つという4種類の行動を再現する実験も行われています。神経回路の動作は簡略化されており、実際のショウジョウバエの脳を完全に再現したものではありませんが、169回の計算ステップすべてで基準となるモデルと結果が一致しています。


ほかにもゲーム内の敵の位置に応じてAIが攻撃を判断する実験や、『DOOM』のステージ内でニューラルネットワークの重みを更新して学習させる実験などが公開されています。プレイヤーの行動を決めるニューラルネットワークをゲーム内に組み込み、分身による計算結果を使ってキャラクターを操作することも可能です。


ただし、『DOOM』を使った計算は通常のコンピューターによる計算と比べて非常に低速です。開発者の検証では、小規模なニューラルネットワークの計算にNumPyの約6万5000倍の時間がかかったと報告されています。また、『DOOM』内での演算結果がNumPyと一致することは確認されていますが、AIによる認識や回答そのものが常に正しいことを意味するわけではありません。

DoomformerのソースコードはGitHubで公開されており、MITライセンスで利用できます。LinuxとmacOS向けのインストール手順も案内されています。

・関連記事
GoogleとSamsungが開発した立体音響技術「Eclipsa Audio」とは何か? - GIGAZINE

Googleがハエの脳と中枢神経系全体のマッピングを公開するやいなや「DOOM」や「マリオ64」をプレイさせるエンジニアが登場 - GIGAZINE

正規表現だけで「DOOM」を動かすことに成功、1フレームの描画に約180秒 - GIGAZINE

人の脳細胞を使ったバイオコンピューターで「DOOM」をプレイできるのか? - GIGAZINE

ネズミに「DOOM」をプレイさせる実験装置が新たなレベルに到達してネズミが敵を撃てるように - GIGAZINE

あの「DOOM」がついにPDFファイルに移植される - GIGAZINE

ついに大腸菌で「DOOM」をプレイする猛者が登場、ただしクリアには600年かかる - GIGAZINE

ついに「DOOM」が量子コンピューターに移植される、ただしプレイ可能な量子コンピューターはいまだ存在せず - GIGAZINE

in AI,   動画,   ゲーム, Posted by log1i_yk

You can read the machine translated English article 'Doomformer' uses the world of the FPS g….