プロジェクト共有 | MindSpore は強化学習の新しい環境と新しいアルゴリズムに接続されています

著者: **** Yan Kexi、Jing Yuheng、Liu Zhihao、Feng Xiaokun、Lei Shiqi-**中国科学院オートメーション研究所

まとめ

この強化学習実験のために、私たちのチームが選んだトピックは「MindSpore による強化学習へのアクセスのための新しい環境/新しいアルゴリズム」です。マルチエージェント連携シナリオ用のゲームテスト環境 SISL (スタンフォード インテリジェント システム研究所) を MindSpore プラットフォームに接続し、この実験環境で QMIX および MAPPO アルゴリズムのパフォーマンス ベンチマーク テストを実装しました。この共有では、トピックの選択、環境、アルゴリズム、実験結果と結論の 5 つの側面を中心に、対応する導入と分析を実行します。

 

プロジェクト関連のコードについては、添付ファイルを参照してください。

https://gitee.com/lemonifolds/reinforcement/tree/c03e5f8e6104b5880fdfa53d579332078c7dfb99

01

トピックの紹介

強化学習は、エージェントと環境の間の相互作用プロセスを分析することによって、累積利益を最大化するための最適化戦略を学習するシーケンスの意思決定を研究する学問です。その中でも、環境は強化学習における重要な要素であり、アルゴリズム モデルの入力データ形式を直接決定するだけでなく、強化学習の研究タスクとも密接に関係しています。一部の古典的な強化学習アルゴリズムには、多くの場合、いくつかの古典的な検証環境が伴います。たとえば、単一エージェントの知覚および意思決定タスクでは、その古典的なアルゴリズム DQN (ディープ Q ラーニング) [1] が、このタスクの古典的な環境である Atari ゲームで検証されました。および不完全な情報のマルチプレイヤータスク 混合ゲームタスクについては、その代表作である AlphaGo[2][3]や AlphaStar[4]では、対応する検証環境 (Go、StarCraft) に応じてアルゴリズムの名前も付けられています。これは、強化学習の分野における検証環境の重要な役割を示しています。

強化学習で使用される環境にはさまざまな種類があります。代表的な環境には、Gym[5]、MuJoCo[6]、MPE[7]、Atari[1]、PySC2[8]、SMAC[9]、TORCS、ISAAC などが含まれます。現在、StarCraft MindSpore アーキテクチャは、Gym と SMAC (StarCraft Multi-Agent Challenge) の 2 つの環境に接続されており、それぞれシングルエージェント強化学習シナリオとマルチエージェント強化学習シナリオを指向しています。後者については、StarCraft ゲームの複雑かつ高次元の状態、アクション、意思決定空間により、マルチエージェント強化学習アルゴリズムにとって重要で挑戦的なベンチマークとなっています。ただし、実際の科学研究の実践では、新しいアルゴリズムを提案するとき、最初にいくつかの小規模な環境 (ジムの Atari ゲーム環境など) で検証することがよくあります。これに基づいて、私たちのチームはマルチエージェント シナリオ用の小規模なテスト環境である SISL (スタンフォード インテリジェント システム研究所) を選択し、それを MindSpore プラットフォームに接続して、より多様なマルチ インテリジェンス エクスペリエンス認証環境をプラットフォームに提供しました。さらに、SISL 環境用に 2 つの典型的なマルチエージェント強化学習アルゴリズム、MAPPO [10] と QMIX [11] を実装し、対応するベンチマーク テスト結果を提供しました。

次に、この共有では、まず、接続されている SISL 環境 (第 2 章)、および使用される QMIX および MAPPO アルゴリズム (第 3 章) について予備的に説明します。次に、環境にアクセスする実装プロセスと、得られたベンチマーク テストの結果を説明します。そして、実験で遭遇した問題が表示され、分析されます (第 4 章)。最後に、実験結果に基づいて、対応する結論が得られます (第 5 章)。

02

環境紹介

PettingZoo[12] は、マルチエージェント強化学習研究で一般的に使用される Python ライブラリです。SISL (Stanford Intelligent Systems Laboratory) は、Multiwalker、Pursuit、Waterworld の 3 つのサブ環境を含む環境パッケージの 1 つです。

PettingZoo の基本的な使用法は Gym と似ています。以下は、Waterworld 環境でランダムに動作するエージェントを構築するコード例です。

