Games104 最新のゲーム エンジンに関するメモ 高度な AI

階層型タスク ネットワーク 階層型タスク ネットワーク

ここに画像の説明を挿入します
ここに画像の説明を挿入します
世界状態は世界の主観的な認識であり、現実世界の説明ではありません
センサーはゲーム環境からさまざまな状態をキャプチャする役割を果たします
ここに画像の説明を挿入します
HTN ドメインは階層ツリー構造を保存します タスクと関連付け関係 1
プランナーは世界の状態に従ってドメインからタスクを計画します
プラン ランナー ベース プランナーによって設定されたプランタスクを実行します。タスクの実行中に他の多くの問題が発生した場合、プラン ランナーはすべてのステータスを監視し、別の一連のタスクを計画するようにプランナーに通知します (再計画)
ここに画像の説明を挿入します
プリミティブ: シングルアクション
複合: 複合タスク
ここに画像の説明を挿入します
ここに画像の説明を挿入します
前提条件: ワールド状態のどの状態条件が満たされているかを実行前に検出します。満たされていない場合は false を返します。
タスクが実行中に失敗するかどうかを確認します (ワールドへの読み取り操作)
効果: タスクの実行後にワールドの状態を変更します (ワールドへの書き込み操作)
ここに画像の説明を挿入します
ここに画像の説明を挿入します
タスク それは一連のメソッドで構成されます。各メソッドには独自の一連の前提条件があります。メソッドは BT セレクター関数と同様に、上から下に優先されます。
各メソッドは、一連のタスクはすべて完了しており、BT セレクターのシーケンスと同様です。
ここに画像の説明を挿入します
ここに画像の説明を挿入します
HTN ドメインは、コア ノードであるルート ノードとしてルート タスクを定義する必要があります。
ここに画像の説明を挿入します
ここに画像の説明を挿入します
世界の状態に従って、次から始まる現在のターゲット タスクを選択します。 < /span> 利点: < /span> 2. 計画 リンクは非常に長く、不確実性の高い環境では簡単に失敗します。途中で再計画につながる 1. Precondition と Effector を設定する場合、数が多く重複しているため、タスクが実行されない可能性がありますが、設計者がそれを見つけるのは困難です。論理的な抜け穴をチェックするには、いくつかの静的検査ツールが必要です。 欠点: 3. BTよりも実行効率が高い(プランニングにより、ツリーをたどるプロセスが軽減され、AIがティックを目覚めさせると、ルートから再度実行する必要があります。htn)世界が変わるか、プランが完了または無効化されない限り、実行されません。再トラバースされる可能性があります) 2. デザイナーが長期的な行動を計画するのに役立ちます 1. BT の抽象化と要約に非常に優れたソリューションです 再計画の理由: 1. 計画がない 2. 計画が実行されたか失敗した 3. 認識されている世界の状態が変化した Planner の結果に従ってプランを順番に実行します。失敗する可能性があり、 再計画が必要 最後に、ドメインを検索してプリミティブ タスクの文字列を出力するのと同じです。 Precondition が計画を満たさない場合、False を返すことしかできず、計画が完了するまでずっと戻ることができます。ルート タスク 再計画は、タスクが失敗した場合に状況を処理することです。
ここに画像の説明を挿入します
プラン展開のプロセスは非常に高速ですが、各プリミティブ タスクにはワールド状態を変更するエフェクトがあるため、実際にはワールド状態は変更されません。 、これは後続のタスクに影響を与える可能性があります。したがって、ここでの方法は、世界状態をコピーし、このコピーを変更して推測し、段階的に計画を開始することです。これは、世界状態のプレビューを実行し、すべてのタスクが成功すると仮定するのと同じです。

ここに画像の説明を挿入します

ここに画像の説明を挿入します
ここに画像の説明を挿入します

ここに画像の説明を挿入します
ここに画像の説明を挿入します

ここに画像の説明を挿入します

ここに画像の説明を挿入します






目標指向の行動計画

ここに画像の説明を挿入します
目標セット: 達成可能なすべての目標。目標は Htn で明示的に定義されていません。目標はタスク ツリーから表示されます (コメントに記述されています)。 GOAL の目標はすべて数学的に表現できます。
計画: 計画の問題
ここに画像の説明を挿入します
各目標は、一連のアクションが完了した後に達成されると予想される世界の状態です。 . 定量的に表現すること。各目標は、アクションの完了後にいくつかのワールド状態 (通常は bool 値) を満たす必要があります。これは単一の状態ではなく、目標状態の組み合わせ (状態のコレクション) です。
ここに画像の説明を挿入します
ここに画像の説明を挿入します
プリミティブ タスクとの比較, コストが増加しました。設計者は動的プログラミングに使用されるコストを定義します。
ここに画像の説明を挿入します
各アクションを逆方向に計画します。
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
現在のターゲット世界の状態と外部世界の状態を比較して、何がそうでないのかを見つけます。満足 状態は、不満足状態のスタックに追加されます。
最初の不満足状態を比較して、どのアクション出力効果が不満足状態を上書きして移動できるかをアクション セット内で見つけます。 stack
aciton の前提条件が満たされない場合、満たされていない状態が順方向に進められ、逆に Unsatisfied 状態のスタックに追加され、アクションが計画スタックに追加されます。< a i =8> 最終目標は、Unsatisfied 状態スタックをクリアすることであり、計画スタック内のアクション コストが最小になることが期待されます

