我是 RL 和深度 q 学习的新手,我有一个关于神经网络架构的简单问题,可以在具有连续状态空间和离散动作空间的环境中使用。
我坚持认为行动应该与状态一起作为神经网络的输入。当您必须计算 argmax 或 max wrt 时,这对我来说也很有意义这就像一个“标准”功能。然后我看到了一些仅作为输入的网络示例并且输出的数量与可能的操作数量一样多。我很理解这背后的逻辑(复制动作状态的 q 值对),但这真的是正确的方法吗?如果是这样,你如何计算或者? 我是否必须为每个输出关联一个动作?
我是 RL 和深度 q 学习的新手,我有一个关于神经网络架构的简单问题,可以在具有连续状态空间和离散动作空间的环境中使用。
我坚持认为行动应该与状态一起作为神经网络的输入。当您必须计算 argmax 或 max wrt 时,这对我来说也很有意义这就像一个“标准”功能。然后我看到了一些仅作为输入的网络示例并且输出的数量与可能的操作数量一样多。我很理解这背后的逻辑(复制动作状态的 q 值对),但这真的是正确的方法吗?如果是这样,你如何计算或者? 我是否必须为每个输出关联一个动作?
我是否必须为每个输出关联一个动作?
你是绝对正确的!在 DQN 中,神经网络的每个输出节点都将与您的一个可能动作相关联(假设一个有限的离散动作空间)。通过网络传递一个输入后,每个输出节点的值就是相应动作的估计 q 值。这种架构的一个好处是您只需将输入通过神经网络一次即可计算每个动作的 q 值,该值在动作数量上是恒定的。如果您要将一个动作作为神经网络的输入与观察一起包含在内,那么您需要为每个动作传递一个输入,该输入在动作数量上呈线性比例。这在原始 DQN 论文的第 4.1 节第 2 段中提到(https://arxiv.org/abs/1312.5602)
这真的是正确的方法吗?如果是这样,您如何计算 argmax 或最大值?
这是许多流行算法(例如 DQN)中使用的一种可能方式。要找到 argmax,您只需在通过网络传递输入后,采取与具有最高 q 值的输出节点对应的操作。