from pettingzoo.sisl import waterworld_v4
env = waterworld_v4.env(render_mode='human')

env.reset()
for agent in env.agent_iter():
    observation, reward, termination, truncation, info = env.last()
    if termination or truncation:
        action = None
    else:
        action = env.action_space(agent).sample()
    env.step(action)
env.close()

以下は、SISL の 3 つのサブ環境の紹介です。

2.1マルチウォーカー

マルチウォーカー環境では、二足歩行ロボットは荷物を運んで右に歩こうとします。下の写真に示すように、複数のロボットが大きな荷物を運び、連携して作業する必要があります。

写真マルチウォーカー環境図

各エージェントは、前の時点と比較したパッケージの位置の変化を乗算した forward_reward の戻り値を受け取ります。少なくとも 1 つのパッケージが落下するか、パッケージが地形の左側の境界を超えると、環境は終了し、各エージェントは -100 の恩恵を受けます。パッケージが地形の右端から落ちた場合、環境も終了し、ゲインは 0 になります。

エージェントが倒れた場合、追加の -10 の恩恵を受けます。 terminate_on_fall = False の場合、エージェントがダウンしても環境は終了しません。それ以外の場合、エージェントがダウンすると環境は終了し、-100 の利益が得られます。 Remove_on_fall = True の場合、落ちたエージェントは環境から削除されます。各エージェントは、頭部を水平に保つために -5 倍の頭部角度変化も受け取ります。 shared_reward = True の場合、各エージェントの個人報酬が平均されて各エージェントに返されます。

各エージェントは 2 本の脚の 2 つの関節に力を加えるため、その連続的な動作空間は 4 次元ベクトルになります。各エージェントの観測空間は、環境や周囲のエージェントに関するノイズの多いレーダー データ、自身の体の各関節の角度や速度、その他の情報を含む 31 次元のベクトルです。

2.2 追求

追跡環境では、下の図に示すように、一部の追跡エージェントは逃走者を追跡して取り囲もうとします (赤は制御された追跡エージェント、青は逃走者のランダムな動きです)。

写真

追求環境図

デフォルトでは、16X16 のグリッドに 30 人の逃走者と 8 人の追撃者が配置され、マップの中央に障害物 (白い部分) があります。エージェントがエスケープ者を完全に取り囲むと、取り囲む各エージェントは 5 の利益を受け、エスケープ者は環境から削除されます。エージェントが脱走者に接触するたびに、0.01 の利益も得られます。

各エージェントには、上、下、左、右、停止という個別のアクション スペースがあります。各エージェントの観察空間は、その周囲の 7X7 グリッドであり、図ではオレンジ色で表されています。

2.3 ウォーターワールド

ウォーターワールド環境は、古細菌が環境内で生き残ろうとする条件をシミュレートします。以下の図に示すように、各エージェントは食物を摂取し、毒素を避けるように努める必要があります。

写真

ウォーターワールド環境図

入力パラメーターによっては、エージェントが食物を消費するために協力する必要がある場合があるため、モデルは協力的であると同時に競争的である可能性があります。同様に、利点もエージェントごとに異なることも、平均化することもできます。環境全体は連続した 2 次元空間であり、その利益は食物や毒素への曝露に基づいています。

各エージェントの行動空間は2次元ベクトル、すなわち水平方向と垂直方向の前進(加速度)である。各エージェントの観察空間は、各センサーが受け取る、食物、毒素、他のエージェントまでの距離、および食物や毒素との衝突の有無に関する情報であり、合計の寸法はパラメータに応じて写真または になります。写真

03

アルゴリズムの紹介

ここでは、実験で使用したMAPPO[10]アルゴリズムとQMIX[11]アルゴリズムを紹介します。

3.1 MAPPOアルゴリズム

MAPPO の正式名は、Multi-Agent Proximal Policy Optimization です。名前からわかるように、MAPPO アルゴリズムは、マルチインテリジェンス環境で拡張された古典的な強化学習アルゴリズムである PPO [13] アルゴリズムです。マルチエージェント環境の場合、多くの場合、写真< > 7 タプルを使用して記述されます。このうち、n はエージェントの数を表し、S は環境の状態空間を表します。これは、エージェント i がグローバル状態 s から取得したローカルな観察を表します写真写真完全に観察可能な環境の場合、写真) は、写真共同アクションが与えられた場合に s から s' に変換される確率を表します。 R(s,A) は、写真割引係数を表します。

