强化学习入门小白一枚,最近看到了博主推的一篇论文:Hindsight Experience Replay。蛮有趣,就学习了一下;又不记事,便做此学习笔记:
注:本文借鉴代码,文献,都将在文末分享。本文仅为个人笔记分享,如有侵权,即刻删除。
HER是一种数据增强技术,旨在解决强化学习中的稀疏奖励问题。
在谈及HER算法和稀疏奖励之前,先讨论一下什么是强化学习:强化学习是一种机器学习范式,其中智能体通过与环境交互并根据其行为获得的奖励来学习最优的行为策略。在最优策略的探索中,智能体与环境交互,通过不断观察环境的状态(state),采取行动(action),依据环境给予的反馈信息,奖励信号(reward)不断引导,最终学会最优策略。
强化学习
在强化学习中,奖励信息(reward)是智能体(agent)学习如何做出决策的关键驱动因素。奖励信号提供了关于智能体行为好坏的即时反馈,指导智能体识别哪些行为能够导致期望的状态或目标,并优化其长期行为以最大化累积奖励。通过不断尝试和接收奖励,智能体能够调整其策略,学习在给定环境中做出最佳决策。因此,奖励信息是强化学习算法中不可或缺的组成部分,它直接影响智能体的学习过程和最终的学习成果。
稀疏奖励(sparse rewards)问题是指智能体在学习过程/与环境交互过程中,极少获得奖励。例如机器人控制,智能体需要经过大量的步骤和尝试才能达到目标状态,但这些探索极少能获得环境的反馈(奖励),只有当完成一个回合的控制,方能收获奖励信号,且这类信号信息量匮乏,难以为智能体提供引导。稀疏奖励的挑战在于缺少中间反馈,智能体难以从偶尔获得的成功中学习到有效的策略。
下图所示为强化学习算法下,智能体控制机械臂(右臂)对白色方块进行抓取并将之移动至半透明区域。整个任务过程可划分为三个目标:抓取、移动至指定位置、放置;
测试代码
另一位博主编写的DDPG+HER模型
智能体控制机械臂过程,仅能通过回合结束时是否完成目标之一来给予奖励信息。
奖励函数
奖励函数,s指目标状态
这样稀疏奖励环境,奖励函数、数据不足以支撑智能体得到有效学习,文献提及,纯DDPG算法控制机械臂实验无法得到有效结果。
文献展示的效果图
文献实验效果
文献展示的上图为实验结果,可以明显的看出,HER算法在强化学习解决稀疏奖励和二元奖励问题方面性能的改进,作为一个数据增强性的隐性算法,HER算法本身不对主路强化学习算法(如DDPG)运行过程有任何影响,直接对数据进行改进。且算法思路清晰简单,易于实现:
HER伪代码,将在后文翻译
上图为Hindsight Experience Replay (HER)算法伪代码:
算法给定:
• 一个非策略性强化学习算法 A (例如 DQN, DDPG, NAF, SDQN)
• 一个用于重放时采样目标的策略 S (例如 S(s0, …, sT) = m(sT))
• 一个奖励函数 r : S × A × G → R (例如 r(s, a, g) = −[fg(s) = 0])
初始化 A (例如初始化神经网络)
初始化重放缓冲区 R
对于每个回合 episode = 1, M 执行:
采样一个目标 g 和一个初始状态 s0
对于每个时间步 t = 0, T-1 执行:
使用 A 中的行为策略 πb 采样一个动作 at ← πb(st|g)
执行动作 at 并观察新状态 st+1
计算奖励 rt := r(st, at, g)
将转换 (st||g, at, rt, st+1||g) 存储到 R 中 (标准的体验回放)
对于当前回合中的每个额外目标 g’ ∈ G 执行:
计算奖励 r’ := r(st, at, g’)
将转换 (st||g’, at, r’, st+1||g’) 存储到 R 中 (HER)
对于每个小批量训练步骤 t = 1, N 执行:
从重放缓冲区 R 中采样一个小批量 B
使用 A 和小批量 B 执行一次优化步骤
HER算法核心在于对智能体每一回合经验的再回放,对原始经验进行抽取,选择每一回合智能体所能获取的最后一个状态作为额外目标(HER最终策略),原本样本**(st||g, at, rt, st+1||g)** ,新样本** (st||g’, at, r’, st+1||g’)**,新旧样本都塞回经验缓冲区存储,用于智能体学习。
代码地址:https://github.com/PiggyCh/RL_arm_under_sparse_reward
作者:https://zhuanlan.zhihu.com/p/372962974
论文地址:https://arxiv.org/abs/2402.09092