机器人强化学习入门学习笔记(三)

      强化学习(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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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 …