blog シナモンブログ

ゲームおよびエンターテインメントにおける強化学習
  • 技術

ゲームおよびエンターテインメントにおける強化学習

近年、「強化学習」という言葉が一般にも浸透してきました。
機械学習全体と同様に、その一分野である強化学習が注目を集めているのも、
うなずけることです。

そもそも強化学習とは何なのでしょうか。

また、他の機械学習ソリューションと比べて何が優れているのでしょうか。この記事では、「現実世界の問題」という観点から強化学習について考察し、ゲームおよびエンターテインメント業界での応用例をご紹介します。

現実世界での問題をモデル化

現実世界で人間が実際に何か仕事をする場合を考えてみると、いくつかのキーワードが見つかります。どのような仕事にも、エージェント、すなわち仕事をする人間と、目標の達成エージェントは、仕事をする上でが自身の置かれている状況を常に把握し、仕事の役に立つ情報あるいは、仕事に支障をきたし兼ねない外的な要因などを察知しながら、仕事を完了させる為に一連のワークフローを遂行する必要があります。

たとえば、フードデリバリーという仕事では、配達員(エージェント)が、お客様の家までたどり着くために(目標の達成)、正しいルートをたどりながら(状態の把握)、道を進んでいく必要があります(アクションの実行)。お客様のもとに到着して料理を届けたときには最大の報酬を得られますが、途中で道を間違えたり、渋滞に巻き込まれたりして仕事を完了できなければ、代償を払うことになります。

上記で説明したキーワードを、ゲームに置き換えて理解できるよう、簡単な例を見てみましょう。「マリオブラザーズ」というゲームでは、主人公のマリオは、あらかじめ定義された一連のアクションを実行することで、特定の目標を達成する必要があります。マリオは、途中でコインやアイテムを集めて、敵や落とし穴(ペナルティ)を避けながら、旗までたどり着かなければなりません。

強化学習の正式な数学的定義は以下のようになります。

1.toの時点で、エージェントはどのようなアクションを実行すべきかわからないので、ランダムなアクションを実行するか、事前の知識があれば他の戦略を取ることがある。

2.タイムステップtₜにおいて、エージェントはアクション (Aₜ) を実行する。

3.次のタイムステップ (tₜ ₊ ₁) で、エージェントは新しい状態 (Sₜ ₊ ₁) を認識し、そのアクションの結果として環境から得た報酬 (Rₜ ₊ ₁) についても考慮する。

4.報酬が少ない場合、エージェントは別のアクションを選択するように調整する。

5.このプロセスは、エージェントがエピソードの実行を完了するまで繰り返される。

ゲーム業界における強化学習の応用

上記の例から、強化学習のこの定義が多くの現実世界の問題にぴったり当てはまることは一目瞭然です。また、ゲームは現実のシナリオに基づいていることが多いため、強化学習の完璧な応用例となります。前のセクションではシンプルなゲームでの応用例を紹介しましたが、ここではゲーム業界で強化学習がどのように使用されているかを見てみましょう。

ゲームテストの自動化

マリオの例のような単純なゲームではなく、上のスクリーンショットのようなFPSを想像してみてください。エージェントが実行することのできるアクションのパターンはほぼ無限にあります。歩いたり、走ったり、撃ったり、武器の種類を変えたり、リロードしたり、オブジェクトやアイテムを操作したりと、数え上げればきりがありません。

従来のゲームテストでは、ベータ版のテスターが数十時間をかけてゲームをプレイし、コーディング上のバグがないだけではなく、仕様上のバグ(棚の位置が高すぎてプレイヤーが飛び乗れないなど)や、ゲームが問題なく動作することを確認するのが普通でした。ゲームプレイを自動化することで、テスターはAIがゲームを完了するまでの時間を設定するだけでよくなり、AIがゲームを完了できなかった場合には、テスターはなぜ完了できなかったのかをログで確認するだけで済みます。

ゲームチューニングの自動化

