作为经典的算法之一,网上已经有很多的介绍了,这里是我自己的学习笔记,只关注核心重点的部分。
motivation:为了解决反馈稀疏的问题,修改目标,从而使有效回报数量变多
问题formulation: 稀疏奖励的情况
Bit Flipping问题:一个长度为N的由0和1组成的数组,每次可以反转一个数字,如果这个数组和目标数组一致时,给予正奖励,否则给予负奖励。显然,长度N越大,达到目标数组需要反转的步数越多,是一个明显的稀疏奖励问题,学习的难度和N十分相关。
对于稀疏奖励问题,学习一个可行的策略是非常困难的,一种常见的解决方法就是奖励塑形,重新设计奖励,通过新的奖励函数给予智能体一定的指导,可以更容易的学习策略。但是这种方法需要一定的专业知识,如果设计不合适,可能会出现reward hacking等问题
现在对问题继续分析,假设初始状态为 s 0 s_0 s0,目标状态为 s t s_t st,经过T步后,得到的状态为 s T s_T sT,虽然没有达到目标状态 s t s_t st,但是万一以后的目标状态是 s T s_T sT呢,因此这部分也是可以作为经验保存下来的!
这就是HER的核心想法:对策略更新过程中探索到的状态/目标进行记忆和反思,假想是未来会学习的目标,对经验池进行数据增强,充分利用了失败的经验
伪代码:
流程简单解释:对采样的buffer进行处理,重新选取新的目标,替换原始目标,并计算新的奖励,得到新的buffer
如何选取新的目标作为经验回放
论文给出了四种方式:final,random,episode,future
- final: 只取每个episode所获得的最后一个transition中state推算而得的goal来回放经验。
- random: 从迄今为止所有transition中取k个推算出goals来回放经验。
- episode: 从当前episode中所有transition中取k个推算出goals来回放经验。
- future: 对于episode中 t r a n s i t i o n i transition_i transitioni所使用的回放goals,其为 t r a n s i t i o n i transition_i transitioni之后的k个transition(随机取)推算出来的goals。
缺点:
- 万一探索的到的就是错误的,根本不会引导agent达成最终目标呢,或者是次优的呢,加噪声会缓解?鼓励探索会好些?
- 还有就是,环境的目标集合中是有可能包括当前状态的,或者新选择的状态/目标是可以作为subgoal,这对环境有一定的要求
- 仅适用于使用buffer的off-policy算法
- 需要记录每个episode transition的列表,在每个episode结束之后进行事后经验回放
- 需要计算新goal的reward
- 选择新的目标不会改变原来状态的转移概率
为什么不适用于on-policy:
- on-policy和off-policy的区别:Q值更新不同,注意两个Q值的更新公式
- 如果将HER应用于on-policy中,在选择新的goal时,是无法及时更新Q(s’|new goal, a’)的,而off-policy的max操作就可以保证更新到新的Q值—来自Yumho
- 我认为是,on-policy中target是和action(policy)有关的,而off-policy是和action(policy)无关的,也就是采样数据的分布问题(重要性采样的问题),如果应用在on-policy中,那么target的分布是发生改变的,需要修正才能作为更新的target
对HER的一些改进:
- Curriculum-guided Hindsight Experience Replay:并不是采样的new goal都是有用的,自适应的经验replay生成new goal
- Bias-Reduced Hindsight Experience Replay with Virtual Goal Prioritization:实现优先级采样new goal,以及过滤无用的样本减少偏差
- Relay Hindsight Experience Replay: Self-Guided Continual Reinforcement Learning for Sequential Object Manipulation Tasks with Sparse Rewards:实现了复杂顺序任务的自我引导策略
参考:
Hindsight Experience Replay
https://blog.csdn.net/weixin_43145941/article/details/119219436
https://zhuanlan.zhihu.com/p/501043736
https://cloud.tencent.com/developer/article/1541893
https://gyh75520.github.io/2018/03/22/Hindsight_Experience_Reply/
http://www.deeprlhub.com/d/133-on-policyoff-policy