强化学习基础知识笔记[6] - DQN

参考资料
[1] 深度强化学习系列 第一讲 DQN
本文主要是对该资料学习的笔记,并且加入了一些自己的想法,如有错误欢迎指出。

DQN

算法引入

DQN算法在Q-Learning算法上改进而来,具体改进三点:

  1. 利用卷积神经网络逼近行为值函数
    该逼近方法属于非线性逼近。此处的值函数对应一组参数,为神经网络中每层网络的权重,用θ表示。此时值函数记为: Q ( s , a ; θ ) Q(s,a;\theta) Q(s,a;θ)。DQN所用神经网络为三个卷积层加两个全连接层。

  2. 利用经验回放训练强化学习过程
    DQN中Agent将数据存储到一个数据库中,再利用均匀随机采样从数据库中抽取数据,然后训练神经网络。这一过程可以打破数据间的相关性,克服神经网络不稳定的问题。

  3. 独立设置目标网络处理时间差分法中的TD偏差
    对值函数逼近时DQN采用卷积神经网络,用梯度下降法更新。

值函数的更新公式为:
θ t + 1 = θ t + α { r + γ m a x a ′ Q ( s ′ , a ′ ; θ − ) − Q ( s , a ; θ ) } ∇ Q ( s , a ; θ ) (1) \theta_{t+1} = \theta{t} + \alpha\lbrace r + \gamma max_{a'}Q(s',a';\theta^-)-Q(s,a;\theta) \rbrace \nabla Q(s,a;\theta) \tag{1} θt+1=θt+α{r+γmaxaQ(s,a;θ)Q(s,a;θ)}Q(s,a;θ)(1)

其中:

  • θ − \theta^- θ为计算TD目标网络所用的参数,固定步数更新一次
  • θ \theta θ为计算值函数逼近网络所用参数,每一步都会更新
  • r + γ m a x a ′ Q ( s ′ , a ′ ; θ − ) r + \gamma max_{a'}Q(s',a';\theta^-) r+γmaxaQ(s,a;θ)为TD目标

TD目标网络与值函数逼近网络不同参数的原因:采用相同参数容易导致数据之间存在相关性,从而使训练不稳定。(这里虽然参数不同,但网络模型应该是相同的)

DQN算法描述

强化学习基础知识笔记[6] - DQN_第1张图片

疑问:
该算法描述处理的是图像吗?x代表image

其中:

  • 值函数的输入不再是state s,而是s的特征(需要仔细设计特征提取方法);
  • [5]该算法中的初始状态包含image x(暂时理解为模型中的某个状态);
  • [10]初始状态之后的状态包含下一步的image x,当前步得到的reward和当前的state s,也就是说,state s中包含多个分量;

Double DQN (DDQN)

DQN的固有缺陷:非均匀过估计问题,即估计得到的值函数大于真实的值函数,且值函数每一点的过估计量是非均匀的,因此会影响策略选择。

如上述(1)式所示,DQN的TD目标为: r + γ m a x a ′ Q ( s ′ , a ′ ; θ − ) r + \gamma max_{a'}Q(s',a';\theta^-) r+γmaxaQ(s,a;θ)
其中:

  • 动作选择部分为 a r g m a x a ∗ Q ( S t + 1 , a ∗ ; θ − ) argmax_{a^*} Q(S_{t+1},a^*;\theta^-) argmaxaQ(St+1,a;θ),即在 Q ( S t + 1 , a ∗ ; θ − ) Q(S_{t+1},a^*;\theta^-) Q(St+1,a;θ)处选择动作a*最大化该处的Q值;
  • 动作评估部分为 r + γ Q ( s ′ , a ∗ ; θ − ) r + \gamma Q(s',a^*;\theta^-) r+γQ(s,a;θ),即使用上述得到的a*计算值函数以及TD目标;

其中存在的问题:选择a*、计算Q的函数其参数均为 θ − \theta^- θ,这也是导致非均匀过估计的来源。

Double DQN的解决方案为:动作选择和动作评估采用不同值函数实现。

Double DQN的TD目标为: Y t D o u b l e Q = R t + 1 + γ Q ( S t + , a r g m a x a Q ( S t + 1 , a ; θ t ) ; θ t ′ ) Y^{DoubleQ}_t = R_{t+1} + \gamma Q (S_{t+},argmax_a Q(S_{t+1},a;\theta_t);\theta_t ') YtDoubleQ=Rt+1+γQ(St+,argmaxaQ(St+1,a;θt);θt)
其中:

  • 动作选择部分为 a r g m a x a Q ( S t + 1 , a ; θ t ) argmax_a Q(S_{t+1},a;\theta_t) argmaxaQ(St+1,a;θt),采用参数为 θ t \theta_t θt的值函数;
  • 动作评估部分为 R t + 1 + γ Q ( S t + , a ; θ t ′ ) R_{t+1} + \gamma Q (S_{t+},a;\theta_t ') Rt+1+γQ(St+,a;θt),即使用上述得到的a计算参数为 θ t ′ \theta_t ' θt值函数以及TD目标;

Prioritized Replay(优先回放)

经验回放时采取的均匀抽样并不能高效利用数据,因为不同数据的学习效率不同。一般认为具有较大TD偏差的数据对于参数更新量越大,学习效率越高。

因此,需要定义第i个样本处的采样概率:
P ( i ) = p i a ∑ k p k a P(i) = \frac{p^a_i}{\sum_k p_k^a} P(i)=kpkapia

其中:

  • p i a p^a_i pia为第i个样本权重
  • ∑ k p k a \sum_k p_k^a kpka为所有样本权重之和

其权重需要通过特定方式计算得到,参考采用优先回放的DDQN算法。

需要注意的是,采取优先回放概率采样时,动作-值函数为有偏估计,为校正该偏差,定义重要性采样系数:
ω i = ( 1 N ⋅ 1 P ( i ) ) β \omega_i = (\frac{1}{N} \cdot \frac{1}{P(i)})^{\beta} ωi=(N1P(i)1)β

其中:

  • N为样本总数
  • β为系数

采用优先回放的DDQN算法

强化学习基础知识笔记[6] - DQN_第2张图片

其中:

  • [6]的作用为给新的数据最大的权重,使得每个数据最少利用一次;
  • [9]的作用为依据每个样本的采样概率p进行采样,这里需要对样本进行排序,计算复杂度高;
  • [11]中采用Double DQN,计算TD目标的 Q t a r g e t Q_{target} Qtarget采用参数 θ t a r g e t \theta_{target} θtarget,其余 Q Q Q采用参数 θ \theta θ,动作选择的值函数Q与动作评估的值函数Q参数不同,注意计算TD偏差的Q采用参数 θ \theta θ
  • [12]的作用是根据当前数据的TD偏差更新其权重;
  • [16]一段时间后复制 θ \theta θ θ t a r g e t \theta_{target} θtarget当中,这也解释了DDQN不同参数之间的更新:间隔一段时间将动作选择的参数更新至动作评估的参数中;

你可能感兴趣的:(强化学习笔记,强化学习,机器学习)