ここに画像の説明を挿入します

ノード: 状態の組み合わせ
egde: 可能なすべてのアクション
距離: アクションに必要な消費量
ここに画像の説明を挿入します
a*ヒューリスティック関数: 現在の状態の組み合わせに近いパスを選択します
ここに画像の説明を挿入します
利点:
1. HTN と比較して、GOAP はより動的です< a i=6> 2. 本当の意味での目標と行動を分離する (FSM、BT、HTN、行動と目標は 1 つずつロックされ、GOAP は同じ目標に対して複数の行動ルートを持つ可能性があり、設計者の想像を超える可能性があります) 3. HTN 構成におけるデッドロックやその他の問題を回避できる 欠点: 1. 非常に複雑で計算量が多い HTN より大きい、BT および FSM 2. GOAP にはゲーム ワールドの定量的な表現が必要です。複雑なゲームではブール変数を使用して世界の状態を表現するのは困難です。 通常、従来のスタンドの場合- 単独ゲーム、1V1 または少量の AI ゲームがより適しています





モンテカルロツリー検索

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

モンテカルロは、ランダム サンプリングに基づくアルゴリズムです。
ステートとアクションは、Go の問題を数学的問題に抽象化するために使用されるメソッドです。
ステート : 現在のステート現時点でのすべての駒の位置など
アクション: 実行可能なアクション、つまり移動
ここに画像の説明を挿入します
あらゆる可能性を判断し、最も有利な方法を選択します。それを行う
ここに画像の説明を挿入します
ここに画像の説明を挿入します
Q シミュレーション勝利数
N シミュレーション数
Q / N 状態の質を判断する< a i=8> 親ノードを更新するには、シミュレーション結果を逆に伝播する必要があります。1. すべての可能性が完全には拡張されていない、最も可能性の高い子ノードを選択します。< a i=10> 2. 新しい探索を展開して追加します 3. シミュレーションを実行し、結果をシミュレートして、探索方向の品質を決定します 4.結果を取得してから、値を親ノードに転送します
ここに画像の説明を挿入します

ここに画像の説明を挿入します



ここに画像の説明を挿入します
ここに画像の説明を挿入します

拡張可能なノード このノードの可能性はまだ尽くされていません
ここに画像の説明を挿入します
エクスプロイト開発: 勝率の高いポイントを見つけることを優先します。つまり、N 値と Q/N 値が大きいノードを選択します。
探索: N 値が小さい探索を優先します。
ここに画像の説明を挿入します
UCB アルゴリズム: 開発と探索のバランスをとるために使用されるアルゴリズム
優先順位 いずれかを選択してください
C は、戦略的バランスを調整するために使用されます。C の値が大きいほど、より積極的になります (探索する傾向があります)。 、C 値が小さいほど、より保守的になります (開発傾向)
ここに画像の説明を挿入します
ルートから開始して、最初の円内のすべての子ノードの UCB 値を比較し、次を使用します。次の探索方向として最大値ノードを選択し、最初の拡張可能ノード ノード (完全には拡張されていない) まで進み、現在選択されているノードとして拡張されます。
BFS と同様、ただし、ルートから開始され、毎回ダウンします
ここに画像の説明を挿入します
パフォーマンスに応じて、1 つまたは複数の可能性があります。
ここに画像の説明を挿入します
各ノードは勝利と敗北の結果をシミュレートし、更新します親ノードを逆順に表示 (各ノードの Q と N を順番に重ね合わせます)
ここに画像の説明を挿入します
検索を設定します 回数またはメモリ サイズまたは計算時間を停止条件として使用します
ここに画像の説明を挿入します
。停止後、 ツリー
が取得されます。最初の子ノードでは、さまざまな戦略に従って選択します:
最大子ノード: 1 つを選択します。
堅牢な子: 最も多くのアクセスがある子ノード、つまり Q/N ではなく最大の N 値を持つ子ノードを選択します。
最大堅牢な子: 最大の Q と N、そうでない場合は、それが表示されるまで実行を継続します。
安全な子: LCB 下限信頼限界 (下位の実行を考慮してください)間隔) は主に、少数のサンプルの選択に対するペナルティ、または C の設定に問題があります。
ここに画像の説明を挿入します
利点:
1. AI をより柔軟にする (乱数があります)
2. AI の意思決定は受動的な行動ではなく自己行動であり、設計者の想像を超えています。
短所:
1 . 複雑なゲームでは、勝敗を定義することが難しく、意思決定が勝敗に与える影響
2.計算の複雑さが非常に高い

