具有负奖励的 RL 激活函数

RL Activation Functions with Negative Rewards

我有一个关于在具有正负奖励的环境中使用适当的激活函数的问题。

在强化学习中,我认为我们的输出应该是所有可能行动的预期奖励。由于某些选项具有负回报,因此我们希望输出范围包含负数。

这会让我相信唯一合适的激活函数是线性函数或 tanh。但是,我看到很多 RL 论文都使用了 Relu。

所以两个问题:

  1. 如果您确实想要同时具有负输出和正输出,是否仅限于 tanh 和线性输出?

  2. 是否有更好的策略(如果可能)扩大奖励,使它们都在正域中(即而不是 [-1,0,1],[0, 1, 2]) 为了让模型利用替代激活函数?

许多 RL 论文确实将 Relu 用于大多数层,但通常不用于最终输出层。您在其中一条评论中提到了通过深度强化学习进行人类水平控制的论文和 Hindsight Experience Replay 论文,但这两篇论文都没有描述将 Relu 用于输出层的架构。

在 Human Level Control through Deep RL paper,第 6 页(参考后),第 "Methods" 节,关于“Model architecture”部分的最后一段提到输出层是一个全连接的线性层(不是 Relu)。因此,实际上,所有隐藏层只能具有非负激活级别(因为它们都使用 Relus),但如果输出层和最后一个隐藏层之间存在负权重,则输出层可以具有负激活级别。这确实是必要的,因为它应该创建的输出可以解释为 Q 值(可能是负数)。

在Hindsight Experience Replay 论文中,他们没有使用DQN(像上面的论文),而是DDPG。这是一个 "Actor-Critic" 算法。该架构的 "critic" 部分也旨在输出可以为负的值,类似于 DQN 架构,因此这也不能将 Relu 用于输出层(但它仍然可以在网络的其他任何地方使用 Relus ).在本文的附录A中,在“网络架构”下,也描述了actor输出层使用tanh作为激活函数。

回答您的具体问题:

  1. If you do want to have both negative and positive outputs, are you limited to just tanh and linear?
  2. Is it a better strategy (if possible) to scale rewards up so that they are all in the positive domain (i.e. instead of [-1,0,1], [0, 1, 2]) in order for the model to leverage alternative activation functions?
  1. 嗯,还有其他激活(leaky relu,sigmoid,可能还有很多)。但是 Relu 确实不能导致负输出。
  2. 可能不是 100% 确定。但是,如果您不了解可能获得多少奖励(and/or returns)的领域知识,这通常会很困难。我有一种感觉,简单地以一个完全连接的线性层结束通常会更容易。

If you do want to have both negative and positive outputs, are you limited to just tanh and linear?

不,这只是输出层激活函数的情况。对于所有其他层,这并不重要,因为您可以有负权重,这意味着只有正值的神经元仍然可以为下一层贡献负值。