Python を使用して AI をトレーニングしてスネーク ゲームをプレイする方法

PHPz
リリース: 2024-01-23 08:39:06
転載
952 人が閲覧しました

これは、強化学習を使用して AI をトレーニングしてスネーク ゲームをプレイする方法に関する簡単なガイドです。この記事では、カスタム ゲーム環境をセットアップし、Python 標準化された Stable-Baselines3 アルゴリズム ライブラリを使用して AI をトレーニングして Snake をプレイする方法を段階的に説明します。

このプロジェクトでは、強化学習 (RL) アルゴリズムの使いやすい PyTorch ベースの実装を提供する標準化ライブラリである Stable-Baselines3 を使用しています。

まず、環境をセットアップします。 Stable-Baselines ライブラリには多くの組み込みゲーム環境があり、ここでは中央に十字の壁を追加した、古典的な Snake の修正バージョンを使用しています。

Python を使用して AI をトレーニングしてスネーク ゲームをプレイする方法

より良い報酬プランは、食べ物に近い歩数のみに報酬を与えることです。ここで注意が必要なのは、ヘビはまだ円を描いて歩き、食べ物に近づいたら報酬を受け取り、向きを変えて戻ってくることしか学習できないためです。これを回避するには、食べ物から遠ざかることにも同等のペナルティを与える必要があります。言い換えれば、閉ループでの正味の報酬がゼロであることを保証する必要があります。また、場合によってはヘビが餌に近づくために壁にぶつかることを選択する場合があるため、壁にぶつかった場合のペナルティも導入する必要があります。

ほとんどの機械学習アルゴリズムは非常に複雑で、実装が困難です。幸いなことに、Stable-Baselines3 には、自由に使えるいくつかの最先端のアルゴリズムがすでに実装されています。この例では、近接ポリシー最適化 (PPO) を使用します。アルゴリズムがどのように機能するかの詳細を知る必要はありませんが (興味があれば、この説明ビデオをご覧ください)、そのハイパーパラメーターとは何か、またその機能については基本的に理解しておく必要があります。幸いなことに、PPO にはそのうちのいくつかしかありません。次のものを使用します:

learning_rate: 他の機械学習シナリオと同様に、ポリシー更新のステップの大きさを設定します。設定値が高すぎると、アルゴリズムが正しい解決策を見つけることができなくなったり、回復できない方向にアルゴリズムを押し進めたりする可能性があります。設定が低すぎると、トレーニングにかかる​​時間が長くなります。一般的な方法は、スケジューラー機能を使用してトレーニング中に調整することです。

ガンマ: 将来の報酬の割引係数。0 (即時報酬のみが重要) と 1 (将来の報酬は即時報酬と同じ値を持つ) の間です。トレーニング効果を維持するには、0.9 以上に保つのが最適です。

clip_range1 -clip_range: PPO の重要な機能であり、トレーニング中にモデルが大幅に変更されないようにするために存在します。これを減らすと、後のトレーニング段階でモデルを微調整するのに役立ちます。

ent_coef: 基本的に、その値が高くなるほど、アルゴリズムは最適でないさまざまなアクションを探索するように促され、スキームが局所的な報酬の最大値を回避するのに役立ちます。

一般的には、デフォルトのハイパーパラメータから始めてください。

次のステップでは、あらかじめ決められたいくつかのステップをトレーニングし、アルゴリズムがどのように実行されるかを自分の目で確認し、最もパフォーマンスがよい新しいパラメーターを使用してやり直すことです。ここでは、さまざまなトレーニング時間に対する報酬をプロットします。

Python を使用して AI をトレーニングしてスネーク ゲームをプレイする方法

十分なステップを経ると、スネーク トレーニング アルゴリズムは特定の報酬値に収束します。トレーニングを完了するか、パラメーターを微調整してトレーニングを続行することができます。

可能な最大の報酬に到達するために必要なトレーニング ステップは、問題、報酬スキーム、ハイパーパラメーターに大きく依存するため、アルゴリズムをトレーニングする前に最適化することをお勧めします。スネーク ゲームをプレイするように AI をトレーニングした例の最後に、AI が迷路で食べ物を見つけ、尻尾との衝突を回避できることがわかりました。

以上がPython を使用して AI をトレーニングしてスネーク ゲームをプレイする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:163.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!