Search Unity

Eidos-Montréal は、いかにしてエージェントのトレーニングに使う観測を改善するグリッドセンサーを編み出したか

, 11月 20, 2020

Eidos Labs では、いくつかのプロジェクトで機械学習を使用しています。Automated Game Testing プロジェクトでは、強化学習(RL)を使用して行動を学習したエージェントでプレイヤーの行動をモデル化することで、大規模な AAA 級ゲームの機能をテストするという問題に取り組んでいます。 このブログ記事では、Eidos Labs のチームが Unity Machine Learning Agents Toolkit(ML-Agents)の中でグリッドセンサーを作成し、機械学習により適した形でゲームを表現し、トレーニング時間を短縮し、最終的にはより安価なモデルの構築を実現した方法を説明します。

Eidos-Montréal 社について

2007 年に設立された Eidos-Montréal の最初の目標は、『Deus Ex: Human Revolution』などの Eidos Interactive の古いフランチャイズを復活させることでした。2009 年、スタジオはスクウェア・エニックスに買収されました。時は下って 2020 年、Eidos-Montréal は現在、ゲームと研究プロジェクトの両事業を合わせて、約 500 人の従業員を擁しています。同スタジオは最近、Eidos-Montréal の技術革新を推進するための最先端のチーム、Eidos Labs を擁する地域支部、Eidos-Sherbrooke の開設を発表しました。

強化学習を利用したゲームテストの自動化

強化学習を応用して、『StarCraft』や『Dota 2』、あるいは Atari 2600 のゲーム集など、人間と同等あるいは人間を超えるレベルでゲームをプレイできる AI システムを実現させた成果が多数挙げられています。しかし、ゲーム開発者にとって最大の課題の 1 つは、これらのモデルをトレーニングするための計算時間とコストの量です。AAA 級ゲームの開発においては、時として意図せずこの問題を悪化させてしまうこともあります。開発者はしばしば機能を追加したり、テクスチャやアニメーションを更新したりして、テストが最も必要とされる初期の段階でゲームを急速かつ劇的に変化させるからです。Eidos Labs のチームでは、モデルの表現力とトレーニング速度の折り合いをつけるポイントを見つけつつ、刻々と変化するゲームの外観に依存しないようにすることが、Automated Game Testing プロジェクトの核心的な目標の 1 つとしています。

イノベーションと進歩を促進するために、Eidos Labs は AI と 3D に特化したディープテック企業 Matsuko 社と Automated Game Testing プロジェクトの開発について提携を行い、グリッドセンサーの開発にこぎつけました。また、チームはプロトタイピングに Unity ML-Agents ツールキットを活用しました。コアチームは以下のメンバーで構成されていました(敬称略)。

強化学習における観測の定義と Unity ML-Agents ツールキット

エージェントが環境を観測する能力は、強化学習(RL)における重要な概念です。エージェントが、特定のタイミングでどのように行動すべきかを定義するポリシーに基づいて行動した後、エージェントは環境のさまざまな状態を観察し、報酬が上がったか下がったかを判断します。報酬と行動は RL のポリシーを改善を強く促す要因ですが、観測の表現もエージェントの行動に大きく影響を及ぼします。特に、ゲームエンジンが観測に対して、現実世界よりも多彩なアプローチを取れるようになってから、この傾向は顕著です。

ML-Agents では、センサーがモデルの学習と実行のための観測を表現するための主なメカニズムとなっています。また、一般的なインタフェースに加えて、ML-Agents では RL モデルの学習に用いられるエージェントの観測を生成するための 2 種類のセンサーを提供しています。1 つ目はレイキャストを使うもので、エージェントが視線の先にあるゲームオブジェクトを観測してデータを収集することを可能にします。開発者は、エージェントからゲームオブジェクトまでの距離だけでなく、参照を送ることもできるようになっています。エージェントはこの参照を使って、ゲームオブジェクトのライフや、敵か味方かといったデータの他の内容を調べることができます。

