ホームページ >テクノロジー周辺機器 >AI >Panda-Gym のロボット アーム シミュレーションを使用した Deep Q-learning 強化学習

Panda-Gym のロボット アーム シミュレーションを使用した Deep Q-learning 強化学習

WBOY
WBOY転載
2023-10-31 17:57:04634ブラウズ

強化学習 (RL) は、エージェントが試行錯誤を通じて環境内でどのように動作するかを学習できる機械学習手法です。エージェントは、望ましい結果につながるアクションを実行すると、報酬または罰を受けます。時間が経つにつれて、エージェントは期待される報酬を最大化するアクションを取ることを学習します

使用Panda-Gym的机器臂模拟实现Deep Q-learning强化学习

RL エージェントは通常、数学的フレームワークであるマルコフ決定プロセス (MDP) を使用します。逐次的な意思決定問題をモデル化します。 MDP は 4 つの部分で構成されます。

  • #状態: 環境の可能な状態のセット。
  • アクション: エージェントが実行できる一連のアクション。
  • 遷移関数: 現在の状態とアクションを考慮して、新しい状態に遷移する確率を予測する関数。
  • 報酬関数: コンバージョンごとにエージェントに報酬を割り当てる関数。

エージェントの目標は、状態をアクションにマッピングするポリシー機能を学習することです。ポリシー機能を通じて、エージェントの長期にわたる期待収益を最大化します。

ディープ Q ラーニングは、ディープ ニューラル ネットワークを使用してポリシー関数を学習する強化学習アルゴリズムです。ディープ ニューラル ネットワークは現在の状態を入力として受け取り、値のベクトルを出力します。各値は可能なアクションを表します。その後、エージェントは最も高い値に基づいてアクションを実行します。

ディープ Q ラーニングは、値ベースの強化学習アルゴリズムです。つまり、各状態とアクションのペアの値を学習します。状態とアクションのペアの値は、その状態でエージェントがそのアクションを実行することで期待される報酬です。

Actor-Critic は、価値ベースとポリシーベースを組み合わせた RL アルゴリズムです。 2 つのコンポーネントがあります:

#アクター: アクターは操作の選択を担当します。

批評家: アクターの動作を評価する責任があります。

俳優と批評家は同時に訓練を受けます。アクターは期待される報酬を最大化するようにトレーニングされ、批評家は各状態アクションのペアの期待される報酬を正確に予測するようにトレーニングされます。

アクター-クリティック アルゴリズムには、他の強化学習アルゴリズムの利点に比べていくつかの利点があります。まず、より安定しているため、トレーニング中にバイアスが発生する可能性が低くなります。第二に、より効率的であり、より速く学習できることを意味します。第三に、スケーラビリティが向上し、大きな状態空間と操作空間を持つ問題に適用できます。

下の表は、Deep Q-learning と Actor-Critic の違いをまとめたものです。主な違いは次のとおりです。

使用Panda-Gym的机器臂模拟实现Deep Q-learning强化学习

Actor-Critic (A2C) の利点

Actor-Critic は、一般的な強化学習アーキテクチャです。ポリシーベースのアプローチと価値ベースのアプローチを組み合わせています。これには、さまざまな強化学習タスクを解決するための強力な選択肢となる多くの利点があります:

1. 低い分散

従来のポリシーとの比較勾配法では、A2C は通常、トレーニング中の分散が低くなります。これは、A2C がポリシー勾配と値関数の両方を使用し、勾配の計算の分散を減らすために値関数を使用するためです。分散が低いということは、トレーニング プロセスがより安定しており、より良い戦略により早く収束できることを意味します

2. 学習速度の向上

原因:分散が低いという特徴により、A2C は通常、優れた戦略をより早く学習できます。学習速度が速くなることで貴重な時間とコンピューティング リソースが節約されるため、これは広範なシミュレーションを必要とするタスクでは特に重要です。

3. ポリシーと価値関数の組み合わせ

A2C の特徴の 1 つは、ポリシーと価値関数を同時に学習することです。この組み合わせにより、エージェントは環境とアクションの相関関係をよりよく理解できるようになり、ポリシーの改善をより適切に導くことができます。値関数の存在は、ポリシー最適化におけるエラーを減らし、トレーニング効率を向上させるのにも役立ちます。

4. 連続アクション スペースと離散アクション スペースのサポート

A2C は、連続アクションと離散アクションを含む、さまざまなタイプのアクション スペースに適応できます。非常に多用途です。これにより、A2C は、ロボット制御からゲームプレイの最適化まで、さまざまなタスクに適用できる、広く適用可能な強化学習アルゴリズムになります。

5. 並列トレーニング

