Angry Birdsをプレイするための機械学習システムをどのように設計しますか?


22

あまりにも多くのAngry Birdsをプレイした後、私は自分の戦略を観察し始めました。各レベルで3つ星を獲得するための非常に具体的なアプローチを開発したことがわかりました。

そのため、Angry Birdsをプレイできる機械学習システムの開発の課題について疑問に思いました。ゲームを操作して鳥を放つのは簡単です。しかし、私が抱えていた1つの質問は、システムの「ビルディングブロック」についてです。

機械学習システムは、単純な概念または問題についての理解で機能するようです。多くの場合、これは入力として機能としてエンコードされます。そのため、システムには、戦略を生成するためにいくつかの高レベルの概念を理解する能力が必要と思われます。

これは本当ですか?また、そのようなシステムを開発する上での課題や困難な部分は何ですか?

編集#1:

ここにいくつかの説明があります。ポイントを最大化する必要があるため、3つ星を取得するのは難しい問題です。これは、2つの非排他的な方法で実行できます。1)使用する鳥の数を最小限に抑えます(未使用の鳥ごとに10,000ポイントを獲得します)。2)ガラス、木材、その他のオブジェクトの破壊を最大化しました。破壊されたオブジェクトごとにポイントが付与されます。1羽の鳥で10,000ポイント以上のオブジェクトを破壊することができます。

「高レベルの概念」についてもう少し説明します。上記のポイントを最大化するには、各鳥の特別な力を使用する必要があります。したがって、それは、マップのレイアウトに応じて、異なる軌道で異なる鳥を発射することを意味します。そして、プレイ中に特定の順序で特定の鳥と特定の領域を破壊する戦略を開発します。

各鳥を使用して特定のエリアを破壊する方法を理解していないと、システムは3つ星を獲得することを学ぶことができなかったようです。それで、そのようなものをどのように管理し、エンコードしますか?システムがこれらの高レベルの概念を学習できることをどのように確認しますか?

回答:


13

ソフトウェアに適切なフックを取得できる(または、独自のモックアップを使用して作業できる)と仮定すると、ここで簡単なこともあれば、そうでないこともあります。これは非常に難しい問題だと思います。carlosdcが述べたように、強化学習(RL)は可能な手段の1つですが、正しいものかどうかはわかりません。

開始するとき、状態空間アクション空間遷移ダイナミクス、および報酬関数が何であるかを定義する必要があります。状態/アクション空間は連続的または離散的であり、遷移ダイナミクスは問題によって与えられるか、数学的にモデル化されます。最後に、報酬関数はa-prioriで与えられるか、またはサンプリングされます(ノイズありまたはなし)。

アクションスペースはシンプルです。現在の鳥を撃つ方向と力です。人間にとって、これは離散的な問題です(マウス/タッチスクリーンはデジタル入力デバイスです)-たとえば、32の可能な方向と10の力があり、320の可能なアクションがあるとします。

報酬関数の導出もかなり簡単です:目標は、鳥の数が最も少ないすべての豚を取り除くことです(OKですので、他のことには余分なポイントがありますが、今のところは無視しましょう)。豚を殺すことからポイントを生成する実際の関数を知っていれば最高です(豚などのサイズに応じてIIRC)-しかし、単一のレベルではこれを完全にモデル化できます。

状態空間と遷移のダイナミクスははるかに困難です。これを正しくモデル化するには、マップのレイアウト全体ゲームの物理学を知る必要があります。遷移ダイナミクスは、「状態xにいてアクションyを実行すると、状態zに着陸する」と述べています。これの難しさを見ることができます。第一に、システムの複雑な物理学は、これを正確にモデル化するのが非常に難しいことを意味し、第二に、最初のラウンド(320)の後でも可能な結果状態が非常に多いことを意味します。物理エンジンには確率論が存在しないと想定しています。この段階では、あきらめて家に帰ると思います。

