DQN相关知识总结及演员-评论员算法介绍(DataWhale组队学习笔记)

DQN基本概念及相关技巧

DQN(Deep Q-network)即深度Q网络,通过结合神经网络技术和价值函数近似,采用目标网络和经历回放的方法来进行网络的训练。

价值函数近似

在面对现实中的强化学习任务时,我们所遇到的状态空间往往是连续的,存在无穷多个状态,我们进行策略迭代算法过程中,再使用Q-表格的方法显然很难满足训练的需求。我们通过神经网络,来实际训练一个函数,从而避免了存储Q-表格的需求。

价值函数近似方法:

Q_{\phi}(s,a){\approx}Q_{\pi}(s,a)

其中 \phi 为Q函数的参数,通过神经网络来训练。

策略迭代算法中,最大化Q-表格的部分转化为训练近似Q函数;价值迭代算法中,依然可以进行值函数的训练,因此不需要价值函数近似。

目标网络

在进行函数更新时,每一个状态的转移 s_t{\rightarrow}s_{t+1} 都会导致Q函数的变化,在神经网络中,函数的变化意味着梯度的不断变化,在上一个函数的梯度上升部分,在下一个函数有可能反而是梯度下降的部分。因此Q函数的不断变化导致网络的训练来回反复,很难高效的收敛。

为此,我们固定住一个目标网络,在多步迭代过程中使用同一个目标Q函数,让其稳定的进行训练,在进行n步后,再更新Q函数。n是一个超参数,在目标网络收敛时更新Q函数应该是一个比较好的时机,但有时为了让下一次的收敛更快,提前更新Q函数可能会带来更好的效果。

探索

在我们进行函数迭代的过程中,在迭代早期,获得高奖励的策略更可能会被更多的采样,这样很可能导致某些策略从未被采样到,从而缺失了对这些策略的评估。为了避免这个问题,我们在探索的早期采用一些随机性来采样到更多的策略。

\varepsilon -贪心方法会以 \varepsilon 的概率进行随机的探索。

玻尔兹曼探索用系数T来控制抽样的概率模型:\pi(a|s)=\frac{e^{Q(s,a)/T}}{\sum_{a'{\in}A}e^{Q(s,a')/T}}

经验回放

我们在训练过程中,演员按照策略 \pi 与环境交互一个周期的时间是很长的,我们通过将收集的数据放到一个数据缓冲区中,每次训练从中抽取一个批量的数据来训练,达到重复利用数据的效果,从而使得训练的性能更好。保存到缓冲区的数据会在容量满时替换掉旧数据,同时不会保存重复的数据。


DQN进阶技巧

Double DQN

在策略迭代过程中,我们每次通过 \mathop{\mathrm{argmax}}\limits_{a}{Q(s_t,a)} 找到的最优策略,在计算Q函数时,总是{\max}Q(s_t,a)+r_t,如果网络的误差使得某项被高估后,这一个被高估的部分就永远不会消失,导致最终计算出来的Q函数总是高于实际的值。为此我们引入另一个Q-网络。

在Double DQN中,我们设置两个Q-网络,一个用来决定中的最优策略,一个用找出的 a 来计算新的Q值。

这样做使得,两个Q-网络只要不同时高估一个值,就很难出现高估的情况。

在实现上,我们直接使用目标网络(也就是n次迭代内固定住的网络)来计算新的Q值,这样实际上没有增加任何的运算量。

Dueling DQN

对于Q函数,我们有:

Q(s,a)=V(s)+A(s,a)

其中 V(s) 对不同状态都有一个值,A(s,a) 对不同的状态和动作都有一个值。

我们通过将Q函数分为两部分来学习,使动作 a 单独影响其中一部分。在训练的时候,a 就不会对 V(s) 造成影响,这样就会强迫网络去分别更新两部分的值,从而使这两部分相互约束,增加了模型的稳定性。

分布Q-函数(Distributional Q-function)

