首頁 > 科技週邊 > 人工智慧 > 使用Panda-Gym的機器臂模擬實現Deep Q-learning強化學習

使用Panda-Gym的機器臂模擬實現Deep Q-learning強化學習

WBOY
發布: 2023-10-31 17:57:04
轉載
591 人瀏覽過

強化學習(RL)是一種機器學習方法,它允許代理人透過試誤來學習如何在環境中表現。行為主體會因為採取行動導致預期結果而獲得獎勵或懲罰。隨著時間的推移,代理人會學會採取行動,以使得其預期回報最大化

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

#RL代理通常使用馬可夫決策過程( MDP)進行訓練,MDP是為順序決策問題建模的數學架構。 MDP由四個部分組成:

  • 狀態:環境的可能狀態的集合。
  • 動作:代理人可以採取的一組動作。
  • 轉換函數:在給定當前狀態和動作的情況下,預測轉換到新狀態的機率的函數。
  • 獎勵函數:為每次轉換分配獎勵給代理的函數。

代理程式的目標是學習策略函數,將狀態對應到動作。透過策略函數來最大化代理隨著時間的預期回報。

Deep Q-learning是一種使用深度神經網路學習策略函數的強化學習演算法。深度神經網路以當前狀態作為輸入,並輸出一個值向量,其中每個值代表一個可能的動作。然後代理根據具有最高值的操作進行採取

Deep Q-learning是一種基於值的強化學習演算法,這意味著它學習每個狀態-動作對的值。狀態-動作對的值是agent在該狀態下採取該動作所獲得的預期獎勵。

Actor-Critic是一種結合了基於值和基於策略的RL演算法。有兩個組成部分:

Actor:參與者負責選擇操作。

Critic:負責評價Actor的行為。

演員和評論家同時接受訓練。演員接受培訓以最大化預期獎勵,評論家接受培訓以準確預測每個狀態-動作對的預期獎勵

Actor-Critic演算法相對於其他強化學習演算法有幾個優點。首先,它更加穩定,這意味著在訓練過程中不太可能出現偏差。其次,它更加高效,這意味著它可以更快地學習。第三,它具有更好的可擴展性,可以應用於具有大型狀態和操作空間的問題

#下面的表格總結了Deep Q-learning和Actor-Critic之間的主要差異:

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

Actor-Critic (A2C)的優勢

## 演員-評論家是一種受歡迎的強化學習體系結構,它結合了基於策略和基於價值的方法。它有許多優點,使其成為解決各種強化學習任務的強有力的選擇:

1、低方差

相較於傳統的策略梯度方法,A2C 在訓練過程中通常具有較低的變異數。這是因為 A2C 同時使用了策略梯度和值函數,在梯度的計算中利用值函數來降低變異數。低方差表示訓練過程更穩定,能夠更快收斂到更優的策略

2、更快的學習速度

由於低方差的特性,A2C 通常能夠以更快的速度學習到一個好的策略。這對於需要進行大量模擬的任務來說尤其重要,因為較快的學習速度可以節省寶貴的時間和計算資源。

3、結合策略和值函數

A2C 的一個顯著特徵是它同時學習策略和值函數。這種結合使得代理人能夠更好地理解環境和動作的關聯,從而更好地指導策略改進。值函數的存在也有助於減小策略最佳化中的誤差,並提高訓練的效率。

4、支援連續和離散動作空間

#A2C 可以適應不同類型的動作空間,包括連續和離散動作,而且非常通用。這就使得A2C 成為一個廣泛適用的強化學習演算法,可以應用於各種任務,從機器人控製到遊戲玩法最佳化

5、並行訓練

A2C 可以輕鬆地並行化,充分利用多核心處理器和分散式運算資源。這意味著可以在更短的時間內收集更多的經驗數據,從而提高訓練效率。

儘管Actor-Critic方法具有一些優勢,但是它們也面臨一些挑戰,例如超參數調優和訓練中的潛在不穩定性。然而,透過適當的調整以及經驗回放和目標網路等技術,這些挑戰可以在很大程度上得到緩解,使得Actor-Critic成為強化學習中有價值的方法

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

panda-gym

#panda-gym 基於PyBullet 引擎開發,圍繞panda 機械手臂封裝了reach、push、slide、 pick&place、stack、flip 等6 個任務,主要也是受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中文網其他相關文章!

相關標籤:
來源:51cto.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板