別のアプローチは、最初から人間が行うように扱うことです。つまり、試行錯誤です。人間は、少なくともそもそも、一連の適切な行動が見つかるまで、ほぼランダムに発砲します(ただし、鳥を豚に送る前にかなり強烈ですが、簡単にコード化できます)。これは多腕バンディットに似ています設定。ここの盗賊の「腕」は可能な行動です。このアルゴリズムは、探索と活用のバランスをとろうとします。つまり、アクション空間を探索し、見つかったときに適切なアクションを活用します。このために、基礎となるダイナミクスについて何も知る必要はありません-アクションと報酬について知る必要があるだけです。それを完全に行うには、すべてのラウンドで可能なアクションごとに腕を用意する必要があります(たとえば、5羽の鳥* 320アクション= 320 ^ 5 =約10 ^ 12アクション)。したがって、アクションスペースは非常に大きくなります。ただし、少し知っいればこれを改善するためにいくつかのトリックを使用できます状態空間について。たとえば、鳥を豚から遠ざけたり、地面に落としたり、またはそれらのいずれかに到達するのに十分な力を持たない行動を除外することができます。また、前のラウンドで豚を殺したことがない場合にのみ、5番目の鳥に到達する必要があるため、アクション状態の一部は実際には不可能です。これは、アルゴリズムMoGoで使用されるアプローチに似ています。これは、マルチアームのバンディット問題を解決する1つのアプローチであるTrees適用される信頼限界に基づいてGoを再生するコンピュータープログラムです。


1
素晴らしい答えです!アクションスペースは、320の可能なアクションよりもはるかに大きいと思います。水平方向の左から垂直方向に向かって、おそらく.7インチ(iPadの場合)の弧によって掃引されるすべてのピクセルは、異なる軌道と結果を生成します。iPadの解像度は132 dpiであるため、約8,000ピクセルからの起動を選択できます。詳細を詳しく説明したくありませんでしたが、アクションスペースを8,000に増やすと答えが変わりますか?より大きなアクションスペースでどのように作業できますか?
B 7

ダイナミクスをシミュレートすることは、まったく別の(そして難しい)問題です。この議論では、ソースコードにアクセスでき、状態情報を正確に取得できると仮定する必要があります。また、報酬機能はあなたが何匹の豚を殺すかだけではありません。レベルで3つ星を獲得するには、もっと難しいことをしなければなりません。質問の編集を参照してください。
B 7

@BSeven原則としていいえ、より大きなプルーニングを行い、より多くの計算能力を使用する必要があるかもしれませんが、大きなアクションスペースは答えを変更しません;-)ただし、これは並列処理の完璧な候補であることに注意してください。星の問題はトリッキーです。これは、キルから星への単純なマッピングがないことを意味しますが、単純にポイントのしきい値を超えることでより多くの星を獲得できると考えました(通常、これはより少ない鳥を使用して行われます)。そうでない場合は、探索の量を人為的に増やして、最適とは言えないパスに早まって落ち着かないようにする必要があります。
tdc

8

いい質問です!

この質問は、この種の問題の自然な手法に関するもののようです。このタイプの問題の自然な手法は強化学習(RL)であると思います 。RLは、累積報酬の概念を最大化するために、エージェントが環境内でどのようにアクションをとるべきかについてです。おそらくRLの最もよく知られているアルゴリズムはQラーニングです。これはこのサイトで強化学習に関する最初の質問だと思います。

分類/回帰としてこれにアプローチしようとすると、あなたが求めていることは真実だと思いますが、これらはこの問題に適したツールとは思えません。これは当然、アクションと結果のシーケンスを考慮する必要があるRL問題です。



4

メタでこれについて言及したばかりです。ビデオゲームのパックマンを解決するために、コザによる遺伝的アルゴリズムの先駆的な使用がありました。彼は感知して行動できるアルゴリズムのプリミティブを構築しました。私が覚えているように、これらはLispのようなツリーで組み合わされて、より大きなアルゴリズムを作成しました。Lispツリーとのクロスオーバーには、アルゴリズム式を表すサブツリーの置換または交換が含まれます。成功関数は、「食べたドット」や「食べたドットにゴーストを加えたもの」、「生き続けた時間」のようなものです。この分野ではまだいくつかの作業があります。この論文の後に続くコザの参考文献があります。これらのタイプの問題では、トレーニング時間が非常に長くなり、「収束」が非常に緩やかになる場合があります。

パックマンのプレイの学習: GallagherとRyanによる進化的、ルールベースのアプローチ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.