ホームページ >テクノロジー周辺機器 >AI >Panda-Gym のロボット アーム シミュレーションを使用した Deep Q-learning 強化学習
強化学習 (RL) は、エージェントが試行錯誤を通じて環境内でどのように動作するかを学習できる機械学習手法です。エージェントは、望ましい結果につながるアクションを実行すると、報酬または罰を受けます。時間が経つにつれて、エージェントは期待される報酬を最大化するアクションを取ることを学習します
RL エージェントは通常、数学的フレームワークであるマルコフ決定プロセス (MDP) を使用します。逐次的な意思決定問題をモデル化します。 MDP は 4 つの部分で構成されます。
エージェントの目標は、状態をアクションにマッピングするポリシー機能を学習することです。ポリシー機能を通じて、エージェントの長期にわたる期待収益を最大化します。
ディープ Q ラーニングは、ディープ ニューラル ネットワークを使用してポリシー関数を学習する強化学習アルゴリズムです。ディープ ニューラル ネットワークは現在の状態を入力として受け取り、値のベクトルを出力します。各値は可能なアクションを表します。その後、エージェントは最も高い値に基づいてアクションを実行します。
ディープ Q ラーニングは、値ベースの強化学習アルゴリズムです。つまり、各状態とアクションのペアの値を学習します。状態とアクションのペアの値は、その状態でエージェントがそのアクションを実行することで期待される報酬です。
Actor-Critic は、価値ベースとポリシーベースを組み合わせた RL アルゴリズムです。 2 つのコンポーネントがあります:
#アクター: アクターは操作の選択を担当します。
批評家: アクターの動作を評価する責任があります。
俳優と批評家は同時に訓練を受けます。アクターは期待される報酬を最大化するようにトレーニングされ、批評家は各状態アクションのペアの期待される報酬を正確に予測するようにトレーニングされます。
アクター-クリティック アルゴリズムには、他の強化学習アルゴリズムの利点に比べていくつかの利点があります。まず、より安定しているため、トレーニング中にバイアスが発生する可能性が低くなります。第二に、より効率的であり、より速く学習できることを意味します。第三に、スケーラビリティが向上し、大きな状態空間と操作空間を持つ問題に適用できます。
下の表は、Deep Q-learning と Actor-Critic の違いをまとめたものです。主な違いは次のとおりです。
Actor-Critic は、一般的な強化学習アーキテクチャです。ポリシーベースのアプローチと価値ベースのアプローチを組み合わせています。これには、さまざまな強化学習タスクを解決するための強力な選択肢となる多くの利点があります:
従来のポリシーとの比較勾配法では、A2C は通常、トレーニング中の分散が低くなります。これは、A2C がポリシー勾配と値関数の両方を使用し、勾配の計算の分散を減らすために値関数を使用するためです。分散が低いということは、トレーニング プロセスがより安定しており、より良い戦略により早く収束できることを意味します
原因:分散が低いという特徴により、A2C は通常、優れた戦略をより早く学習できます。学習速度が速くなることで貴重な時間とコンピューティング リソースが節約されるため、これは広範なシミュレーションを必要とするタスクでは特に重要です。
A2C の特徴の 1 つは、ポリシーと価値関数を同時に学習することです。この組み合わせにより、エージェントは環境とアクションの相関関係をよりよく理解できるようになり、ポリシーの改善をより適切に導くことができます。値関数の存在は、ポリシー最適化におけるエラーを減らし、トレーニング効率を向上させるのにも役立ちます。
A2C は、連続アクションと離散アクションを含む、さまざまなタイプのアクション スペースに適応できます。非常に多用途です。これにより、A2C は、ロボット制御からゲームプレイの最適化まで、さまざまなタスクに適用できる、広く適用可能な強化学習アルゴリズムになります。
#A2C は簡単に並列化して、マルチコア プロセッサと分散コンピューティング リソースを最大限に活用できます。これは、より短い時間でより多くの経験的データを収集できることを意味し、トレーニング効率が向上します。
Actor-Critic 手法にはいくつかの利点がありますが、ハイパーパラメータの調整やトレーニングにおける潜在的な不安定性など、いくつかの課題にも直面しています。ただし、エクスペリエンス リプレイやターゲット ネットワークなどの適切な調整とテクニックを使用すると、これらの課題を大幅に軽減できるため、Actor-Critic は強化学習における貴重なアプローチになります
##panda-gym は PyBullet エンジンに基づいて開発されており、リーチ、プッシュ、スライドなど 6 つのタスクをカプセル化しています。 pick&place、stack、flip は主に OpenAI Fetch からインスピレーションを得ています。
#panda-gym を例として使用して、次のコードを示します
まず、強化学習環境のコードを初期化する必要があります:
!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
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
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
最適化するための良い方法強化学習は、入力特徴を正規化して最適化することです。ラッパーを通じて入力フィーチャの移動平均と標準偏差を計算します。同時に、norm_reward = True
env = make_vec_env(env_id, n_envs=4) env = VecNormalize(env, norm_obs=True, norm_reward=True, clip_obs=10.)
公式モデルを使用しますStable-Baselines3 チームによるトレーニング エージェント
model = A2C(policy = "MultiInputPolicy",env = env,verbose=1)
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")
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 サイトの他の関連記事を参照してください。