機器人強化學習入門學習筆記(三)

? ? ? 強化學習(Reinforcement Learning, RL)與監督學習不同——你不需要預先準備訓練數據集,而是要設計環境獎勵函數,讓智能體通過交互不斷探索和學習


🎯 一、強化學習和訓練數據的關系

強化學習不依賴固定的數據集。它通過以下過程學習:

Agent(智能體) ?? Environment(環境)步驟:
1. Agent 發出動作(action)
2. 環境返回下一個狀態(state)和獎勵(reward)
3. Agent 更新策略(policy)或 Q 值(value function)

👉 所以“訓練數據”來自智能體 與環境的交互記錄,包括:

狀態(State)動作(Action)獎勵(Reward)下一狀態(Next State)
s?a?r?s???

這些數據可以存儲在 replay buffer(經驗回放池) 中。


🚀 二、訓練強化學習模型的完整流程

以訓練一個 MuJoCo 機器人為例:

? 1. 搭建仿真環境(如 MuJoCo + dm_control 或 gym)

  • 設置好狀態空間(如關節角度、速度)

  • 定義動作空間(如施加的扭矩)

  • 設計獎勵函數(鼓勵目標行為,例如走得遠、站得穩)

? 2. 選擇強化學習算法

常見算法有:

算法類型適合場景
DQN離散動作簡單游戲、控制任務
PPO(常用)連續動作機器人、復雜控制任務
SAC連續動作收斂快、表現更好
TD3連續動作高穩定性

建議使用:PPO(最穩定)或 SAC(高性能)

? 3. 訓練智能體

使用工具框架如:

  • Stable-Baselines3(推薦)

  • RLlib(可擴展)

  • CleanRL(輕量易懂)

例子(使用 Stable-Baselines3 訓練 PPO):

from stable_baselines3 import PPO
from stable_baselines3.common.env_util import make_vec_envenv = make_vec_env("Humanoid-v3", n_envs=4)  # 多環境并行
model = PPO("MlpPolicy", env, verbose=1)
model.learn(total_timesteps=1_000_000)
model.save("ppo_humanoid")

