gpt4 book ai didi

keras - 为什么 keras-rl 示例总是在输出层选择线性激活?

转载 作者:行者123 更新时间:2023-12-01 13:55:47 27 4
gpt4 key购买 nike

我是强化学习的新手。我有一个关于 keras-rl 代理的输出层激活函数选择的问题。在 keras-rl ( https://github.com/matthiasplappert/keras-rl/tree/master/examples ) 提供的所有示例中,在输出层选择线性激活函数。为什么是这样?如果我使用不同的激活函数,我们会期待什么效果?例如,如果我使用离散 Action 空间为 5 的 OpenAI 环境,我是否还应该考虑在代理的输出层中使用 softmax?
非常感谢。

最佳答案

对于 keras-rl 中的一些代理 linear即使代理使用离散 Action 空间(例如 dqn、ddqn),也会使用激活函数。但是,例如,CEM 使用 softmax离散 Action 空间的激活函数(这是人们所期望的)。

背后的原因linear dqn 和 ddqn 的激活函数是它的探索策略,它是代理的一部分。如果我们将用于它们的探索策略类作为示例和方法 select_action ,我们将看到以下内容:

class BoltzmannQPolicy(Policy):
def __init__(self, tau=1., clip=(-500., 500.)):
super(BoltzmannQPolicy, self).__init__()
self.tau = tau
self.clip = clip

def select_action(self, q_values):
assert q_values.ndim == 1
q_values = q_values.astype('float64')
nb_actions = q_values.shape[0]

exp_values = np.exp(np.clip(q_values / self.tau, self.clip[0], self.clip[1]))
probs = exp_values / np.sum(exp_values)
action = np.random.choice(range(nb_actions), p=probs)
return action

在每一个 Action 的决策过程中,输出 linear最后的激活函数 dense layer根据Boltzmann探索策略变换到范围[0,1],根据Boltzmann探索做出具体 Action 的决定。这就是为什么 softmax不用于输出层。

您可以在此处阅读有关不同探索策略及其比较的更多信息:
https://medium.com/emergent-future/simple-reinforcement-learning-with-tensorflow-part-7-action-selection-strategies-for-exploration-d3a97b7cceaf

关于keras - 为什么 keras-rl 示例总是在输出层选择线性激活?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45493987/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com