本文是伯克利深度强化学习课程CS294Q学习12部分的笔记,源代码部分见GitHub

Q迭代算法

在动作评价算法中,我们根据Q函数来决定策略的更新幅度和方向。根据定义Q函数表示当前状态下采取某一个动作后产生的累计奖励的期望,Q迭代算法就是直接拟合Q函数,在做决策中直接选择Q函数值最大的动作。

  1. 使用策略收集数据
  2. 拟合K次:
  3. 回到第(1)步

由于Q迭代算法从状转移过程中学习参数,和具体采样使用的策略没有直接关系,因此该算法是离策略算法。

探索过程

Q迭代得到的策略为

在训练过程我们需要不断对轨迹进行采样,根据上述策略,算法总是选择Q函数最大的动作执行。但是,这里存在着问题,在训练过程中,当前最佳Q值可能只是局部最小值,因此在训练采样过程中需要让策略以一定的概率去尝试其他动作。比较常用的探索策略有:

  • 贪婪
  • 玻尔兹曼探索

算法拓展

双Q学习

对于两个随机变量, 有。对于目标网络来说,,因此估计的Q值可能会稍微偏大。解决方法就是采用两个Q网络,让选择动作和计算估计的网络无关:

多步返回

Q函数的拟合目标为:,由于的存在,这并不是关于Q的无偏估计。多不返回采用的方案是采用向后累计进行估计:

似乎看起来不错,但是这样优化会导致算法变成“在策略”算法,因为算法需要连续的轨迹而不是简单的状态转移。

连续动作

对于连续动作来说,最大的困难是计算

方法一:优化。可以考虑针对进行数值优化,从而得到较优的。如果动作的维度比较低,那么可以采用随机采样来寻找最优值。

方法二:选择容易优化的函数拟合Q。比如NFA(Normalized Advantage Functions)函数:

NAF对应的最优值点为,最优值为

方法三:学习最大化选择器。学习一个,那么,这其实就是DDPG算法:

  1. 采样轨迹添加到数据集
  2. 从数据集中采样一批训练数据
  3. 使用神经网络计算
  4. 计算
  5. 计算
  6. 更新
  7. 回到(1)

深度Q网络实验3

初步训练

在3,000,000步之后,DQN到达最高水平,之后便开始上下起伏。

参数调整

本文主要探索输入帧数对于性能的影响,实验中当帧数为4的时候性能最好。

实验中直接将多个帧堆积到一起输入卷积神经网络,其实还可以考虑在全连接层引入循环单元或者使用卷积LSTM4

参考文献