MAPPO アルゴリズムは、古典的なアクターと批評家の構造を使用します。これには、ポリシー ネットワーク写真と価値関数写真(それぞれアクターと批評家として) という 2 つの別個のニューラル ネットワークをトレーニングする必要があります。

ポリシー ネットワーク の場合写真、観測 o_i からアクション分布 a_i へのマッピングを学習するために使用され、対応する最適化目標は次のとおりです。

写真

写真このうち、B はGAE [14] 手法を用いて計算されるバッチサイズのサイズを表し、写真ポリシーのエントロピーを表し、写真重み係数のハイパーパラメータを表します。

写真状態 S から報酬推定値へのマッピングを学習するために使用される値関数 の場合写真、対応する最適化目標は次のとおりです。

写真

ここで、写真は計算された割引収益を表します。 MAPPO は集中トレーニングと分散実行トレーニング手法を採用しているため、バリュー関数はグローバルな状態を直接分割できますが、ポリシー関数は写真各エージェントのローカルな観測情報のみ写真を処理できます。

上記の最適化目標式に基づいて、MAPPO の演算プロセスを取得できます。元の記事 [10] で提供されている巡回 MAPPO アルゴリズムの処理プロセスは次のように構成されます。

写真

3.1 MAPPOアルゴリズム

このセクションでは、u はアクションを表すために使用され、u は写真アクション観察履歴を表すために使用されます。 QMIX アルゴリズムの設計思想は VDN と同様であり、グローバルなアルゴリズムを計算することで写真それぞれが得られることが期待されます写真。する必要があるだけです

写真

それは要件を満たします。上の式が成り立つためには、写真Q_i に関して単調性がなければなりません。

写真

QMIX のニューラル ネットワーク構造を次の図に示します。写真QMIX フレームワーク図

写真図 (c) に示すように、エージェント i ごとに、それを計算するために使用されるエージェント ネットワークがあります。このネットワークは DRQN ネットワークです。つまり、DQN の完全接続層が GRU に置き換えられ、入力は時間 t でのエージェントの観察写真と時間 t-1 でのアクションです写真

ハイブリッド ネットワークは、写真図 (a) に示すように、エージェント ネットワークから n 個の出力を受け取り、それらを単調に混合するフィードフォワード ニューラル ネットワークです。その結果が出力となります。ハイブリッド ネットワークの重みは、別のスーパー ネットワークによって生成されます。スーパー ネットワークは、グローバル状態 s_t を入力として受け取り、ハイブリッド ネットワークの層の重みを生成します。各スーパーネットワークは、ハイブリッド ネットワークの重みが負でないことを保証する絶対値アクティベーション関数を備えた単一の線形層で構成されます。

QMIX ネットワークは、次の損失を最小限に抑えるためにエンドツーエンドでトレーニングされます。

写真

このうち、写真写真対象ネットワークのパラメータです(DQNと同様)。

04

実験結果

このセクションでは、上記の SISL 環境と MAPPO および QMIX アルゴリズムの紹介に基づいて、具体的な実験分析を実行します。まず、SISL 環境のアクセス プロセス (セクション 4.1) を紹介します。次に、元の MindSporeRL ウェアハウスで提供されている MAPPO および QMIX アルゴリズムに基づいて、変更と調整を行った後、新しくアクセスした環境にそれらを適用してみます。 SISL 環境でのテスト実験(セクション 4.2 および 4.3)が完了すると、それに対応するエンジニアリングの改善点、実験結果および考察を表示および紹介します。

4.1 SISL環境へのアクセスプロセス

pip install pettingzoo[sisl] コマンドを使用して、SISL の基本環境ライブラリをインストールします。 もちろん、次の方法で基本環境をローカルにインストールすることもできます。

cd ~/reinforcement/mindspore_rl/environment
git clone https://github.com/Farama-Foundation/PettingZoo.git
cd PettingZoo
pip install -e .[sisl]

この基本環境に基づいて、MindSpore Reinforcement の既存環境のカプセル化モードに従って SISL をカプセル化します。具体的なコード実装については、sisl_environment.py を参照してください。

SISL 環境の Wrapper クラスは主に次のクラスを継承します。

from mindspore_rl.environment import Environment