強化学習のもう1つの一般的な利用法は、NPCや敵の行動のチューニングです。たとえば、格闘ゲームでは、開発者は通常、スキルや能力は異なっていても、全体的には互角の力を持ったさまざまなキャラクターを作成したいと考えます。強化学習を利用することで、AIのキャラクター同士の戦いを自動化し、その勝敗の統計を取ることができます。統計値が特定のキャラクターに大きく偏っている場合、開発者はそのキャラクターの能力や与えるダメージを調整することができます。これらのテストはすべて自動化できるので、テスターの負担を大幅に軽減することができます。

引用元:「Virtua Fighter」

このような技術をずっと昔に利用できていたら、毎年もっと多くのゲームが発売されていたことでしょう。

業界と市場の状況

残念ながら、強化学習を実際のゲーム開発のワークフローに導入するには,非常に多くの課題があり、共通のプラットフォームやベストプラクティスを作成するのも困難です。現時点では、ほとんどのゲーム会社が何らかの機械学習ソリューションを自社で開発し始めているものの、ゲーム業界に強化学習サービスを提供している大手の企業はありません。ゲーム業界に共通の強化学習プラットフォームやパイプラインを広く導入するには、最大の障害となる以下の課題を解決しなければなりません。

  • 強化学習の導入における課題
  • 強化学習の動作は予測不可能

機械学習のあらゆる分野に言えることですが、AIエージェントがなぜそのように動作するのか人間にとって完全には理解できないほど複雑化しています。常に安定したゲーム体験を提供したいゲームデザイナーにとって、これはゲームのキャラクターにAIを実装するうえでの障壁となります。

強化学習のアーキテクチャ設計は、ゲーム設計と連動する

エージェントが実行可能なアクションは、ゲーム、ジャンル、企業によって異なります。
そしてもちろん、環境も報酬の設計に大きく影響します。そうした制約があることから、強化学習アーキテクチャを設計するには、ゲームの設計やソースコードにもアクセスできる必要があります。それによって多くの問題が引き起こされる可能性がありますが、最大の問題は、ほとんどのゲーム会社にとって、コードや資産が最も貴重な知的財産であるということです。多くのゲーム会社は、コードを共有することを非常に嫌い、すべての開発を社内で行おうとします。

強化学習では推論に大量の計算が必要

強化学習を利用したゲームを実行できるのは、高性能なゲーム機やPCで実行されるゲームの場合に限られます。用途はさまざまに異なっていても、デバイスにはある程度の能力のGPUが搭載されているのが望ましいでしょう。しかし、多くの一般的なゲーマーは、強化学習による推論を実行するにはスペックが低かったり、バッテリー消費が激し過ぎたりするスマートフォンでゲームをプレイしているため、強化学習を広く実装することができません。そのため、ゲーム会社には、並列プログラミングやさまざまな最適化に資金を投じる必要も生じてしまいます。

強化学習の予測不可能性を軽減させるためにゲーム会社ができること

ゲーム開発者は、強化学習をゲームの重要性の低い部分で導入することができます。最も一般的で低レベルな敵の行動や、ゲームの限られた領域のみでのテストなどは、強化学習を限定的に導入するための候補として適しています。

ゲーム会社以外の企業が強化学習の発展を促進するために行っていること

ゲーム会社はコードやナレッジの共有に消極的であり、多くのゲーム会社は他の分野の企業が独自の強化学習システムを構築するためのツールやプラットフォームを提供し始めました。OpenAIやDeepMind Labは、エンジニアがカスタマイズされた強化学習戦略を開発およびテストできるようにするための強化学習ツールやプラットフォームを提供する代表的な企業です。一方で、UnityやUnrealなどのゲームエンジンメーカーも、それぞれのソフトウェアに簡単に統合できる強化学習ライブラリを提供しています。これらの取り組みにより、特にゲーム開発者にとっては、強化学習への参入が非常に容易になりました。

まとめ

この記事では、強化学習の基本についてと、現実世界で遭遇する大抵の問題と似たような問題が強化学習でも起きていることを解説しました。次に、ゲーム業界における強化学習のいくつかの応用例と、ゲーム開発のワークフローに強化学習を導入するときの課題についてみていきました。最後に、課題を軽減するためのいくつかの方法に触れ、ゲーム業界における強化学習の導入状況について説明しました。