強化學習(RL)是一種機器學習方法,它允許代理人透過試誤來學習如何在環境中表現。行為主體會因為採取行動導致預期結果而獲得獎勵或懲罰。隨著時間的推移,代理人會學會採取行動,以使得其預期回報最大化
#RL代理通常使用馬可夫決策過程( MDP)進行訓練,MDP是為順序決策問題建模的數學架構。 MDP由四個部分組成:
- 狀態:環境的可能狀態的集合。
- 動作:代理人可以採取的一組動作。
- 轉換函數:在給定當前狀態和動作的情況下,預測轉換到新狀態的機率的函數。
- 獎勵函數:為每次轉換分配獎勵給代理的函數。
代理程式的目標是學習策略函數,將狀態對應到動作。透過策略函數來最大化代理隨著時間的預期回報。
Deep Q-learning是一種使用深度神經網路學習策略函數的強化學習演算法。深度神經網路以當前狀態作為輸入,並輸出一個值向量,其中每個值代表一個可能的動作。然後代理根據具有最高值的操作進行採取
Deep Q-learning是一種基於值的強化學習演算法,這意味著它學習每個狀態-動作對的值。狀態-動作對的值是agent在該狀態下採取該動作所獲得的預期獎勵。
Actor-Critic是一種結合了基於值和基於策略的RL演算法。有兩個組成部分:
Actor:參與者負責選擇操作。
Critic:負責評價Actor的行為。
演員和評論家同時接受訓練。演員接受培訓以最大化預期獎勵,評論家接受培訓以準確預測每個狀態-動作對的預期獎勵
Actor-Critic演算法相對於其他強化學習演算法有幾個優點。首先,它更加穩定,這意味著在訓練過程中不太可能出現偏差。其次,它更加高效,這意味著它可以更快地學習。第三,它具有更好的可擴展性,可以應用於具有大型狀態和操作空間的問題
#下面的表格總結了Deep Q-learning和Actor-Critic之間的主要差異:
Actor-Critic (A2C)的優勢
## 演員-評論家是一種受歡迎的強化學習體系結構,它結合了基於策略和基於價值的方法。它有許多優點,使其成為解決各種強化學習任務的強有力的選擇:
1、低方差
相較於傳統的策略梯度方法,A2C 在訓練過程中通常具有較低的變異數。這是因為 A2C 同時使用了策略梯度和值函數,在梯度的計算中利用值函數來降低變異數。低方差表示訓練過程更穩定,能夠更快收斂到更優的策略
2、更快的學習速度
由於低方差的特性,A2C 通常能夠以更快的速度學習到一個好的策略。這對於需要進行大量模擬的任務來說尤其重要,因為較快的學習速度可以節省寶貴的時間和計算資源。
3、結合策略和值函數
A2C 的一個顯著特徵是它同時學習策略和值函數。這種結合使得代理人能夠更好地理解環境和動作的關聯,從而更好地指導策略改進。值函數的存在也有助於減小策略最佳化中的誤差,並提高訓練的效率。
4、支援連續和離散動作空間
#A2C 可以適應不同類型的動作空間,包括連續和離散動作,而且非常通用。這就使得A2C 成為一個廣泛適用的強化學習演算法,可以應用於各種任務,從機器人控製到遊戲玩法最佳化
5、並行訓練
A2C 可以輕鬆地並行化,充分利用多核心處理器和分散式運算資源。這意味著可以在更短的時間內收集更多的經驗數據,從而提高訓練效率。
儘管Actor-Critic方法具有一些優勢,但是它們也面臨一些挑戰,例如超參數調優和訓練中的潛在不穩定性。然而,透過適當的調整以及經驗回放和目標網路等技術,這些挑戰可以在很大程度上得到緩解,使得Actor-Critic成為強化學習中有價值的方法
panda-gym
#panda-gym 基於PyBullet 引擎開發,圍繞panda 機械手臂封裝了reach、push、slide、 pick&place、stack、flip 等6 個任務,主要也是受OpenAI Fetch 啟發。
我們將使用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、訓練A2Cmodel.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中文網其他相關文章!

介紹 恭喜!您經營一家成功的業務。通過您的網頁,社交媒體活動,網絡研討會,會議,免費資源和其他來源,您每天收集5000個電子郵件ID。下一個明顯的步驟是

介紹 在當今快節奏的軟件開發環境中,確保最佳應用程序性能至關重要。監視實時指標,例如響應時間,錯誤率和資源利用率可以幫助MAIN

“您有幾個用戶?”他扮演。 阿爾特曼回答說:“我認為我們上次說的是每週5億個活躍者,而且它正在迅速增長。” “你告訴我,就像在短短幾週內翻了一番,”安德森繼續說道。 “我說那個私人

介紹 Mistral發布了其第一個多模式模型,即Pixtral-12b-2409。該模型建立在Mistral的120億參數Nemo 12B之上。是什麼設置了該模型?現在可以拍攝圖像和Tex

想像一下,擁有一個由AI驅動的助手,不僅可以響應您的查詢,還可以自主收集信息,執行任務甚至處理多種類型的數據(TEXT,圖像和代碼)。聽起來有未來派?在這個a


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。