MindSpore Reinforcement および MindSpore のトレーニング フレームワークと互換性を持たせるために、SISL 環境の Wrapper クラスで次のデータ構造を継承または使用します。

import mindspore as ms
from mindspore.ops import operations as P
from mindspore_rl.environment.space import Space

MindSpore Reinforcement のコード フレームワークを観察した結果、さまざまなアルゴリズムが特定の環境にのみ適応しており、すべての環境やアルゴリズムが普遍的ではないことがわかりました。たとえば、MAPPO アルゴリズムは MPE 環境にのみ適用されるため、このアルゴリズムは連続ベクトル状態空間と離散アクション空間のみをサポートします。さらに、MPE 環境の実装では複数のプロセスが使用されるため、MAPPO アルゴリズムも複数のプロセスに対して実装されます。特殊な適応。別の例として、QMIX アルゴリズムは SMAC 環境にのみ適合するため、このアルゴリズムは連続ベクトル状態空間と離散アクション空間のみをサポートします。SMAC 環境は単一プロセスであるため、QMIX アルゴリズムは単一プロセスにのみ適しています。したがって、MindSpore Reinforcement の既存のアルゴリズムは、離散および連続の状態空間またはアクション空間を普遍的にサポートすることはできず、状態空間は通常、画像などの他の形式の入力にのみ適しています。CNN などの追加のバックボーン ネットワークを実装する必要があります。さらに、アクセス環境には、アルゴリズムの単一プロセスまたはマルチプロセスの実装に基づいた特定の適応も必要です。

QMIX アルゴリズムに適応するために、SISL 環境ラッパー クラス SISLEnvironment の単一プロセス バージョンを実装し、MindSpore Reinforcement カプセル化形式に従って環境のすべての API をカプセル化します。

MAPPO アルゴリズムに適応するために、SISL 環境のマルチプロセス バージョン、ラッパー クラス SISLMultiEnvironment、および Python ベースのマルチプロセス ライブラリを実装して、マルチプロセス スケジューリング クラスEnvironmentProcessNew を実装し、環境のすべての API をカプセル化します。 MindSpore Reinforcement カプセル化形式に従っています。

4.2 MAPPOアルゴリズムベンチマークテスト実験

reinforcement_MAPPO
├─ example
│  ├─ make_plot.py
│  ├─ scripts
│  │  ├─ mappo_train_log.txt
│  │  └─ run_standalone_train.sh
│  └─ train_SISL.py
└─ mindspore_rl
   ├─ algorithm
   │  ├─ config.py
   │  ├─ config_SISL.py
   │  ├─ mappo.py
   │  ├─ mappo_replaybuffer.py
   │  ├─ mappo_session.py
   │  ├─ mappo_trainer.py
   │  ├─ mappo_vmap.py
   │  ├─ mappo_vmap_trainer.py
   │  ├─ mpe
   │  ├─ mpe_environment.patch
   │  ├─ mpe_environment.py
   │  ├─ on-policy
   │  ├─ sisl_environment.py
   │  └─ __init__.py
   └─ environment
      └─ sisl_environment.py

MAPPO アルゴリズムによって実装された SISL 環境コード ツリー

MAPPO**** アルゴリズムは環境から切り離されています

Shengsi Mindspore の MAPPO は MPE 環境にネイティブに接続されており、チーム メンバーの試みにより、MPE 環境で直接実行でき、環境との対話、トレーニング、パラメータ更新などの手順を正常に完了し、正確性を保証します。 MAPPO アルゴリズム コードの。 SISL には、Multiwalker、Pursuit、Waterworld などのさまざまなマップが実験環境としてありますが、config.py ファイルを直接変更しても、SISL 環境では正常に実行できません。チーム メンバー間の調査と議論の結果、MindSpore フレームワークでの MAPPO 実装では、MAPPO アルゴリズムが環境と高度に結合していることがわかりました。たとえば、MAPPOSession.py では、エージェントの数、状態ディメンション、観察ディメンション、実行可能なアクションディメンションなどのすべての環境関連変数が、sisl_environment.py と同様に環境変数ではなく特定の値として実装されます。明示的に定義されている 構成パラメータであるべきエージェントの数などの変数は削除されます。この明示的な定義により、config.py ファイルへの変更がアルゴリズム内に渡されることが防止され、その結果、機能入力ネットワークのインターフェイスで実行時エラーが発生します。

