我们如何定义环境的奖励函数?

人工智能 强化学习 奖励函数 奖励设计 奖励塑造
2021-11-11 01:38:59

您如何实际决定在给定状态下为环境中的每个动作提供什么奖励值?

这纯粹是实验性的并且取决于环境的程序员吗?那么,这是一种简单地尝试不同奖励值并查看学习过程如何形成的启发式方法吗?

当然,我知道奖励值必须有意义,而不是完全随机的值,即如果代理犯错则扣分等。

那么,我是否说得对,只是为环境中编码的动作尝试不同的奖励值,看看它如何影响学习?

2个回答

在强化学习 (RL) 中,奖励函数是问题定义的一部分,应该:

  • 主要基于代理的目标。

  • 考虑起始状态的任意组合s, 所采取的行动a, 结果状态s和/或随机量(恒定量只是具有概率为 1 的固定值的随机量)。除了这四样东西之外,你不应该使用其他数据,但你也不必使用它们中的任何一个。这很重要,因为使用任何其他数据都会阻止您的环境成为马尔可夫决策过程 (MDP)。

  • 鉴于第一点,尽可能直接和简单。在许多情况下,这就是您所需要的。赢得一场比赛的奖励为+1,平局为0,失败为-1,足以完全定义大多数2人游戏的目标。

  • 一般来说,对您希望代理完成或重复的事情有积极的奖励,对您希望代理避免或尽量减少做的事情给予消极的奖励。例如,当目标是尽快完成任务时,每个时间步的固定奖励为 -1 是很常见的。

  • 一般来说,对于与目标没有直接关系的任何事情,奖励 0。这允许代理自己学习使用特定状态/动作或时间资源的轨迹是否值得。

  • 为方便起见进行缩放。在理论上,用一个共同的因素来衡量所有奖励并不重要,因为完全相同的行为将是最优的。在实践中,您希望在分析学习结果时易于自己评估奖励的总和,并且您还希望您实施的任何技术解决方案都能够应对价值范围。简单的数字(例如 +1/-1)可以实现基本奖励。

理想情况下,您应该避免使用启发式函数来奖励代理的临时目标或结果,因为这会将您对问题应该如何解决的意见插入系统中,并且实际上可能不是最佳目标。事实上你可以看到基于价值的强化学习的目的是从更稀疏的奖励函数中学习一个好的启发式函数(价值函数)。如果你已经有一个很好的启发式函数,那么你可能根本不需要 RL。

您可能需要在单个奖励函数中比较结果中非常不同的部分。这可能很难正确平衡,因为奖励函数是单个标量值,必须定义在单个场景中平衡不同目标的含义。如果您确实有想要组合的非常不同的指标,那么您需要更加努力地思考这意味着什么:

  • 在可能的情况下,将奖励信号扁平化为相同的单位,并围绕它们建立你的目标。例如,在商业和生产过程中,是否可以使用货币作为奖励单位,并将使用的能源、运输距离等转换为该货币。

  • 对于高度负面/不想要的结果,与其分配负面奖励,不如考虑对环境的约束是否更合适。

您可能对希望代理使用的环境的有效解决方案有意见。在这种情况下,您可以扩展或修改奖励系统以反映这一点 - 例如,为实现一些临时子目标提供奖励,即使它不是您关心的直接结果。这被称为奖励塑造,可以在困难的问题中以实际的方式提供帮助,但您必须格外小心,不要破坏事物。

还有更复杂的方法使用多个价值方案或没有外部应用的方案,例如分层强化学习或内在奖励。这些可能是解决更复杂的“现实生活”环境所必需的,但仍然是积极研究的主题。因此请记住,以上所有建议都描述了当前的 RL 主流,并且您对该主题的研究越深入,就会有更多选择。

这纯粹是实验性的,并且取决于环境的程序员。那么,这是一种简单地尝试不同奖励值并查看学习过程如何形成的启发式方法吗?

一般没有。您应该将奖励函数建立在对问题的分析和您的学习目标的基础上。这应该在一开始就完成,然后再尝试定义学习过程的超参数。

如果您尝试不同的值,尤其是问题的不同方面之间的不同相对值,那么您可能正在改变代理以最佳方式表现的含义。这可能是您想要做的,因为您正在研究如何构建原始问题以实现特定行为。

然而,在逆强化学习之外,更常见的是想要一个定义明确的问题的最佳解决方案,而不是一个与您愿意更改问题定义以满足的其他观察结果相匹配的解决方案。

那么,我是否说得对,只是为环境中编码的动作尝试不同的奖励值,看看它如何影响学习?

通常情况并非如此。

相反,请考虑如何定义代理的目标。编写封装这些目标的奖励函数。然后专注于对代理的更改,使其能够更好地学习如何实现这些目标。

现在,您可以按照您的建议进行操作。但是,在这种情况下,您正在做的是改变问题定义,并查看某种代理在解决各种问题方面的能力。

是的,你是对的。这在某种程度上是一个任意的选择,尽管如果您决定超出 +/- 1 的值,您应该考虑激活函数的合理数值范围。

如果您的环境可以识别这些状态,您还可以考虑是否要为达到接近目标的状态的代理添加小奖励。

如果您想对奖励值有更多的机器学习方法,请考虑使用 Actor-Critic 安排,其中第二个网络学习非目标状态的奖励值(通过观察代理探索的结果),尽管您仍然需要根据您手工制作的启发式方法确定最终状态值。