MCTS はすべてのゲームに適しているわけではありませんが、ターンベース (あなたと私) に適しており、各アクションには明確な出力結果があります (ターンベースの戦闘ゲーム、相手の失血量を正確に計算できるスキルの出力、何が起こるかなど)状態変更) ゲームでは、他のメソッドと組み合わせてサブシステムとして存在することもできます。

機械学習の基礎

ここに画像の説明を挿入します
ここに画像の説明を挿入します
本質は画像認識などの分類子です
ここに画像の説明を挿入します
本質はユーザー ポートレート構築などのクラスタリングです
ここに画像の説明を挿入します
ラベルのない大文字と小文字の入力を減らしますデータ、主に小規模なサンプル学習の方向です
ここに画像の説明を挿入します
正しいか間違っているかを判断するための監視や判断メカニズムはありません。 AI に自己最適化と反復を行わせ、報酬を通じて独自の戦略を形成させます。
ここに画像の説明を挿入します
これは基本的に試行錯誤の検索です。より困難なことの 1 つは、報酬が遅延報酬であることです。マウスが最後まで到達したときの報酬は遅延せず、一歩を踏み出すたびに報酬と罰のメカニズムがトリガーされることもありません
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

マルコフ決定プロセス

現在の戦略の状態 s にいてアクション a を実行するとき、新しい状態に到達する可能性の数は確率変数です。

Pollcy: 戦略ブラック ボックスは AI システムの中核でもあり、状態が入力されると、すべての可能なアクションの確率を出力し、さまざまなモデル最適化の中核でもあります。

総報酬: γ は短期的な利益と長期的な利益のバランスをとるために使用され、各ステップの操作後に得られる報酬に γ を乗じて確率を調整します。

ここに画像の説明を挿入します

高度なゲーム AI を構築する

ここに画像の説明を挿入します
以前は、アルゴリズムは人間によって設計されており、人間の期待を超えることはありませんでした。機械学習はゲームの動作に無限の可能性をもたらします
ここに画像の説明を挿入します
ゲームの観察の構築に重点が置かれています。ゲームの状態を定量的に記述し、 ポリシー
ここに画像の説明を挿入します
状態: 世界状態の説明
アクション: コンピューター AI が何を指示したいのかを繰り返し最適化することです。やるべきゲーム
報酬: アクションに対する報酬を設定します。最も単純なのは勝敗の判定です。
NN 設計: ニューラル ネットワークのトポロジーを構築します。 単独で学習してきた AI はどんどん強くなりますが、能力の特化(オーバーフィッティング)につながります。 a> 強化学習の上限は非常に高いですが、学習は非常に複雑でコストが非常に高くなります。 プレイヤーデータが大量にある場合は、最初に SL (教師あり学習) を使用することをお勧めします。収束が早いため、データ量が十分に大きく、十分であれば、AI は到達することができます。良いレベル ME Main Exploiters: メインブランチ MA の欠点を特に探す LE リーグのエクスプロイター: すべてのエージェントの弱点を特に探します MA メイン エージェント: 毎日 35% を自分とプレイし、次に LE と ME で 50% をプレイし、最後に過去の MA ヒットでプレイします 15% KL 発散数値差エントロピー (2 つの分布間の差がエントロピーを形成します) から開始します。これは、2 つの確率分布間の距離を測定するために使用されます。差が小さいほど、エントロピーが 2 つを表します。確率分布が類似しているほど、AI が人間の操作をどの程度学習したかを測定するために使用されます。 複雑なゲームの場合、収束速度が非常に遅いため、トレーニングを最初から直接開始することはできません。まず、人間のデータを使用します。基本的な比較的優れたモデルをトレーニングします。教師あり学習 フィードバックとメモリをシミュレートします。 、複数回使用された戦略は記憶され、 記憶が失われます 可変長の大量のデータを処理します。 畳み込みニューラル ネットワーク: さまざまな画像を処理します。 多層ニューラル ネットワーク: 処理が修正されました-length データ 5. デコードとは、エンコードされた結果を人間が理解できるものに変換することです 4. 結果は判読不能、完全なエンコード 3. すべての結果を LSTM に統合します 2. さまざまなニューラル ネットワーク タイプ、MLP、Transformer、ResNet を通じて 1. さまざまなゲーム内データ入力を通じて、スカラー機能、エンティティ、ミニマップを通じてなど ボトムアップから見る
トレーニング戦略: トレーニング戦略
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します






ここに画像の説明を挿入します

ここに画像の説明を挿入します

ここに画像の説明を挿入します

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します


ここに画像の説明を挿入します
ここに画像の説明を挿入します




ここに画像の説明を挿入します

ここに画像の説明を挿入します
ここに画像の説明を挿入します

ここに画像の説明を挿入します
報酬が十分に密集していれば、各ステップまたは数回のクリックで報酬の結果を判断できます。強化学習を使用すると、優れた AI を訓練するのが簡単です。探索や謎解きタイプの場合は、アクションと結果は無関係であり、強化学習の効果は比較的良好です。ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/Mhypnos/article/details/133612440