オリジナルのアルゴリズムを改良し、環境からの切り離し部分を追加しました。これにより、フレームワークが config.py ファイルから対応する環境情報を正しく読み取り、その環境情報を正しく使用してアルゴリズムに渡すことができるようになり、環境との切り離しを真に実現できます。 MAPPO アルゴリズム。

SISL 環境へのMAPPOアクセス****

上記の作業が完了すると、MAPPO アルゴリズムが正しく、構成ファイルのパラメーターをアルゴリズムに正しく渡すことができることを確認できます。その後、チーム メンバーは SISL 環境への接続を開始しました。 MindSpore フレームワークでは、異なるアルゴリズムが異なる環境に対応し、異なる実行を行います。デバッグ プロセス中に、マルチスレッド バージョンの SISL 環境では、マルチスレッド スレッドの数と各スレッドに存在する環境の数を直接変更できないことがわかりました。プロセスの数やプロセスの数は直接変更できません。環境によっては、コードの実行中に、たとえば numpy.int32 が int32 と互換性がないため、アルゴリズムが停止することがあります。変換; 環境から返されるのはアクションのワンホット エンコーディングであり、トレーニングやその他の問題のために定義されたマッポ ネットワークに直接入力することはできません。

データ型と環境との相互作用の問題を解決した後、チーム メンバーは SISL 環境で MAPPO をトレーニングしました。しかし、デフォルトのトレーニング コードによれば、プログラムは 19 エピソードのトレーニングごとにエラーを報告して終了しました。チーム メンバー間で議論し、行ごとにデバッグした後、元のトレーニング コードによれば、各トレーニング後にエピソードを終了するための切り捨てプロンプト情報が含まれていないため、次のトレーニング ラウンドが開始されると、前回の環境が使用されます。ラウンドはその状態で開始され、環境の前のラウンドの実行ステップ数はクリアされません。 Pursuit 環境は実行ステップの最大数を持つように設定されているため、環境フレームワークに従って、環境の最大実行数まで実行した後、sisl_environment.py の run 関数内のすべての報酬と観測値が実行されます。最終ステップの環境はクリアされますが、実行関数はクリアされません。クリアされた変数は処理されないため、関数の実行中に環境で指定された最大ステップ数に達すると、プログラムがクラッシュします。これが原因でもあります。トレーニングの 19 エピソードごとにプログラムがエラーを報告するのはなぜですか。そこで、チーム メンバーは、設定された最大数に達するかどうかを確認するテストを追加しました。最大数に達すると、環境は打ち切り信号を送信し、実行機能を終了して環境をリセットします。

上記の問題を解決した後、MAPPO アルゴリズムは SISL 環境で正常に実行できるようになりました。 MAPPO に必要な状態情報をすべてのエージェントの観察のスプライシングとして設定し、各エピソードに 500 のタイム ステップが含まれるように MAPPO 実験を実行し、トレーニング中に報酬曲線と損失曲線を描画します。トレーニングが完了すると、次の結果が得られます。

写真

4.3 QMIXアルゴリズムベンチマークテスト実験

reinforcement_QMIX
├─ example
│  ├─ qmix
│  │  ├─ eval.py
│  │  ├─ scripts
│  │  │  ├─ run_standalone_eval.sh
│  │  │  └─ run_standalone_train.sh
│  │  └─ train.py
│  └─ __init__.py
└─ mindspore_rl
   ├─ algorithm
   │  ├─ qmix
   │  │  ├─ config.py
   │  │  ├─ qmix.py
   │  │  ├─ qmix_session.py
   │  │  ├─ qmix_trainer.py
   │  │  ├─ _config.py
   │  │  ├─ __init__.py
   │  └─ __init__.py
   └─ environment
      ├─ sc2_environment.py
      └─ sisl_environment.py

QMIX アルゴリズムによって実装された SISL 環境コード ツリー

QMIXアルゴリズム修正

実装中に、MindSpore フレームワークでは、元の QMIX アルゴリズムとそれに対応する実験環境 SMAC が実行できず、eval.py ルーチンもエラーを報告して実行できないことがわかりました。したがって、アルゴリズムの正確さと環境の実現可能性をテストするために、まず QMIX アルゴリズムとフレームワークに実装されている対応する環境を修正しました。

