双 DQN 中的目标网络如何找到每个动作的最大 Q 值?

人工智能 强化学习 训练 dqn 深度学习 双dqn
2021-11-02 10:37:48

我理解神经网络用于将状态作为输入并输出状态-动作对的 Q 值这一事实。然而,为了计算它并更新它的权重,我们需要计算下一个状态的最大 Q 值s. 为了得到它,在 DDQN 的情况下,我们输入下一个状态s在目标网络中。

我不清楚的是:我们如何训练这个目标网络本身来帮助我们训练另一个 NN?它的成本函数是什么?

1个回答

在 DQN 和 DDQN 中,目标网络都以 Q 网络的精确副本开始,与 Q 网络具有相同的权重、层、输入和输出维度等。

DQN 代理的主要思想是 Q 网络从给定状态预测动作的 Q 值并选择其中的最大值并使用均方误差 (MSE) 作为其成本/损失函数。也就是说,它执行梯度下降步骤

(YtDQNQ(st,at;θ))2,

目标在哪里YtDQN被定义(在 DQN 的情况下)为

YtDQNRt+1+γmaxaQ(St+1,a;θt)

θ是 Q 网络权重和θ是目标网络权重。

在通常固定数量的时间步之后,目标网络通过复制 Q 网络的权重来更新其权重。因此,基本上,目标网络从不执行前馈训练阶段,因此忽略了成本函数。

在 DDQN 的情况下,目标定义为

YtDDQNRt+1+γQ(St+1,argmaxaQ(St+1,a;θt);θt)

如介绍 DDQN 的论文所述,该目标用于将动作的选择(即argmax部分)与其评估(即使用该选定动作计算下一个状态的 Q 值)分离

(2) 和 (3) 中的标准 Q 学习和 DQN 中的最大运算符使用相同的值来选择和评估动作。这使得它更有可能选择高估的值,从而导致过度乐观的价值估计。为了防止这种情况,我们可以将选择与评估分离