表格型方法的缺点无法应对高维离散状态空间或连续状态空间。问题维度灾难和泛化问题维度灾难以围棋为例棋盘有19*19361个交叉点每个交叉点有3个状态总共有3^361个状态每个状态的动作有362个从而Q表元素总数比宇宙中所有原子的总数还要多。泛化问题以彩色图像为例即使两个图像只有一个像素的差异也会用完全不同的Q值存储从而导致数据稀疏。3.1 DQN的基本思想把S作为输入Q值作为输出拟合每个具体的Q值。这一方面不用存储所有的Q值从而解决维度灾难问题另一方面由于相似状态Q值相似从而解决泛化问题。DQN就是利用深度神经网络来拟合动作价值函数训练的目标是逼近最优动作价值函数。输入状态S输出每个动作对应的Q值。DQN更新参数θ目的是让输出Q(s,a;θ)越来越逼近Q*(s,a)。由于并没有Q*(s,a)所以可以使用Q-Learning中的TD Target作为Q*(s,a)因为其中含有部分真实的奖励信息所以更可靠。训练过程1将st作为神经网络输入输出每个动作的Q值。利用ε-greedy策略选择一个动作at并将这个动作对应的Q(s,a;θ)作为预测值2在st下做动作at和环境互动得到rt1和st13接下来计算TD Target将st1输入神经网络得到每个动作的Q值选取最大值然后乘以折扣因子再加上rt1得到label值4接下来就是定义损失函数和训练普通神经网络一样了3.2 DQN的核心机制一共两个核心机制经验回放和目标网络3.2.1 经验回放每和环境交互一次得到一条经验问题是数据有时序相关性越近状态的数据越相似导致神经网络只能适配局部状态信息解决方法经验回放收集到数据后放在经验池保存起来从经验池随机抽取一个batch数据训练从而打破了强相关性。3.2.2 训练目标不稳定预测值和训练label中都有θ当预测值为了接近label修改了θlabel值也会变化从而让DQN不稳定解决方法一共有两个网络一个是在线网络用于实时在线训练更新参数一个是目标网络参数冻结比如说1000步这样label值会在一段时间内保持不变从而让训练变稳定。3.3 DQN的进阶技巧3.3.1 Double DQNDQN的label值为虽说Q值有正向误差和负向误差但是max操作倾向于选择正向误差而且st下的动作价值依赖于st1下的动作价值从而错误还会从上游的动作价值传递。解决方法在线网络选择最优动作目标网络给最优动作打分估值由于两个网络有不同的参数误差也不同从而缓解高估问题。3.3.2 Dueling DQN在许多情况下一个动作的价值很大程度上取决于当前的状态和具体做什么动作影响不大。Dueling DQN把Q值拆分为两部分分别估计一部分是状态价值一部分是优势函数它的值等于动作a的Q值减去所有动作的Q值的均值。状态价值表示当前局势好不好优势函数表示在当前局势下做动作a相比于做其他动作好不好。但是学习的目标还是学习状态下不同动作的Q值和label值还是TD Target都没有变从而没有信号监督到底一个动作的Q值多少应该分给状态价值多少应该分给动作的优势值。解决方法强制优势函数的均值为0来限制网络。强制优势函数的均值为0来限制网络的目的1赋予Vs明确的物理意义等于所有动作Q值的平均期望使得V分支能稳定地学习状态的内在价值2分离状态评估和动作评估A变成纯粹的相对度量3提升样本效率网络可以通过V分支获得关于该状态的良好估计从而即使某些动作在当前策略下很少被探索也能表现很优。参考视频RethinkFun的个人空间-RethinkFun个人主页-哔哩哔哩视频