Deep Q learning: DQN及其改进

Deep Q Learning

Generalization

Deep Q learning: DQN及其改进

Deep Reinforcement Learning

  • 使用深度神经网络来表示
    • 价值函数
    • 策略
    • 模型
  • 使用随机梯度下降(SGD)优化loss函数

Deep Q-Networks(DQNs)

  • 使用带权重集w\textbf{w}的Q-network来表示状态-动作价值函数
    Q^(s,a;w)Q(s,a)\hat{Q}(s,a;\textbf{w})\approx Q(s,a)
    Deep Q learning: DQN及其改进

Recall: Action-Value Function Approximation with an Oracle

这是在做control

  • Q^π(s;a;w)Qπ\hat{Q}^\pi(s;a;\textbf{w}) \approx Q^\pi
  • 最小化真实动作-价值函数QπQ^\pi和近似动作-价值函数的均方误差:
    J(w)=Eπ[(Qπ(s,a)Q^(s,a;w))2]J(\textbf{w})=\mathbb{E}_\pi[(Q^\pi(s,a)-\hat{Q}(s,a;\textbf{w}))^2]
  • 使用随机梯度下降来寻找一个局部最小值
    12wJ(w)=Eπ[(Qπ(s,a)Q^π(s,a;w))wQ^π(s,a;w)]-\frac{1}{2}\nabla_{\textbf{w}}J(\textbf{w}) = \mathbb{E}_\pi[(Q^\pi(s,a)-\hat{Q}^\pi(s,a;\textbf{w}))\nabla_{\textbf{w}}\hat{Q}^\pi(s,a;\textbf{w})]
    Δ(w)=12αwJ(w)\Delta(\textbf{w})=-\frac{1}{2}\alpha\nabla_{\textbf{w}}J(\textbf{w})
  • 随机梯度下降(SGD)采样梯度

Recall: Incremental Model-Free Control Approaches

  • 如同策略评估,一个状态的真实状态-动作价值函数是未知的所以使用一个目标值来替代
  • 在蒙特·卡罗尔方法,使用一个回报GtG_t作为一个替代目标
    Δw=α(GtQ^(st,at;w))wQ^(st,at;w)\Delta_{\textbf{w}}=\alpha(G_t-\hat{Q}(s_t,a_t;\textbf{w}))\nabla_{\textbf{w}}\hat{Q}(s_t,a_t;\textbf{w})
  • 在SARSA,代替真实值的是TD目标r+γ(st+1,at+1;w)r+\gamma(s_{t+1},a_{t+1};\textbf{w}),它利用了当前的函数近似价值
    Δw=α(r+γQ^(st+1,at+1;w)Q^(st,at;w))w(st,at;w)\Delta_{\textbf{w}}=\alpha(r+\gamma\hat{Q}(s_{t+1},a_{t+1};\textbf{w})-\hat{Q}(s_t,a_t;\textbf{w}))\nabla_{\textbf{w}}(s_t,a_t;\textbf{w})
  • 在Q-learning,替代真实值的是TD目标r+γmaxaQ^(st+1,a;w)r+\gamma max_a\hat{Q}(s_{t+1},a;\textbf{w}),它利用了当前函数近似价值的最大值
    Δw=α(r+γmaxaQ^(st+1,a;w)Q^(st,at;w))wQ^(st,at;w)\Delta_{\textbf{w}}=\alpha(r+\gamma max_a\hat{Q}(s_{t+1},a;\textbf{w})-\hat{Q}(s_t,a_t;\textbf{w}))\nabla_{\textbf{w}}\hat{Q}(s_t,a_t;w)
    Deep Q learning: DQN及其改进

DQNs in Atari

Deep Q learning: DQN及其改进

DeepMind发表在nature上的文章,源代码可以在sites.google.com/a/deepmind.com/dqn找到

  • 端到端从像素集s中学习Q(s,a)Q(s,a)价值
  • 输入状态s是最后四帧的原始像素集的堆砌
  • 输出是18个控制杆/按钮位置的Q(s,a)Q(s,a)
  • 回报是那一步的得分
  • 网络结构和超参数在所有的游戏中都是固定的

他们的核心论点是不必在每一个游戏单独使用完全不同的网络架构来做完全不同的超参数调参来获得成功,这是一个通用的结构足够针对所有的游戏去学习好的决策。它的贡献在于我们尝试得到某种通用的算法和相关配置,能超越我们其他在强化学习论文上看到的只能在三个普通例子上运行。它在50中游戏上尝试做到很好。

Q-Learning with Value Function Approximation

  • 使用随机梯度下降最小化MSE损失
  • 使用表格查询表示收敛到最优Q(s,a)Q^{*}(s,a)
  • 但是使用VFA的Q-learning会发散
  • 两个担忧引发了这个问题
    • 采样之间的相关性
    • 非驻点的目标
  • Deep Q-learning(DQN)同时通过下列方式解决这两项挑战
    • 经验重播(Experience replay)
    • 固定Q-targets

