为什么我们在进行策略梯度强化学习时要对折扣奖励进行归一化?

数据挖掘 强化学习
2021-10-11 01:15:57

我试图了解解决购物车问题的策略梯度方法在这种方法中,我们将策略的每个参数的损失梯度表示为对序列中所有动作的策略梯度梯度总和的期望,由该序列中的折扣奖励总和加权:

θL(θ)=E[G(S0:T,A0:T)t=0Tθlogπθ(At|St)]

我们使用一集中所有样本的经验平均值来估计它——这在直觉上是有意义的。

但不太直观的部分是我看到了一种常见的做法,即在几个实现中规范化情节之间的优势(实际上它工作得更好)。因此,在他们计算出之后,他们不会直接使用优势,而是会对其进行标准化,例如他们在每一集之后都会这样做:

discounted_epr = discount_rewards(epr)
discounted_epr -= np.mean(discounted_epr)
discounted_epr /= np.std(discounted_epr)

这样做的理由是什么——无论是理论上还是直觉上?在我看来,如果一集很长并且具有很大的优势,那么从那集中学习比从 3 步集中学到的更多。我错过了什么?

2个回答

一般而言,出于稳定性目的,我们更愿意将回报标准化。如果你计算出反向传播方程,你会发现返回会影响梯度。因此,我们希望将其值保持在一个特定的方便范围内。我们不遵循这种做法是为了理论上的保证,而是出于实际原因。剪辑也是如此QQ-learning 中的价值函数与 NN 相结合。当然,这些方法也有一些缺点,但总的来说,算法表现得更好,因为反向传播不会导致网络权重达到极值。请看一下Andrej Karpathy的这篇出色的文章(我将与您的问题相关的部分作为引用附在上面),它提供了更多的见解:

更一般的优势功能。我还承诺对回报进行更多讨论。到目前为止,我们已经根据我们是否赢得比赛来判断每个动作的好坏。在更一般的 RL 设置中,我们会收到一些奖励rt在每个时间步。一种常见的选择是使用折扣奖励,因此上图中的“最终奖励”将变为Rt=k=0γkrt+k, 在哪里γ是一个介于 0 和 1 之间的数字,称为折扣因子(例如 0.99)。该表达式指出,我们鼓励采样动作的强度是事后所有奖励的加权和,但后来的奖励成倍地不那么重要。在实践中,标准化这些也很重要。例如,假设我们计算Rt对于上述 100 个 Pong 游戏推出批次中的所有 20,000 个动作。一个好主意是在我们将它们插入反向传播之前“标准化”这些回报(例如减去均值,除以标准差)。这样,我们总是鼓励和阻止大约一半的已执行操作。从数学上讲,您还可以将这些技巧解释为控制策略梯度估计器方差的一种方式。更深入的探索可以在这里找到。

您可能会发现以下参考资料很有用:

  • 第 4.1.2 节优势标准化:他们提到标准化优势是一种对训练有用的技巧。它通常会导致更快的学习。
  • 跨越多个数量级的学习值:它们给出了奖励标准化的算法,并对 Atari 环境进行了详细的实验。基本思想是奖励可以在很大范围内变化,并且在 RL(例如神经网络)中使用的函数逼近器通常对输入的规模不是不变的。所以规范化成为关键步骤。请查看本文以获取更多详细信息。