「GameNGen」: リアルタイムDOOMゲームエンジンAIの論文を読む
はじめに
こんにちは。
最近 Google Researchが発表したAIがゲームエンジンそのものになるという内容の研究「GameNGen」が話題になりました。
今日はその研究の論文「DIFFUSION MODELS ARE REAL-TIME GAME ENGINES」についてまとめます。
この研究はAI/機械学習を使って、ゲームシステムそのものを再現することを目指した研究です。機械学習モデルは現在から次フレームの画像を予測して生成していきます。
動画が実際の研究の結果です。本当のゲームのプレイ動画のように見えます。画像を生成しているだけなのに、銃弾の数なども正確に描画されています。すごい。
論文の目的
ゲームは基本的に、この (1) ~ (3) を繰り返しと定義することができます。
(1): ユーザー操作の受け取り
(2): ゲーム内部情報のアップデート
(3): ゲームフレームをアップデート
ゲームエンジンはこのループを構築するためシステムです。
UnityやUnrealEngineなどの現在のゲームエンジンは、人間が手書きしたルールやコードに基づいて動作します。
近年、AIによる画像・動画生成などの性能が向上しています。
ユーザーの操作からビデオゲームの画面をインタラクティブに生成することは動画生成の応用で可能そうですが、実際のところ技術的な課題は多く、インタラクティブなビデオゲームなどシミレーションは行えていません。
Q. 「深層モデルは複雑なゲームを正しくリアルタイム再現できるか?」
この研究では 「DOOM」 という比較的複雑なゲームを、ユーザーからインタラクティブに再現する機械学習モデルの構築を目指します。
そして、近年の画像生成モデルのように、自動的にゲームが生成される新しいゲームエンジンへの一歩となることを目的としています。
主な内容と方法
ここでは次の3について説明を行います
学習データの収集 (DATA COLLECTION VIA AGENT PLAY)
機械学習モデルの学習 (TRAINING THE GENERATIVE DIFFUSION MODEL)
ゲームプレイの描画 (INFERENCE)
学習データ収集 (DATA COLLECTION VIA AGENT PLAY)
まずは今研究で使用する学習データを収集を行ます。
実験ではこのプロセスで ユーザーの操作とフレーム画面のログデータを 1000 万回分 収集しました。(かなり大規模 !!)
エージェントをDOOM上でプレイさせて、強化学習を行ます。エージェントのプレイログ(操作とゲーム画面)を保存することで学習データを集めます。
ここでの目的は、強いゲームエージェントを作成することでなく、より多様で人間のプレイに近い操作とゲーム画面のログを収集することです。
よって、強化学習の報酬は、勝敗ではなく、多様な観点で行っています。
具体的には、敵を倒す、アイテムを拾う、新しいエリアを発見するなどで報酬が得られるように設計されています。
また、体力やアーマーの増加・弾薬の補充報酬などにも与えられます。
シンプルですが、この報酬によって新しい状態を発見することを促しています。
機械学習モデルの学習 (TRAINING THE GENERATIVE DIFFUSION MODEL)
GameNGen では、Stable Diffusion v1.4をベースに、過去の数フレーム分の画像と行動を条件として、次にどのようなゲーム画面になるべきかを予測するように学習させます。
$$
\mathcal{L} = E_{t, \epsilon, T}\lbrack \lVert v(\epsilon, x_{0},t) - v_{\theta^{'}}(x_{t}, t, \lbrace \phi(o_{i < n} ) \rbrace), \lbrace A_{emb}(a_{i < n} ) \rbrace \lVert_{2}^{2} \rbrack
$$
Tはnステップまでのプレイログ
$${x_{t}=\sqrt{\bar{\alpha}_{t}}x_{0}+ \sqrt{1-\bar{\alpha}_{t}}\epsilon}$$、$${v(\epsilon, x_{0},t)=\sqrt{\bar{\alpha}_{t}}\epsilon-\sqrt{1-\bar{\alpha}_{t}}x_{0}}$$ です
さらに、安定した長期的な生成を可能にするために、いくつかの工夫が凝らされています。
自己回帰ドリフトの緩和
機械学習モデルは過去のゲームフレームの情報から次のフレーム画像を予測します。
基本的にゲーム画面が常に動きがありますが、時々プレイーが立ち止まって、画面が全くうごないも出てきます。
そのようなイレギュラーな状況では、モデルの予測精度が著しく落ちることがあります。(これが、自己回帰ドリフトです。)
過去画面にランダムなノイズを与え、モデルが過去データを補正できるようにして、この問題を緩和しています。
この工夫は学習時にのみ行っています。推論時には過去履歴にノイズを入れない方が結果が良かったようです。
潜在空間デコーダのファインチューニング
Stable Diffusionをそのまま使用すると、特にゲーム画面のHPバーなどが綺麗に生成することが難しいようです。そこで、Stable Diffusionの潜在変数を出力するVAEのDecoderを独立した手順で finetuning しています。
ゲームプレイの描画 (INFERENCE)
設定
推論時には 過去のフレーム画像のみに Glassifier-Free Guidance (CFG) を使用します。ただ、CFG の重みは、大きくすると画像にノイズが入るので、比較的小さめに設定されています。
また、実験では過去64フレーム分の結果を、モデルに入力しています。
(Glassifier-Free Guidance: https://arxiv.org/abs/2207.12598)
次のフレームの生成では、並列実行で4枚のサンプルを生成して、最終的な結果を画像を決定します。
ここでは、4枚からその中央値に最も近い画像を選択して、次のフレームとする方法を採用しています。4枚の平均を取る方法も考えられますが、こちらの手法の方が結果が良かったそうです。
モデルの推論ステップの短縮 (DENOISER SAMPLING STEPS)
実際の推論ではリアルタイムでモデルを動かすための取り組み・考察がありました。
GameNGenのフレーム生成モデルは拡散モデルですので、次のフレームの生成には数stepの処理(ノイズ推定)が必要になります。
1stepには約10msかかります(with a TPU-v5)。50FPSを目指す場合、フレーム生成は20msで完了させる必要があるので、生成stepを大きく短縮する必要があります。
研究では、DDIMという生成stepを短縮する手法を使って、4stepまでなら品質を落とさずに短縮できることがわかりました。4stepの場合、1フレームに全体で 50ms 必要、つまり FPS は 20FPS なります。
2stepの生成を実現するために、モデルを軽量化(蒸留)も試していますが、細かい部分の品質が足りず評価には使いませんでした。
推論速度を解決し、50FPSを実現するのは今後の研究としています。
結果
評価は本物のゲームの操作とフレーム画面のログを事前に用意して、モデルの結果と比較します。モデルは、用意された操作ログをフレーム毎に使いながら、フレームの少しずつ生成してゲームフレームを生成していきます。
結果はかなり本物と近いフレームを生成することができていました。
1.6, 3.2 秒の同じシナリオの本物と生成結果を見せて、10名の評価者に本物を選択してもらうテストを行いました。
結果、正解率はそれぞれ58%, 60%になっていて、生成結果を正しく見分けることが難しいレベルの生成ができているようです。
研究の課題と今後について
研究の課題
長期記憶の限界: GameNGenは、約3秒間の過去情報しか保持できません。そのため、より長期的なゲームプレイ状況を考慮した画面生成が課題となります。
エージェントと人間の行動の差異: データセットを収集するために導入した強化学習Agentの行動は、人間の行動と一致するとは限りません。人間らしいゲームプレイを実現するために、Agentの意思決定をより人間に近づけていく必要があります。
計算コスト: 拡散モデルの計算コストは比較的高いため、低いFPSになってしまっています。効率的な計算手法の開発が求められます。
インタラクティブビデオゲームの新しい枠組みに向けて
普通のビデオゲームはコード行とアセットによって構成されていますが、GameNGenは、ニューラルモデルの重みで構成される新しい枠組みを部分的に実証することができました。
この新しい枠組みが進むと、テキストやサンプル画像によって、ゲーム開発や編集が可能となり、開発プロセスのコストが削減され、開発が容易になる可能性があります。
短期的には、既存ゲームの部分的変更や新規動作の作成が実現可能かもしれません。
感想・考察
画像のみからある程度HPなどの算術の結果を反映できるようになっているのはすごいなと思った。1000万step分データを集めることができるとこれぐらいはできるのかと思った。
将来的には、画像生成AIのように、プロンプトでゲーム仕様やイメージを用意して、それに基づいたゲームを出すことを目標にしている。それには、かなりデータ量が必要だが、権利問題もあるので、実現は先だろうなと思いました。ゲーム実況動画は大量に存在しそうだが、動画だと操作ログがないので今回の方法には使えないし。
面白いけど、直近で実用的なものではなさそうだなという印象でした。
ただ、操作入力は無しで、ゲームプレイ動画生成のみに特化した生成AIは近い将来出てきても不思議ではないなと思います。
読んでいただき、ありがとうございました。
この記事が気に入ったらサポートをしてみませんか?