MindSpore フレームワークを使用するのは初めてだったので、チーム メンバーは、実験中にフレームワークのエラー メッセージが明確ではないことに気づきました。チームメンバー間の議論と協力の結果、これはフレームワーク内で継承とオーバーロードが繰り返し使用されていることと、計算のために Python 言語を cpp 計算グラフに変換するための基礎となるコンピューティング ロジックが原因であることが判明しました。同じエラーが報告されるため、フレームワークのデバッガが対応するエラー位置を常に返せるわけではありません。

行ごとのデバッグを通じて、実装された QMIXTrainer クラスでは save_reward が返されるべきであるが、SMAC 環境の Step_info が誤って返されることがわかりました。デバッグ後、SMAC 環境の 1 つで QMIX アルゴリズムを正しく検証できます。


QMIX アルゴリズムを環境から切り離す

 

チーム メンバーのこれまでの経験に基づいて、SMAC には、Shengsi MindSpore に実装されている 2s3z や 3m、3s5z などの実験環境としてさまざまなマップがあります。ただし、ドキュメントの説明に従って対応する config.py ファイルを変更すると、元のプログラムを直接実行できなくなります。チーム メンバー間での調査と議論の結果、MindSpore フレームワークの QMIX 実装では、QMIX アルゴリズムが環境と高度に結合していることがわかりました。たとえば、QMIXTrainer では、エージェント数 Agent_num、観測次元 obs_shape、実行可能アクション次元など、ほぼすべての環境関連変数が環境変数ではなく特定の値として実装されます。


  • 上記のevaluate()関数はトレーニングフェーズやテストフェーズで再利用されるため、上記の問題が発生します。機能的な混乱を避けるために、ここでそれらを分離します。

  • Agent_num、obs_shape、およびその他の変数は環境に関連しており、アルゴリズムとは何の関係もありません。ローカル変数が追加され、MindSporeRL のドキュメントに従ってコードがリファクタリングされ、アルゴリズムを環境から切り離し、フレームワーク仕様に準拠しました。

要約すると、フレームワークのデバッグと修正を通じて、環境とアルゴリズムの間の過剰な結合の問題を解決し、QMIX アルゴリズムと SMAC 環境の真の分離を達成しました。また、フレームワークの後続のユーザーの便宜を図るために、元のコード リポジトリ内のこのバージョンのコードに対するプル リクエストも送信しました。

3s5z 環境では、コードを使用して QMIX をテストすると、次の結果が得られます。

写真

SISL 環境への QMIX アクセス

上記の作業が完了すると、QMIX アルゴリズムが正しいことを確認し、対応する SMAC 環境で対応する結果を得ることができます。その後、チーム メンバーは SISL 環境への接続を開始しました。前述したように、MindSpore フレームワークでは、異なるアルゴリズムが異なる環境に対応し、異なる実行が行われます。 QMIX アルゴリズムはシングルスレッド バージョンのみを実装しているため、前述の MAPPO 環境と相互運用できません。デバッグ プロセス中に、SISL 環境のシングル スレッド バージョンが正常に実行できないことがわかりました。エラーの場所を特定するのは困難です。その内容は次のとおりです。Python インスタンスを C++ 型にキャストできません。

チームメンバーが一行ずつ議論しデバッグした結果、MindSpore フレームワークは Cpp 最下層を使用して計算を高速化するための計算グラフにコンパイルするため、Python から CPP への変換プロセスがあり、このプロセスは従来の Python 実行プロセス。従来の Python プログラムはインタープリタ型言語であり、プログラムはほぼ 1 行ずつ実行されますが、cpp はコンパイル済み言語として完全にコンパイルして実行する必要があります。このため、チーム メンバーは、そのような混合が上記の不明確なエラー報告の問題を引き起こしたのではないかと推測しました。同時に、numpy.int32 は従来の Python とは異なり、int32 と互換性がないため、プログラムを作成する過程で常に各変数のデータ型を確認する必要があり、多くの時間を費やす必要があります。環境からアルゴリズムまでの各ステップのデータ型をチェックします。

困難に直面したグループの学生たちは、環境内の各データのデータ型とアルゴリズムを順番に確認しようとしましたが、問題が発生した特定の変数と問題が発生した場所を特定することはできませんでした。さらに、SISL 環境のマルチプロセス バージョンを実装し、MAPPO コードを実行しました。議論の結果、チーム メンバーは、データ型と、それが呼び出す基礎となる C++ データ型との間の不一致が問題の原因であると結論付けました。シングルポイント デバッグでは問題を特定するのは困難です。コンパイルとデバッグを試す必要があります。同時に、この問題は強化学習コースの内容とはほとんど関係がないため、単一プロセス SISL 環境での QMIX アルゴリズムの実装のデバッグに時間を費やすことはしませんでした。