2 つ目は、エージェントに取り付けられたカメラから取り込まれたピクセルを使用するものです。カメラは、カメラがどのように装着されているか、どのように配置されているかに基づいて、ゲーム環境のグレースケールまたは RGB 画像をエージェントに提供します。これらの画像は、ピクセル間の非線形関係を理解するために学習を行う畳み込みニューラルネットワーク(CNN)を訓練するために使用することができます。CNN を使用することで、カメラセンサーは、エージェントが観測のストリームに高次元画像を入力として含めることができる手段を提供します。

どちらのタイプのセンサーも様々なシナリオで使用することができますが、レイキャストもピクセルベースのカメラも、エージェントにゲームをプレイさせるための訓練における制限があります。

  • ゲームオブジェクトがエージェントの視線に隠れたままになることがある。これらのオブジェクトの観測がエージェントを訓練するために重要であるならば、この制限はエージェントのネットワーク容量によって補われなければならない。この補填は通常、メモリを増やすことによって行われる。
  • 各レイキャストは独立しており、固有の空間情報はそれらの間で共有されない。
  • エージェントは通常、シーンの反対側にあるオブジェクトを知る必要がないため、レイキャストの長さが制限される。これは、エージェントが複数のレイキャストの間にあるオブジェクトを観測しない可能性があることを意味する。オブジェクトが小さければ小さいほど、それが検出される可能性は低くなる。そして、通常計算効率のために、レイキャストの数は絞られる。
  • カメラを使用するには、シーンのレンダリングが必要になる。これは、離散的な観測のみをヘッドレスに行うなどの他の方法と比較して、1 分間にエンジンの駆動回数を大幅に低下させる。
  • リモートサーバー上での Unity シーンのヘッドレスなレンダリングでは、Xvfb を使用する必要がある。これは許容しがたいほどの速度低下を招き、特に高解像度のカメラを使う場合には影響は深刻となる。
  • ゲーム内のゲームオブジェクトのテクスチャが更新された場合、カメラベースの観測を使用している場合はエージェントを再訓練する必要がある。
  • カメラから取得できる RGB 情報は、エージェントに対して高々3 つのチャンネルしか提供できない。この制限により、深度のようなオブジェクト固有の情報をキャプチャする能力が低下する。

自動化されたゲームテストに RL に基づくエージェントを使う

Eidos Labs のチームは、3D 環境のプレイヤーの視点を使って、RL に基づくエージェントを上手くトレーニングしたいと考えていました。Automated Game Testing プロジェクトの核となる原則の 1 つは、テストがゲームオブジェクトの外観やプロパティに依存しないことを保証することです。ゲームオブジェクトの外観やプロパティは、ほとんどのゲーム、特に大規模なプロジェクトでは、継続的に進化するものです。ゲームオブジェクトの垂直方向の位置、サイズ、色、マテリアルなどにわずかな変更があったとしても、開発者はセンサーや観測の特性を調整する必要があります。したがって、これらの変数に依存しないテストを行うことが、RL に基づくエージェントによる自動ゲームテストを実行可能なソリューションとするための鍵となります。

観測をゲームオブジェクトの外観やプロパティに依存しないようにするために、チームはさまざまなレイキャストの実装を試しました。しかし、対象物が小さかったり、遠すぎたりすると、レイキャストが当たる可能性が低くなるため、トレーニング中に対象物が観測されませんでした。これは望ましくないエージェントの行動を引き起こすことになります。チームはまた、さまざまなカメラの実装も試しましたが、これは外観の変化に対応するだけの十分な堅牢性を持つために、大きなレンダリングオーバーヘッドと大量の再訓練を必要としました。

このように、レイキャストや観測には限界があるため、Eidos Labs のチームは新しい種類のセンサーを構想しました。

グリッドセンサー

チームは、RL に基づくエージェントが人間のプレイヤーが観測する情報の種類によって制限される必要がないことに気付きました。レイキャストやカメラは人間の特性と関連付けしやすいのですが、機械学習モデルにとってゲーム内の観測情報を表現するのに必ずしも最適な方法とは限らないということです。

チームは、トレーニング用のセンサーに次のような特性を要求しました。

  • すべてのゲームオブジェクトを効率的に検出し、観測することができること
  • 観測の収集を大幅に高速化、低コスト化した形で、Unity をヘッドレス実行できること
  • トレーニングとレンダリングに関する制約を克服するため、カメラだけに依存するものとはしないこと
  • 既存のニューラルネットワークに関する文献から得られる知見や、ベストプラクティスを活用すること

