在处理二元和稀疏奖励时,成功率和奖励有什么区别?

人工智能 强化学习 术语 文件 奖励函数 事后经验重播
2021-11-10 11:43:44

在 OpenAI Gym 中,“奖励”定义为:

reward(float):前一个动作获得的奖励量。规模因环境而异,但目标始终是增加您的总奖励。

我正在 Fetch 机器人环境中训练事后经验回放,其中奖励稀疏且二进制表示任务是否完成。实现 HER原始论文在其图中使用成功率作为指标,如下所示:

在此处输入图像描述

在原始论文的第 5 页上,声明奖励是二元和稀疏的。

当我打印在模拟FetchReach-v1HER 训练期间获得的奖励时,我得到以下值。第一列显示奖励,第二列显示剧集长度。

在此处输入图像描述

可以看出,在每一个时间步,我都得到了一个奖励,有时我得到一个1在整个剧集中的每个时间步奖励总共50. 我在整个剧集中可以获得的最大奖励是0.

因此我的问题是:每个时间步获得的奖励是多少?它代表什么,这与成功率有何不同?

1个回答

论文的第 6 页描述了确切的奖励函数,以及使用它们的原因:

目标:目标描述了对象的期望位置(一个盒子或一个冰球,取决于任务),具有一些固定的容差ϵIEG=R3fg(s)=[|gsobject|ϵ], 在哪里sobject是对象在状态 s 中的位置。HER 中使用的从状态到目标的映射很简单m(s)=sobject.

奖励:除非另有说明,否则我们使用二元和稀疏奖励r(s,a,g)=[fg(s0)=0]在哪里s是在状态 s 中执行动作 a 后的状态。我们在 Sec 中比较了稀疏和成形的奖励函数。4.4.

所以,至少在基本版本(我相信是你的fetchreach-v1)中,代理每花费超过ϵ从目标状态开始,每花费一个时间步,奖励 0ϵ的目标状态。因此,-5.0 分似乎对应于代理直接移动到目标并停留在那里,而 -50.0 分对应于代理未能完全达到目标状态。