📦 三、Replay Buffer 是“數據容器”

  • off-policy 方法(如 DQN、SAC)中,agent 會把每個 (s, a, r, s') 存入經驗池中,再抽樣訓練。

  • on-policy 方法(如 PPO)中,agent 每輪采樣最新數據,不重復使用。


📊 四、獎勵函數的設計建議

  • 稀疏獎勵(sparse reward)難訓練,盡量提供細粒度獎勵

  • 結合多個因素(如“走路快 + 身體穩定”)用加權和。

  • 獎勵平滑、非爆炸。

示例(走路):

reward = 1.0 * velocity_forward - 0.1 * energy_used - 5.0 * is_fallen

🧠 五、訓練技巧

項目建議
并行環境VecEnv 加速樣本采集
reward shaping獎勵設計更細致、鼓勵期望行為
normalize obs / reward歸一化更易于收斂
curriculum learning從簡單任務逐步提升難度
checkpointing定期保存模型,防止崩掉

🛠 六、可視化訓練過程

  • 使用 TensorBoard

  • 使用 Stable-Baselines3 的 logger 自動記錄

tensorboard --logdir logs/

? 七、模型保存

RL?訓練會保存?actor.pt、critic.pt?和?experiment.pkl?這幾個文件,以及它們各自的作用。


1.?actor.pt

  • 作用:保存了策略網絡(Policy?Network)的參數。
  • 內容:通常是一個 PyTorch 的神經網絡模型(即 policy),它根據觀測(observation)輸出動作(action)。
  • 用途:在評估、部署或繼續訓練時,直接加載該文件即可恢復智能體的決策能力。

2.?critic.pt

  • 作用:保存了價值網絡(Value Network)的參數。
  • 內容:同樣是一個 PyTorch 神經網絡模型,用于評估當前狀態(或狀態-動作對)的價值(value)。
  • 用途:在訓練時用于計算優勢函數(advantage),幫助策略網絡更好地學習。評估時有時也會用到。

3.?experiment.pkl

  • 作用:保存了實驗的超參數、配置和訓練參數。
  • 內容:通常是一個?Python?字典,包含訓練時用到的所有參數(如學習率、環境名、網絡結構、采樣步數等)。
  • 用途:方便后續復現實驗、評估模型時自動加載一致的參數,或繼續訓練時恢復原始設置。

4. 為什么要分開保存?

  • 可復現性:分開保存可以讓你隨時恢復訓練、評估或部署,且能追溯訓練時的所有細節。
  • 靈活性:你可以只加載 policy(actor)做推理,也可以加載全部繼續訓練。
  • 兼容性:不同?RL?算法可能只需要其中一部分(如無?critic?的算法只保存?actor)。

5. 示例

###Apply to requirements...path_to_actor?=?Path(args.path,?"actor.pt")path_to_critic?=?Path(path_to_actor.parent,?"critic"?+?str(path_to_actor).split('actor')[1])path_to_pkl?=?Path(path_to_actor.parent,?"experiment.pkl")#?加載參數run_args?=?pickle.load(open(path_to_pkl,?"rb"))policy?=?torch.load(path_to_actor,?weights_only=False)critic?=?torch.load(path_to_critic,?weights_only=False)

評估時會自動加載這三個文件,確保模型和參數與訓練時完全一致。例如?stable-baselines3、RLlib?等主流庫也會分別保存 policy、value、config/checkpoint 等文件。總結如下:

  • actor.pt:保存策略網絡(決策用)
  • critic.pt:保存價值網絡(訓練用)
  • experiment.pkl:保存實驗參數(復現/繼續訓練用)

這樣設計是為了方便復現、靈活部署和高效管理實驗。

? 八、小結:訓練RL你要準備的是這些

  1. 一個環境(可仿真)

  2. 狀態、動作、獎勵函數設計好

  3. 選擇合適的 RL 算法(如 PPO)

  4. 使用 RL 框架訓練(如 Stable-Baselines3)

  5. 讓 agent 不斷與環境交互生成數據,而不是喂靜態數據集

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/82400.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/82400.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/82400.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【python實戰】二手房房價數據分析與預測

個人主頁:大數據蟒行探索者 目錄 一、數據分析目標與任務 1.1背景介紹 1.2課程設計目標與任務 1.3研究方法與技術路線 二、數據預處理 2.1數據說明 2.2數據清洗 2.3數據處理 三、數據探索分析 四、數據分析模型 五、方案評估 摘要:隨著社會經…

Kotlin IR編譯器插件開發指南

在 Kotlin 中開發基于 IR(Intermediate Representation)的編譯器插件,可以深度定制語言功能或實現高級代碼轉換。以下是分步驟指南: 一、IR 編譯器插件基礎 IR 是什么? Kotlin 編譯器將源碼轉換為 IR 中間表示&#xf…

如何用 python 代碼復現 MATLAB simulink 的 PID

MATLAB在 Simulink 里做以下設置MATLAB 腳本調用示例 python 實現離散 PID 實現(并行形式) Simulink 中兩種 PID 結構(并聯形式, I-形式)下連續/離散時域里積分增益 I 的表示并聯(Parallel) vs 理想&#x…

黑馬點評--基于Redis實現共享session登錄

集群的session共享問題分析 session共享問題:多臺Tomcat無法共享session存儲空間,當請求切換到不同Tomcat服務時,原來存儲在一臺Tomcat服務中的數據,在其他Tomcat中是看不到的,這就導致了導致數據丟失的問題。 雖然系…

SkyWalking啟動失敗:OpenSearch分片數量達到上限的完美解決方案

?? 問題現象 SkyWalking OAP服務啟動時報錯: org.apache.skywalking.oap.server.library.module.ModuleStartException: java.lang.RuntimeException: {"error":{"root_cause":[{"type":"validation_exception", "reason&q…

向量數據庫選型實戰指南:Milvus架構深度解析與技術對比

導讀:隨著大語言模型和AI應用的快速普及,傳統數據庫在處理高維向量數據時面臨的性能瓶頸日益凸顯。當文檔經過嵌入模型處理生成768到1536維的向量后,傳統B-Tree索引的檢索效率會出現顯著下降,而現代應用對毫秒級響應的嚴苛要求使得…

MySQL#秘籍#一條SQL語句執行時間以及資源分析

背景 一條 SQL 語句的執行完,每個模塊耗時,不同資源(CPU/IO/IPC/SWAP)消耗情況我該如何知道呢?別慌俺有 - MySQL profiling 1. SQL語句執行前 - 開啟profiling -- profiling (0-關閉 1-開啟) -- 或者:show variables like prof…

【數據結構】實現方式、應用場景與優缺點的系統總結

以下是編程中常見的數據結構及其實現方式、應用場景與優缺點的系統總結: 一、線性數據結構 1. 數組 (Array) 定義:連續內存空間存儲相同類型元素。實現方式:int[] arr new int[10]; // Javaarr [0] * 10 # Python操作: 訪問&…

PyTorch中cdist和sum函數使用示例詳解

以下是PyTorch中cdist與sum函數的聯合使用詳解: 1. cdist函數解析 功能:計算兩個張量間的成對距離矩陣 輸入格式: X1:形狀為(B, P, M)的張量X2:形狀為(B, R, M)的張量p:距離類型(默認2表示歐式距離)輸出:形狀為(B, P, R)的距離矩陣,其中元素 d i j d_{ij} dij?表示…

Ansible配置文件常用選項詳解

Ansible 的配置文件采用 INI 格式,分為多個模塊,每個模塊包含特定功能的配置參數。 以下是ansible.cfg配置文件中對各部分的詳細解析: [defaults](全局默認配置) inventory 指定主機清單文件路徑,默認值為 …

了解FTP搜索引擎

根據資料, FTP搜索引擎是專門搜集匿名FTP服務器提供的目錄列表,并向用戶提供文件信息的網站; FTP搜索引擎專門針對FTP服務器上的文件進行搜索; 就是它的搜索結果是一些FTP資源; 知名的FTP搜索引擎如下, …

【大模型面試每日一題】Day 28:AdamW 相比 Adam 的核心改進是什么?

【大模型面試每日一題】Day 28:AdamW 相比 Adam 的核心改進是什么? 📌 題目重現 🌟🌟 面試官:AdamW 相比 Adam 的核心改進是什么? #mermaid-svg-BJoVHwvOm7TY1VkZ {font-family:"trebuch…

C++系統IO

C系統IO 頭文件的使用 1.使用系統IO必須包含相應的頭文件,通常使用#include預處理指令。 2.頭文件中包含了若干變量的聲明,用于實現系統IO。 3.頭文件的引用方式有雙引號和尖括號兩種,區別在于查找路徑的不同。 4.C標準庫提供的頭文件通常沒…

多模態理解大模型高性能優化丨前沿多模態模型開發與應用實戰第七期

一、引言 在前序課程中,我們系統剖析了多模態理解大模型(Qwen2.5-VL、DeepSeek-VL2)的架構設計。鑒于此類模型訓練需消耗千卡級算力與TB級數據,實際應用中絕大多數的用戶場景均圍繞推理部署展開,模型推理的效率影響著…

各個網絡協議的依賴關系

網絡協議的依賴關系 學習網絡協議之間的依賴關系具有多方面重要作用,具體如下: 幫助理解網絡工作原理 - 整體流程明晰:網絡協議分層且相互依賴,如TCP/IP協議族,應用層協議依賴傳輸層的TCP或UDP協議來傳輸數據&#…

11.8 LangGraph生產級AI Agent開發:從節點定義到高并發架構的終極指南

使用 LangGraph 構建生產級 AI Agent:LangGraph 節點與邊的實現 關鍵詞:LangGraph 節點定義, 條件邊實現, 狀態管理, 多會話控制, 生產級 Agent 架構 1. LangGraph 核心設計解析 LangGraph 通過圖結構抽象復雜 AI 工作流,其核心要素構成如下表所示: 組件作用描述代碼對應…

相機--基礎

在機器人開發領域,相機種類很多,作為一個機器人領域的開發人員,我們需要清楚幾個問題: 1,相機的種類有哪些? 2,各種相機的功能,使用場景? 3,需要使用的相機…

【備忘】 windows 11安裝 AdGuardHome,實現開機自啟,使用 DoH

windows 11安裝 AdGuardHome,實現開機自啟,使用 DoH 下載 AdGuardHome解壓 AdGuardHome啟動 AdGuard Home設置 AdGuardHome設置開機自啟安裝 NSSM設置開機自啟重啟電腦后我們可以訪問 **http://127.0.0.1/** 設置使用 AdGuardHome DNS 效果圖 下載 AdGua…

安裝部署配置jenkins

隨著現代軟件開發流程的不斷演進,持續集成(CI)和持續交付(CD)已經成為了開發團隊必不可少的工具。而Jenkins作為最為廣泛應用的CI/CD工具,能夠自動化執行構建、測試、部署等任務。Maven作為Java生態中廣泛使用的構建工具,它能夠幫助開發人員自動化管理項目的構建、依賴和…

How to balance work and personal life?

How to balance work and personal life? 1. Background2. How to balance work and personal life?References 1. Background Let me introduce /??ntr??dju?s/ the background /?bkɡra?nd/ first. Today we will talk about this topic: How to balance work and …