チームは、ボックスコライダーがゲームオブジェクトからのデータ収集という点ではレイキャストと同じメカニズムを提供しつつも、収集したデータに画像上のピクセルと同じ構造を持たせられることに気付きました。また、チームは、RL に基づくエージェントのための表現に関する問題を単純化するために、Atari 社のゲームの連続値を表現する 10×10×N のバイナリ状態表現を使用した MinAtar 論文からもヒントを得ました。Eidos Labs は最終的にグリッドセンサーを編み出し、ML-Agents に貢献しました。

グリッドセンサーはレイキャストからのデータ抽出の汎用性と CNN の計算効率を組み合わせたものです。グリッドセンサーは物理特性に対するクエリを発行することでゲームオブジェクトからデータを収集し、そのデータを「高さ×幅×チャンネル」の行列に構造化します。この行列は、正投影カメラの画像に似ていますが、オブジェクトの赤、緑、青のカラーの値を表すのではなく、グリッドセンサーの「ピクセル」(またはセル)は、センサーに関連するオブジェクトの任意のデータのベクトルを表します。もう 1 つの利点は、グリッドの解像度を低くすることができることで、これによりトレーニング時間を短縮することができます。そして、この行列を CNN に送り込み、データ分析や RL に基づくエージェントのトレーニングに利用することもできるのです。

グリッドセル内のゲームオブジェクトから収集された任意のデータには、レイキャストから収集されたものと同様のプロパティが含まれることがあります。画像に対して CNN を使う本来の利点の 1 つは特徴量エンジニアリングを避けることでしたが、チームは、実用上はこのレベルの特徴量エンジニアリングがゲームデザイナーにとって、制御メカニズムとして有用であることを見出しました。CNN が直面する表現学習にかかわる問題を単純化し、エージェントのトレーニングに必要な計算リソースを節約することにつながりました。

最後に、ゲーム内カメラとは異なり、グリッドセンサーは物理シミュレーションのみに依存します。最大のメリットの 1 つは、シーンレンダリングを省けることで、これにより 1 分あたりのエンジンの駆動回数が大幅に増加し、最終的には高次元データを使用しながらもトレーニング時間を短縮できるようになります。さらに、レンダリングとピクセルを機械学習モデルへの入力から切り離すことで、テクスチャや照明などのゲームの視覚的な側面は、エージェントの行動に影響を与えることなく変更できるようになり、ゲームの開発中に RL で学習されたモデルのより良い一般化が可能になります。

要約すると、グリッドセンサーを使用することで、開発者は任意の数のゲームオブジェクトから任意のデータを収集することができ、シミュレーションやトレーニングを大幅に高速化することができるようになるということです。

グリッドセンサーは、使用可能なタスクの種類についていくつかの前提条件を仮定しています。そのため、すべての問題を解決するものではありませんが、Eidos Labs は、ML-Agents でグリッドセンサーをオープンソース化することで、ゲーム開発のコミュニティがさまざまなニーズに対応できるように改良され続けることを望んでいます。

Unity ML-Agents ツールキットでグリッドセンサーを試す

グリッドセンサーは ML-Agents Release 7 の一部として、extensions パッケージに収録されました。これは、GitHub で公開されています(これ以外のすべてのリリースも同様です)。Grid Search の具体的な実装については、Eidos Labs チームのプルリクエストを参照してください。

このリリースで提供されている機能をお使いの方は、ぜひご意見をお聞かせください。ML-Agents に関するフィードバック、一般的な問題、質問については、ML-Agents フォーラムにご連絡いただくか、直接メールでお問い合わせください。バグを見つけられた場合は、ML-Agents の GitHub の Issues ページからご連絡ください。

機械学習とゲームが交差するこのエキサイティングな分野で働きたい方は、現在募集している職種の採用情報をチェックしてみてください。

Eidos-Montréal 社をフォローしよう

今後も情報を追うために、FacebookTwitterInstagram、およびLinkedInでこのチームをフォローしましょう。