在Fetch-task中HER不同奖励函数设置对成功率的影响探究实验
文章目录
前言:
因为我一直在做稀疏奖励相关的探索,所以对HER的稀疏奖励函数设置,充满了好奇,特别想知道,他的奖励函数非得设置成{-1, 0}吗?即任务没有完成的所有step奖励为-1,任务完成给奖励0.
设置成其他的,会不会也会有比较好的效果?这是当时OpenAI他们是随机选的,还是因为其他环境都是这样,所以老规矩也是这样。还是网格搜索出来的结果?
我没有查到他们是怎么确定的这个{-1, 0},我只是看到很多环境他们都是如此设置,难道说这个{-1, 0}本身就具有通用性?
但是架不住我的好奇,我实在是想知道,不同的奖励函数对结果的影响,由于之前我没有实现自动调参的功能,每次跑一组实验,需要手动点一次,对于这种大规模调参实验几乎是要命的事儿。
调用https://github.com/kaixindelele/DRLib/tree/main/tune_exps的脚本。
我测试了如下的参数组:
pos_list = [0.0, 0.1, 1.0, 2.5, 10.0]
nag_list = [0.0, -0.1, -1.0, -2.0, -10.0]
其中pos即positive的意思,替代原来的0,我们认为是正的奖励;
nag即nagtive的意思,替代原来-1的效果,可以简单认为是负的惩罚;
每组超参,分别在pick-and-place和push两个task中做了测试;
一共五十组实验。
超参数设置和原始HER论文的一致,唯一变化的是奖励函数;随机种子都是一样的!
最终衡量性能仍然用成功率success-rate来表示;
episode-reward-图:
批量plot了episode-reward图,发现实验太多了,根本无法看出什么规律。
pick-and-place:
push:
三维性能统计图:
为了更直观的对比不同的超参,对成功率的影响,我决定,将最终的成功率求平均后,画成一个柱状图!而且是3D的柱状图,一张图就可以展示5*5组实验结果;
pick-and-place:
push:
首先平面轴nag和pos是上面的定义;
纵轴是性能-成功率;
横轴的标签值是具体的标签,但是间距是被统一成了固定值(为了看起来舒服);
每一条横线,每一条竖线都是一组严格的对比实验。
简单的结论:
- 两个任务的超参结果并不一致;
- {0, 10}好像是比较好的一组超参;{-1, 0}不是最好的;{0, 1}和{-1, 0}差不太多;
- 不知道还能有什么其他有意思的发现,分享出来供大家参考;
plot的脚本需要的话,可以评论区见~
联系方式:
ps: 欢迎做强化的同学加群一起学习:
深度强化学习-DRL:799378128
欢迎关注知乎帐号:未入门的炼丹学徒
CSDN帐号:https://blog.csdn.net/hehedadaq
极简spinup+HER+PER代码实现:https://github.com/kaixindelele/DRLib