#A2C は簡単に並列化して、マルチコア プロセッサと分散コンピューティング リソースを最大限に活用できます。これは、より短い時間でより多くの経験的データを収集できることを意味し、トレーニング効率が向上します。

Actor-Critic 手法にはいくつかの利点がありますが、ハイパーパラメータの調整やトレーニングにおける潜在的な不安定性など、いくつかの課題にも直面しています。ただし、エクスペリエンス リプレイやターゲット ネットワークなどの適切な調整とテクニックを使用すると、これらの課題を大幅に軽減できるため、Actor-Critic は強化学習における貴重なアプローチになります

使用Panda-Gym的机器臂模拟实现Deep Q-learning强化学习

panda-gym

##panda-gym は PyBullet エンジンに基づいて開発されており、リーチ、プッシュ、スライドなど 6 つのタスクをカプセル化しています。 pick&place、stack、flip は主に OpenAI Fetch からインスピレーションを得ています。

使用Panda-Gym的机器臂模拟实现Deep Q-learning强化学习

#panda-gym を例として使用して、次のコードを示します

1. インストールライブラリ

まず、強化学習環境のコードを初期化する必要があります:

!apt-get install -y \libgl1-mesa-dev \libgl1-mesa-glx \libglew-dev \xvfb \libosmesa6-dev \software-properties-common \patchelf  !pip install \free-mujoco-py \pytorch-lightning \optuna \pyvirtualdisplay \PyOpenGL \PyOpenGL-accelerate\stable-baselines3[extra] \gymnasium \huggingface_sb3 \huggingface_hub \ panda_gym

2. ライブラリをインポート
import os  import gymnasium as gym import panda_gym  from huggingface_sb3 import load_from_hub, package_to_hub  from stable_baselines3 import A2C from stable_baselines3.common.evaluation import evaluate_policy from stable_baselines3.common.vec_env import DummyVecEnv, VecNormalize from stable_baselines3.common.env_util import make_vec_env

3. 実行環境を作成する
env_id = "PandaReachDense-v3"  # Create the env env = gym.make(env_id)  # Get the state space and action space s_size = env.observation_space.shape a_size = env.action_space  print("\n _____ACTION SPACE_____ \n") print("The Action Space is: ", a_size) print("Action Space Sample", env.action_space.sample()) # Take a random action

4. 観察と報酬の標準化

最適化するための良い方法強化学習は、入力特徴を正規化して最適化することです。ラッパーを通じて入力フィーチャの移動平均と標準偏差を計算します。同時に、norm_reward = True

env = make_vec_env(env_id, n_envs=4)  env = VecNormalize(env, norm_obs=True, norm_reward=True, clip_obs=10.)

5 を追加することで報酬が正規化されます。A2C モデルを作成します

公式モデルを使用しますStable-Baselines3 チームによるトレーニング エージェント

model = A2C(policy = "MultiInputPolicy",env = env,verbose=1)

6、トレーニング A2C
model.learn(1_000_000)  # Save the model and VecNormalize statistics when saving the agent model.save("a2c-PandaReachDense-v3") env.save("vec_normalize.pkl")

7、評価エージェント
from stable_baselines3.common.vec_env import DummyVecEnv, VecNormalize  # Load the saved statistics eval_env = DummyVecEnv([lambda: gym.make("PandaReachDense-v3")]) eval_env = VecNormalize.load("vec_normalize.pkl", eval_env)  # We need to override the render_mode eval_env.render_mode = "rgb_array"  # do not update them at test time eval_env.training = False # reward normalization is not needed at test time eval_env.norm_reward = False  # Load the agent model = A2C.load("a2c-PandaReachDense-v3")  mean_reward, std_reward = evaluate_policy(model, eval_env)  print(f"Mean reward = {mean_reward:.2f} +/- {std_reward:.2f}")

まとめ

「panda-gym」では、Panda ロボットアームと GYM 環境を効果的に組み合わせることで、ローカルでロボットアームの強化学習を簡単に実行できます。

Actor-Critic アーキテクチャでは、エージェントはタイム ステップごとに段階的に改善することを学習します。これは、スパース報酬関数 (結果がバイナリである) とは対照的です。 Actor-Critic メソッドは、そのようなタスクに特に適しています。

ポリシー学習と価値推定をシームレスに組み合わせることで、ロボット エージェントはロボット アームのエンド エフェクターを巧みに操作して、指定された目標位置に正確に到達することができます。これは、ロボット制御などのタスクに実用的なソリューションを提供するだけでなく、機敏で情報に基づいた意思決定を必要とするさまざまな分野を変革する可能性を秘めています。

以上がPanda-Gym のロボット アーム シミュレーションを使用した Deep Q-learning 強化学習の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。