machine-learning - 強化学習 - 人工知能 ゲーム プレイ



ゲームAIでの機械学習 (9)

HPA *などの検索や親戚は、おそらくゲーム業界で最も徹底的に理解されているAIのコンセプトです。 彼らは通常、地形の探索アルゴリズムとして考えられ、話されていますが、意思決定樹のような空間内での「経路探索」に使用できることが分かっている人もいます。

https://src-bin.com

昔のゲームでは、シンプルなスイッチ/ケースステートメント(ある意味では)がゲーム「AI」の大半でうまくいっていたと確信しています。 しかし、ゲームが複雑になり、特に3Dの飛躍で複雑なアルゴリズムが必要になってきています。 私の質問は、この時点でゲームAIで使用されている実際の機械学習アルゴリズム(強化学習など)ですか? それとも、主に(私が暴露されている)大学の研究プロジェクトでしかないのですか?

実際の機械学習アルゴリズムではない場合、最先端の商用ゲームAIを推進しているのは何ですか? 可能性の大部分をカバーすることができる、非常に複雑ですが静的(非ML)アルゴリズムですか? もしそうなら、どんな実際のタイプのアルゴリズムが使われますか?

私はいつもこれについて興味がありました、ありがとう!

編集:それについてもう少し考えた後、少し明確にすることができます。 ゲームのエージェントはどのように決定を下すのですか? 実際の学習アルゴリズムをリアルタイムで使用していない場合は、おそらく開発段階でモデル(静的アルゴリズム)を作成するために使用された学習アルゴリズムであり、そのモデルはゲームで意思決定に使用されますか? あるいは、ある意味で手書きでコーディングする意思決定のための静的アルゴリズムでしたか?


Answer #1

Alpha-Beta Pruningは 、シンプルなゲームを含むボードゲームを駆動します。 これは、効率的な検索を可能にするために状態空間を切り取る方法です。 A *検索の変形では、ロボットシミュレーションなどでボードの探索が可能です。どちらも「古典的AI」であり、機械学習アルゴリズムそのものではありません。 SamuelのCheckersプレイヤーTD-Gammonは、それぞれCheckerとBackgammonをプレイするための強化学習を使用する例です。


Answer #2

とにかく、AIは非常に簡単に倒すのが難しくなり、プレーヤにとって楽しいものではないため、少なくともほとんどの消費者向けゲームでは、MLを持つポイントはありません。 ゲームAIの多くの努力は、3つの部分に分かれています。最初のものは、コンピュータを不正にすることです。 AIは通常、プレイヤーがどこにいるのかを知っていて、環境の中で最も良いルートを事前に知っています。 これはそうでなければ必要です。AIはいつも死んでしまっているでしょう。それは大したものではありません。 AIの仕事のもう一つの主な取り組みは、NPCがプレイヤーのために馬鹿にするようにすることです。 AIがプレイヤーに常に勝つように書かれているのは簡単です(海兵隊に面したハーフライフを考えてください)、難しい部分はAIの出現とプレイアビリティのバランスをとっています。 最後の部分は、AIがCPU時間とメモリ使用量の両方で、限られた量のリソースしか消費しないようにすることです。

MLを使用するもう一つのマイナス点は、AIの状態をセッション間で保存する必要があることです。そうしないと、AIは毎回ゼロから開始する必要があります。 PCではこれは問題ではありませんが、コンソールでは状態情報の保存を排除した長期保存が非常に限られていました。

AI 'cheating'の例:Transport Tycoonでは、AI企業は地形の高さを変更することに決して課されませんでした。 私はこれを何年も前にMacに移植したので、これを知っています。

私がやった最初のFPSでは、AIは常にプレイヤーに向いていましたが、方向は正規分布のランダムサンプルを使って重み付けされていました。ほとんどの場合、方向はプレイヤーに向いていましたが、 AIが死んでしまうのを助けました。 これは、A *検索を実行するのに十分なCPUの不具合がある前の日でした。


Answer #3

エージェントはゲームの機械学習モデルで訓練されていません。 それは実際に生産段階ではより高価になり、無意味になります。



Answer #5

多くの場合、AIエンジンで実際の学習をする必要はありません(Kylotanの答えを参照)。

しかし、学習AIアルゴリズムは、非常に特定の&簡単なタスクのために比較的容易に設計することができます。 私の考えは、コンピュータにタスクの方向性を与えることでしたが、パターン認識でコードを作成して、間違いから学ぶこともできました。 AIをこれらのコンポーネントに分解すると、私の弱い心が理解できるものになります。

簡単な例としてTic Tac Toeを使うことができます。 私は数ヶ月前にAIとTic Tac Toeの試合を書きました。 私は単にルールのコンピュータ知識と勝利の動きをブロックする方法を与えました。それだけです。 あなたは自分自身を演奏するようにそれを設定し、過去の動きのリストを保持しているシーンの裏でパターンを認識し、経験を積むにつれて「スマート」になります。

あなたがそれを自分で演奏すれば、10,000ゲーム後にそれを打つのは難しいかもしれません。 このゲームのAIは、ボードの反射や回転を考慮すると、もっと速く学習するように最適化することができます。 しかし、それはまだ学習AIエンジンの実用的な実例でした。

しかしながら、実用的な観点からは、学習アルゴリズムはゲームにおける処理能力に値するものではないかもしれない。 結局のところ、コンピュータは学習されたインテリジェンスを格納するためのリストや何らかの構造を維持しなければならない。 これは、RAMの使用量が増え、コストのかかるルックアップが発生する可能性があることを意味します。 また、多くの動きのあるゲームでは、これが足りることがあります。


Answer #6

様々なAIについて学ぶことに興味があるなら、私はXpilot-AI楽しんでいました。 プロジェクトを実行している人が作成した「スター」ボットは、固定されたルールベースのコントローラーで、これは遺伝的アルゴリズムの製品でした。 それはそれが行った方法です:

  • 彼らは基本的なルールベースのボットを作りました(壁に当たったら、左に曲がり、スラスタをいっぱいにします...)
  • 彼らはボットコントローラをパラメータに分割しました(つまり、壁に近づくように固定されているのではなく、壁の距離<X>、壁のY度の範囲内にあること、スピード> Z ")
  • 遺伝的アルゴリズムを用いて、X、Y、Zなどの最適値を訓練した。
  • ある学習期間の後、値はボットのソースにコピーされ、「完了」と宣言されました。

したがって、能動的な学習はゲームの中で計算上高価になることがありますが、十分にスマートにすることはできないと思うなら、学習アルゴリズムを使用してAIを作成する価値はあります。

遺伝的アルゴリズムのもう一つの利点は、簡単なモードのボットを訓練するために、時間の15%を獲得するボットとして「正しい」結果を定義できることです。


Answer #7

私は、MLがビデオゲームで使用できるケースを作りたいと思います。 以下は、ニューラルネットワークと進化的アプローチを組み合わせて、まったく新しいクラスのゲーム体験を創り出すための非常に先進的な研究を示しています。 私はこのアルゴリズムの発明者であるクラスを取ることを大いに喜んだ: NEAT 。 完璧な解決策ではありませんが、大きな可能性を秘めています。

http://nerogame.org/


Answer #8

私は機械学習が商用ゲームではあまり一般的ではないと考えていますが、注目すべき例の1つはBlack&Whiteです 。これはペットを訓練し、ゲームの住人がプレイヤーを信じさせることでした。





game-ai