我有一个关于在既有正向又有负向奖励的环境中选择合适的激活函数的问题。
在强化学习中,我认为我们的输出应该是所有可能动作的预期奖励。由于有些选项会有负向奖励,我们希望输出范围能够包括负数。
这让我认为,唯一合适的激活函数应该是线性函数或tanh函数。然而,我在许多强化学习论文中看到使用了Relu函数。
所以有两个问题:
-
如果你确实想要同时输出正负值,是否只能使用tanh和线性函数?
-
如果可能的话,将奖励值调整为全正数(例如,将[-1,0,1]调整为[0, 1, 2])是否是更好的策略,这样模型就可以利用其他激活函数?
回答:
许多强化学习论文确实对大多数层使用了Relu函数,但通常不会用于最终输出层。你在评论中提到了《通过深度强化学习实现人类级控制》和《后见之明经验重放》这两篇论文,但这两篇论文都没有描述使用Relu函数作为输出层的架构。
在《通过深度强化学习实现人类级控制》论文中,第6页(参考文献之后),“方法”部分的最后一段关于“模型架构”的部分提到,输出层是一个全连接的线性层(不是Relu)。因此,确实,所有隐藏层只能有非负的激活水平(因为它们都使用Relu),但如果输出层与最后一层隐藏层之间有负权重,输出层可以有负的激活水平。这是必要的,因为它应该生成的输出可以被解释为Q值(这些值可能是负的)。
在《后见之明经验重放》论文中,他们没有使用DQN(像上面那篇论文),而是使用了DDPG。这是一个“演员-评论家”算法。该架构的“评论家”部分也旨在输出可能为负的值,类似于DQN架构,因此输出层也不能使用Relu(但在网络的其他部分仍然可以使用Relu)。在该论文的附录A中,关于“网络架构”的部分也描述了演员输出层使用tanh作为激活函数。
回答你的具体问题:
- 如果你确实想要同时输出正负值,是否只能使用tanh和线性函数?
- 如果可能的话,将奖励值调整为全正数(例如,将[-1,0,1]调整为[0, 1, 2])是否是更好的策略,这样模型就可以利用其他激活函数?
- 嗯,还有其他激活函数(如leaky relu,
sigmoid,可能还有很多其他函数)。但Relu确实不能产生负输出。 - 不确定,可能是的。不过,如果你对奖励(和/或回报)可能有多大或多小没有领域知识,这通常会很困难。我感觉通常更容易简单地以一个全连接线性层结束。