这是奖励塑造中的常见问题。您希望您的代理有某种行为,但要完全用奖励来描述它具有挑战性。您所描述的这种情况特别具有挑战性,因为随着网格世界的增长,随机绊倒目标状态的机会变得不太可能 AKA 探索问题。不过,有一些技术可以用来解决这个问题,这里有一些。
0)这是环境和伽玛的一个紧急属性(基于0,因为它更直接地解决您的问题:p)
如果 gamma 很小,您的代理会更重视近期的奖励,而当 gamma 接近 1 时,代理会更重视未来的奖励。在您的网格世界中,网格的大小会影响此伽玛如何影响您的代理。就像在您的示例中一样,如果您的网格是 100x100,如果陷阱靠近代理,则您的 gamma 必须接近 0 才能让您的代理避开陷阱,因为它比移动到“不”的单元更糟糕一个陷阱。这很有趣,因为 gamma 的全部目的是增加暂时远离奖励的加权值,但是当您使陷阱比目标更有利时,进入陷阱是最佳策略。:)
1) 在模型中包含更多观察数据
这并不总是可能的,但根据您的应用程序和可用的资源,您可能会为您的代理提供解决您的任务所需的信息。例如,在您的无限网格示例中,您可以包括代理与目标之间的距离或目标的方向。
2) 包括有助于塑造进步方向的奖励。
人们可以轻松地创建一个无限的网格世界,其中实际上没有目标,而是一项持续的任务,代理必须在所需方向上覆盖距离,同时避开障碍物。你会如何处理这个问题?也许是一种奖励,它专门查看代理在所需方向上随时间访问的细胞数量,也就是速度的离散模拟。当然,这仍然取决于一个已知的方向,但是考虑如何随着环境的增长(例如,向网格世界添加越来越多的单元格)处理环境的“限制”有助于直观地了解您的代理可能会丢失。
3) 使用基于好奇心的方法
从 2) 开始,如果方向未知,要考虑的一件事是,不要对每个时间步进行惩罚,而是激励代理更快,奖励访问“不常访问”状态。由于任务要求智能体尽可能快地执行,因此保持或返回到先前访问过的状态显然不会使智能体受益。采用这种奖励“不经常访问/未访问过/状态”的概念,进一步导致了最近的研究课题,即利用好奇心让 RL 代理具有新颖的探索策略。
尽管定义好奇心的方法有很多(经常有争议),但它们都有一个想法,即当智能体进入以前从未访问过的状态时给予奖励。一篇很好地回顾了好奇心方法并介绍了一种新方法的论文是来自 OpenAI的Random Network Distillation 。