为什么(以及何时)必须从强化学习的样本中学习奖励函数?

机器算法验证 机器学习 强化学习
2022-03-12 04:33:42

在强化学习中,我们有一个奖励功能,可以告知智能体其当前动作和状态的执行情况。在一些通用设置中,奖励函数是三个变量的函数:

  1. 当前状态S
  2. 当前状态下的当前动作π(s)=a
  3. 下一个状态S

所以它看起来像:

R(S,a,S)

我的问题是(这可能是我的误解),通常使用强化学习的人决定奖励是什么。例如,它为达到目标分配 1000 分,或为使自主机器人崩溃而分配 -1000 分。在这些情况下,我不清楚为什么我们需要样本来学习 R。R 是先验指定的,然后我们使用我们的代理。正确的?但是,我知道我错了,因为在 Andrew Ng 的笔记中他说:

在此处输入图像描述

他说我们不明确知道奖励函数。这对我来说似乎很奇怪。我知道我错了,如果有人能向我澄清在什么情况下我们实际上必须从样本中学习 R,我会很高兴?

(显然,必须学习转移概率,因为人们不知道环境将如何使我们的代理先验地移动)。

4个回答

在他的笔记中,当你必须“从数据中估计它们”时,他并不是指奖励函数你很少估计奖励函数。您通常会学习价值函数,它估计即时奖励加上时间折扣的未来奖励(如果时间折扣为零,那么您正在估计奖励)。或者,您可以学习Q 值,它们是与状态-动作对关联的值。

总之,奖励函数和真正的转换函数是由环境定义的。代理学习诸如转移函数、Q 值和价值函数之类的东西。

我同意其他答案,通常不会直接学习奖励功能。

转移概率也不必学习。代理可以直接学习动作值,甚至直接学习策略,例如使用策略梯度方法。

然而,有些技术必须学习奖励和转换概率。例如,dyna-Q 算法(在 Sutton & Barto 中描述)维护环境模型。在每个时间步,代理使用从环境中接收到的奖励和状态信息来更新动作值,就像在 Q-learning 中一样。

但它也会更新自己的环境模型,然后基于该模型执行 N 次其他动作值更新。假设是动作->感知循环需要一些非空时间,我们可以通过使用模拟样本改进动作值来充分利用这些时间。

这是一个很好的问题,比 Andrew 笔记中任何不精确的措辞都要深刻。确实,在 RL 中,您通常不需要学习奖励函数 R(S,A,S');您需要将其指定为问题设置的一部分。但是,有些算法(根据我的经验与后状态或决策后状态值函数相关)需要预期的奖励r(S,A) = E[R(S,A,S')|S,A]。一般来说,我看到的文本对此几乎没有评论,并假设 r(s,a) 就像 R(S,A,S') 已知一样。但在某些情况下,奖励取决于未来状态,因此,在没有模型的情况下,您需要了解这种期望。我目前正在研究一个需要学习预期奖励函数和价值函数的问题。请注意,大多数 RL 算法不需要预期的奖励函数,但有些算法需要。例如,参见 Szepesvari 的强化学习算法中第 58 页的讨论。

总之,您不需要学习奖励函数,但在使用决策后状态变量时,您可能需要学习预期奖励函数。这是我知道您需要学习预期奖励函数的唯一案例,但我很想听听其他案例。

在强化学习中,代理学习的是价值函数,而不是奖励函数。一个动作的价值在于它的整体效用;例如,一个动作可能会带来高回报,但会导致低价值状态,使其成为低价值。

引用说的是,有时世界是复杂的:有些问题的状态-动作空间太大而无法枚举,所以我们没有明确的转移概率和奖励函数。在这种情况下,智能体必须学习对真值函数的一些概括。