我们训练Q函数时输出一个或多个值,分布Q-函数的思想是,我们直接输出一个值的分布,因为不同的分布有可能带来相同的期望。

在后续的工作中可能会用到分布方面的信息,例如在多个相同期望的动作中选择方差较小的那个来降低动作的风险。

Rainbow

将多种方法综合起来的技巧称作Rainbow,其效果往往是最好的。我们通过从中去掉某个方法,来评估这些方法的有效性。实验发现,拿掉Double DQN不会对结果造成什么影响,很可能是因为分布Q-函数的方法使得函数的计算不会出现高估,因此Double DQN就不再需要了。


针对连续动作的DQN

在实际中要解决的问题不像游戏中那样简单,动作的选取往往是非离散的,通过穷举不能得到动作 a,为此我们有以下几个思路:

方案一:采样。我们从动作空间中采样出 N 个动作来带入Q函数,这种方案可能难以做到较高的精确度。

方案二:将 a 当做参数来训练。这种方案是通过网络来训练连续函数,缺点是计算量较大,效率较低。

方案三:设计网络。通过将Q函数设定成一个固定的形式,带有一些函数特征而方便计算,从而降低计算量,缺点是函数的设计有一些限制,往往针对某些特定的情况。

方案四:不使用DQN。下面我们介绍演员-评论员算法来提供一个新的思路。


演员-评论员算法

演员-评论员算法是一种结合策略梯度和时序差分学习的强化学习方法。演员指策略函数 \pi_\theta(a|s),用来学习一个策略以获得尽可能高的回报,评论员指价值函数 V_\pi(s),用来评估演员的好坏。

对于连续动作的问题,我们通过训练一个演员的Q网络,通过神经网络来学习这个连续的函数问题,从而解决 \arg\max 的求解。

优势演员-评论员算法

回顾一下我们在策略梯度算法中增加baseline并加权后需要进行更新的梯度函数如下:

\nabla\bar{R}_\theta\approx\frac{1}{N}\sum_{n=1}^N\sum_{t=1}^{T_n}(\sum_{t'=t}^{T_n}\gamma^{t'-t}r_{t'}^n-b){\nabla}\log{p_\theta(a_{n,t}|s_{n,t})}

优势演员-评论员算法将其中 \sum_{t'=t}^{T_n}\gamma^{t'-t}r_{t'}^n-b 一项换成了优势函数 A_\theta(s_{n,t},a_{n,t})

 \mathbb{E}[G_{n,t}]=Q_{\pi_\theta}(s_{n,t},a_{n,t}) 用来替代折扣奖励,V_{\pi_\theta}(s_{n,t}) 用来替代基线b。通过同时学习两个网络——Q网络和V网络,从而迭代梯度。

更优化的方案是用V函数来表示Q函数,这样我们只需要学习一个网络,从而降低学习时的误差。

异步优势演员-评论员算法

异步优势演员-评论员算法的原理实际上很简单,就是通过多进程来增加计算的效率,采用多个演员-评论员同时训练,达到交替提交使用参数的情况,从而增加计算的速度。

路径衍生策略梯度

这个方法可以看成解连续动作的一种特别的方法。在一般的演员-评论员算法中,评论员负责评价一个动作的好坏,而在路径衍生策略梯度方法中,评论员会直接告诉演员什么样的动作才是好的。

首先,我们根据目标网络技巧,设定Q函数,目标Q函数 \hat{Q},演员 \pi,目标演员 \hat{\pi}

然后,我们通过将演员 \pi 与Q-网络结合,学习 Q(s_i,\pi(s_i)) 函数,使其逼近目标函数y=r_i+\hat{Q}(s_{i+1},\hat{\pi}(s_{i+1})),让评论员Q告诉演员 \pi 什么动作才是好的。

通过分布更新Q网络和 \pi 函数的参数,并不断重置目标Q函数和目标演员,迭代求取最优策略。


注:本文参考《蘑菇书EasyRL》第六章至第九章内容

来源:蘑菇书EasyRL (datawhalechina.github.io)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值