DQNs: 经验重播

  • 为了有助于移除相关性,从先前的经验中存储数据集(称作重播缓存)D\mathcal{D}
    Deep Q learning: DQN及其改进
  • 为进行经验重播,循环以下步骤:
    • (s,a,r,s)D(s,a,r,s')\sim\mathcal{D}:从数据集中采样一个tuple
    • 计算采样s的目标价值:r+γmaxaQ^(s,a;w)r+\gamma max_{a'}\hat{Q}(s',a';\textbf{w})
    • 使用随机梯度下降来更新网络权重
      w=α(r+γmaxaQ^(s,a;w)Q^(s,a;w))ΔwQ^(s,a;w)\nabla_\textbf{w} = \alpha(r+\gamma max_a' \hat{Q}(s',a';\textbf{w})-\hat{Q}(s,a;\textbf{w}))\Delta_{\textbf{w}}\hat{Q}(s,a;\textbf{w})

不重用数据能降低内存消耗,但对弱化模型表现。经验重播相当于重用数据,而这是有帮助的。

  • 可以把目标视作一个标量,但是权重将会在下一次更新,这改变了目标价值

DQNs: fixed Q-Targets

  • 为了提升稳定性,使用在多次更新中的目标计算固定目标权重
  • 使用一个不同的权重来计算目标更不是更新目标
  • 记参数集w\text{w}^{-}为在目标中使用的权重,w\textbf{w}是被更新的权重
  • 计算目标值时有细微的改变:
    • (s,a,r,s)D(s,a,r,s')\sim\mathcal{D}:从数据集中采样
    • 从采样s中计算目标值r+γmaxaQ^(s,a;w)r+\gamma max_{a'}\hat{Q}(s',a';\textbf{w}^-)
    • 使用随机梯度下降来更新网络权重
      Δw=α(r+γmaxaQ^(s,a;w)Q^(s,a;w))wQ^(s,a;w)\Delta_{\textbf{w}} = \alpha(r+\gamma max_{a'}\hat{Q}(s',a';\textbf{w}^-)-\hat{Q}(s,a;\textbf{w}))\nabla_{\textbf{w}}\hat{Q}(s,a;\textbf{w})

这种Q-learing不是真正的梯度下降方法。GTD(gradient temporal difference) learning 是"更加"真实的梯度下降算法。这样做非常有帮助,但仍然不能保证收敛。

DQNs Summary

  • DQN 使用经验重播或固定Q-targets
  • 在重播缓存D\mathcal{D}中存储变迁st,at,rt+1,st+1s_t,a_t,r_{t+1},s_{t+1}
  • D\mathcal{D}中采样随机的小批量变迁(s,a,r,s)(s,a,r,s')
  • 计算相对于旧的,固定的参数集w\textbf{w}^-的Q-learnning目标
  • 优化Q-network和Q-learning 目标之间的均方误差
  • 使用随机梯度下降

基本上都是用ϵ\epsilon-greedy exploration

DQN Result in Atari

这张图来自Deep Mind团队2015年的一篇论文,他们在50中游戏上实验了DQN算法,使用了CNN处理每一帧游戏画面。在超过半数的游戏里,都能实现接近人类甚至大幅领先人类的水平,但是需要大量的数据和时间来训练。
Deep Q learning: DQN及其改进

Which Aspects of DQN were Import for Success?

哪一部分对成功贡献最大?
Deep Q learning: DQN及其改进

Deep RL

补充一点:
2018年Deep Mind在AAAI发表了组合6中DQN改进方法(包括上述)的Rainbow,Rainbow: Combining Improvements
in Deep Reinforcement Learning

Recall: Double Q-Learning

1: Intialize Q1(s,a)1:\ Intialize \ Q_1(s,a) and Q2(s,a),sS,aA t=0,Q_2(s,a), \forall s \in S, a \in A \ t=0, initial state st=s0s_t=s_0
2: loop2:\ loop
3: Select3:\ \quad Select ata_t using ϵ\epsilon-greedy π(s)=argmaxaQ1(st,a)+Q2(st,a)\pi(s)=argmax_a Q_1(s_t,a)+Q_2(s_t,a)
4: Observe (rt,st+1)4:\ \quad Observe \ (r_t,s_{t+1})
5: if5:\ \quad if(with 0.5 probability) then
6: Q1(sa,at)Q1(st,at)+α6:\ \quad \quad Q_1(s_a,a_t) \leftarrow Q_1(s_t,a_t)+\alpha
7: else7:\ \quad else
8: Q2(st,at)Q2(st,at)+α8:\ \quad \quad Q_2(s_t,a_t) \leftarrow Q_2(s_t,a_t)+\alpha
9: endif9:\ \quad end if
10: t=t+110:\ \quad t= t+1
11:end loop11: end \ loop

这是在将我们如何选择action与评估那个action的价值分离开,以解决过估计的问题。

Double DQN

  • 扩展Double Q-Learning的思想到DQN
  • 当前Q-network的w\textbf{w}用于选择动作
  • 旧的Q-network的w\textbf{w}^-用于评估动作
    Δw=α(r+γQ^(argmaxaQ^(s,a;w);w)Q^(s,a;w))\Delta_\textbf{w}=\alpha(r+\gamma \hat{Q}(argmax_{a'}\hat{Q}(s',a';\textbf{w});\textbf{w}^-)-\hat{Q}(s,a;\textbf{w}))
    Deep Q learning: DQN及其改进

Double DQN

在Atari游戏中,Double DQN通常会有很大帮助。
Deep Q learning: DQN及其改进

Refresher: Mars Rover Model-Free Policy Evaluation

Deep Q learning: DQN及其改进

先选择(s2,a1,0,s1)(s_2,a_1,0,s_1),0+γV(s1)\gamma V(s_1),再选择(s3,a1,0,s2)(s_3,a_1,0,s_2),这跟蒙特·卡罗尔方法一样,意味着没有误差。所以重播时选择元组的顺序是有影响的。

Impact of Replay

  • 在表格法TD-learning中,重播更新的顺序能加速学习
  • 重复某些更新能比其他更新看起来能够更好地反向传播信息
  • 如何系统化的做prioritize updates?

Potential Impact of Ordering Episodic Replay Updates

Deep Q learning: DQN及其改进

  • Schaul, Quan, Antonoglou, Silver ICLR 2016
  • 黑盒(Oracle): 选择(s,a,r,s)(s,a,r,s')元组来重播将会降低全局loss
  • 在收敛方面能有指数级别的提升
    • 收敛需要的更新数量
  • 黑盒不是一个实际的方法但是描述了顺序的影响

Prioritized Experiemce Replay

让我们来根据TD error赋予一些元组优先级

  • ii是第ii个经验元组(si,ai,ri,si+1)(s_i,a_i,r_i,s_{i+1})
  • 采样元组以使用优先级函数来更新
  • 一个元组的优先级和DQN error成比例
    pi=r+γmaxaQ(si+1,a;w)Q(si,ai;w)p_{i} = | r+\gamma max_{a'} Q(s_{i+1},a';\textbf{w}^-) - Q(s_i,a_i;\textbf{w}) |
    (两边竖线绝对值的意思)
  • 每一个元组都更新pip_i
  • 其中一个方法1^1: 成比例(随机优先化)
    P(i)=piαkpiαP(i)=\frac{p_i^\alpha}{\sum_k p_i^\alpha}
  • α=0\alpha=0的话会产生了什么样的规则在现有的元组中做选择?

均匀采样
α\alpha的选取是一个平衡点

1^1请从上面的论文链接里查阅原论文以获得更详细的信息。

Performance of Prioritized Replay vs Double DQN

Deep Q learning: DQN及其改进

Value & Advantage Function

Advantage Fuction在采取一个动作和另一个动作的差别之间做度量。希望能理解哪一些动作会有更好的价值。

  • 直观理解:用来确定价值的需要特比注意的特征,可能会和那些决定动作收益特征的不同
  • E.g.
    • 游戏得分和预测V(s)V(s)是相关的
    • 但是在揭示相关动作价值时不是必须的
  • 所以提出了优势函数(Advantage function, Baird 1993)
    Aπ(s,a)=Qπ(s,a)Vπ(s)A^\pi(s,a)=Q^\pi(s,a)-V^\pi(s)

Dueling DQN

Deep Q learning: DQN及其改进

Identifiability

  • 优势函数(Advantage function)
    Aπ(s,a)=Qπ(s,a)Vπ(s)A^\pi(s,a)=Q^\pi(s,a)-V^\pi(s)
  • (优势是)可辨识的吗?
  • 不可辨别

指定优势函数,做了一些预先设定的假设

  • Unidentifiable
  • 观点1:如果a是选择的动作,强迫A(s,a)=0A(s,a)=0
    Q^(s,a;w)=V^(s;w)+(A^(s,a;w)maxaAA^(s,a;w))\hat{Q}(s,a;\textbf{w})=\hat{V}(s;\textbf{w})+(\hat{A}(s,a;\textbf{w})-max_{a' \in \mathcal{A}}\hat{A}(s,a';\textbf{w}))
  • 观点2:使用平均值作为baseline(更稳定)
    Q^(s,a;w)=V^(s;w)+(A^(s,a;w)1AaA^(s,a;w)\hat{Q}(s,a;\textbf{w})=\hat{V}(s;\textbf{w})+(\hat{A}(s,a;\textbf{w})-\frac{1}{|\mathcal{A}|}\sum_{a'}\hat{A}(s,a';\textbf{w})

Dueling DQN V.S. Double DQN with Prioritized Replay

Deep Q learning: DQN及其改进

Practical Tips for DQN on Atati (From J. Schulman)

以下是来自伯克利博士John Schulman,OpanAI老大的在Atari上使用DQN的建议:
Deep Q learning: DQN及其改进
Deep Q learning: DQN及其改进