是否有任何可靠的方法可以修改奖励函数以使奖励不那么稀疏?

人工智能 强化学习 奖励 奖励塑造 奖励设计 稀疏奖励
2021-11-04 18:11:32

如果我正在训练一个代理以尽可能快地在迷宫中导航,一个简单的奖励就像

R(terminal)=Ntime  ,  NeverythingR(state)=0  if not terminal
即当它到达终端状态时,它会收到一个奖励,但如果它更慢,它会减少。实际上我不确定这比R(terminal)=1/time,所以如果我错了,请纠正我。

但是,如果迷宫真的很大,它可能会花很长时间在周围徘徊,甚至没有遇到那种奖励。是否有任何可靠的方法可以修改奖励函数以使奖励不那么稀疏?假设代理知道自己与出口之间的欧几里得距离,只是不知道迷宫的地形。

简单地做类似的事情是否完全合理

R(current)=(dE(start,exit)dE(current,exit))+(terminal==True)(Ntime)?

或者如果不是,哪种密集启发式奖励或其他技术可能更好?

1个回答

做一些你提议的密集的、基于距离的奖励信号是可能的……但你必须非常小心地去做。如果你不小心,并且以天真的方式去做,你可能会强化不受欢迎的行为。

例如,我阅读您提出的奖励函数的方式,它为代理采取的任何步骤提供积极的奖励,为使您更接近目标的步骤提供更大的奖励(除了回到开始的步骤,那些将有奖励0. 对于让你远离目标的动作,似乎没有任何带有负奖励的“补偿”;事实上,这样的步骤似乎也能带来积极的回报!这意味着您的智能体最终可以学习的最佳行为是无限期地在圆圈中移动(有点接近目标,但从不完全进入目标),不断获得这些积极的奖励。

添加一些额外(启发式)奖励以加速学习的想法被称为“奖励塑造”。如上所述,奖励塑造的幼稚方法通常最终会无意中修改“真实”目标。实现奖励塑造的正确方法是基于潜力的奖励塑造,可证明不会修改最优策略这背后的基本直觉是,如果您使用奖励塑造来鼓励在一个“方向”上“移动”,您还应该提供等价物(考虑到折扣因子γ) 对随后在另一个“方向”上的“运动”感到沮丧。

现在,有一篇非常酷的论文,名为“将任意奖励函数表示为基于潜力的建议”,它提出了一种方法,可以像你所做的那样,自动从以更“自然”或“直观”方式指定的额外奖励塑造函数转换为(大约)一种更可能实际正常运行的基于潜在的。不过,这并不是很简单,并且该方法涉及学习一个附加值函数,该函数会进行用于实现“转换”的附加预测。所以......在实践中,在像你这样的简单网格世界中,我认为自己找出正确的基于潜力的定义比尝试像这样学习它更简单,但它仍然很酷。