05

結論は

この強化学習実験では、私たちのチームは、マルチエージェント協力シナリオ用のゲーム テスト環境である SISL (スタンフォード インテリジェント システム研究所) を MindSpore プラットフォームに接続し、これを行うために QMIX および MAPPO アルゴリズムを使用することを試みました。パフォーマンス ベンチマークは、実験環境。課題で指定されたさまざまな要件を完了した後、MindSpore の基礎となるアーキテクチャについてもより深く理解できるようになり、将来、MindSporeRL ライブラリを科学研究活動にさらに巧みに適用するのに役立ちます。

参考文献

[1]。 Mnih V、Kavukcuoglu K、Silver D 他深層強化学習でアタリを遊ぶ[J]。 arXiv プレプリント arXiv:1312.5602、2013。

[2]。シルバー D、ファン A、マディソン CJ 他ディープ ニューラル ネットワークとツリー検索を使用して囲碁をマスターする[J]。自然、2016、529(7587): 484-489。

[3]。シルバー D、シュリットヴィーザー J、シモニアン K、他人間の知識なしに囲碁をマスターする[J]。自然、2017、550(7676): 354-359。

[4]。 Vinyals O、Babuschkin I、Czarnecki WM、他。マルチエージェント強化学習を使用した StarCraft II のグランドマスター レベル[J]。ネイチャー、2019、575(7782): 350-354。

[5]。ブロックマン G、チャン V、ペッターソン L、他オープンナイジム[J]。 arXiv プレプリント arXiv:1606.01540、2016。

[6]。 Todorov E、Erez T、Tassa Y. Mujoco: モデルベース制御のための物理エンジン[C]//インテリジェント ロボットとシステムに関する 2012 IEEE/RSJ 国際会議。 IEEE、2012: 5026-5033。

[7]。 Mordatch I、Abbeel P. マルチエージェント集団における根拠のある構成言語の出現[C]//人工知能に関する AAAI 会議の議事録。 2018年、32(1)。

[8]。 Romo L、Jain M. PySC2 強化学習[J]。

[9]。 Samvelyan M、Rashid T、De Witt CS、他スタークラフト マルチエージェント チャレンジ[J]。 arXiv プレプリント arXiv:1902.04043、2019。

[10]。 Yu C、Velu A、Vinitsky E 他マルチエージェント協力ゲームにおける ppo の驚くべき有効性[J]。神経情報処理システムの進歩、2022、35: 24611-24624。

[11]。ラシッド T、サンベリアン M、デ ウィット CS、他深層マルチエージェント強化学習のための単調値関数因数分解[J]。機械学習研究ジャーナル、2020、21(1): 7234-7284。

[12]。https://pettingzoo.farama.org/environments/sisl/

[13]。 Schulman J、Wolski F、Dhariwal P、他。近接ポリシー最適化アルゴリズム[J]。 arXiv プレプリント arXiv:1707.06347、2017。

[14]。ジョン・シュルマン、フィリップ・モリッツ、セルゲイ・レヴィン、マイケル・ジョーダン、ピーター・アッビール。一般化メリット推定による高次元連続制御。学習表現に関する国際会議 (ICLR) の議事録、2016 年。

1990 年代生まれのプログラマーがビデオ移植ソフトウェアを開発し、1 年足らずで 700 万以上の利益を上げました。結末は非常に罰的でした。 Google は、Flutter、Dart、Python チームの中国人プログラマーの「35 歳の呪い」に関係する人員削減を認めた 。Microsoft 無力な中年者にとっては幸運なおもちゃでもある。強力で GPT-4.5 の疑いがある; Tongyi Qianwen オープンソース 8 モデルWindows 1.0 が 3 か月以内に正式に GA Windows 10 の市場シェアは 70% に達し、Windows 11 GitHub がAI ネイティブ開発ツール GitHub Copilot Workspace JAVAをリリースOLTP+OLAP を処理できる唯一の強力なクエリです。これが最高の ORM です。
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/4736317/blog/11072547