深度强化学习(一): Deep Q Network(DQN)

原文:https://blog.csdn.net/LagrangeSK/article/details/80321265 一、背景

DeepMind2013年的论文《Playing Atari with Deep Reinforcement Learning》指出:从高维感知输入(如视觉、语音)直接学习如何控制 agent 对强化学习(RL)来说是一大挑战。

之前很多RL算法依赖于手工选取的特征和线性函数逼近(对value function(值函数) 或 policy进行逼近)。但这些系统都依赖于特征的选取质量

深度学习(DL),尤其是CNN(卷积神经网络),可以很好的提取图像的高维特征, 那么我们很自然的想到是否可以将其应用于强化学习(RL)上?

二、DL和RL结合的挑战

那么很自然,我们需要关注DL和RL的结合有哪些挑战:

  • 深度学习方法的成功应用案例大部分都具备很好的数据集标签(labels),而RL没有明确的标签,只能通过一个有延迟(也可能有噪声)的reward来学习。
  • 另外,深度学习一般假设其样本都是独立同分布的,但在RL中,通常会遇到一段相关度很高的状态量(state),且状态的分布也不相同。
  • 过往的研究表明,使用非线性网络表示值函数时出现网络不稳定,收敛困难等问题。

三、DQN的解决方案

DQN将卷积神经网络(CNN)与Q学习结合起来,通过以下方法,对DL与RL结合存在的问题进行解决:

  • 采用Q learning的目标值函数来构造DL的标签,从而构造DL的loss function;
  • .采用了记忆回放(experience replay mechanism) 来解决数据关联性问题;
  • 使用一个CNN(MainNet)产生当前Q值,使用另外一个CNN(Target)产生Target Q值。(在2015年DeepMind的论文Human-level Control Through Deep Reinforcement Learning新版DQN中采用)

3.1 loss function 构造

RL原理此不赘述,Q learning的更新方程如下:

KaTeX parse error: Expected '}', got '&' at position 127: …+\gamma \max_{a&̲#x27;}Q(s'…θ

3.2 记忆回放(experience replay mechanism)

为了让 RL 的数据 (关联性不独立分布的数据) 更接近DL所需要的数据 (独立同分布数据),在学习过程中建立一个“记忆库”, 将一段时间内的state、action、state_ (下一时刻状态) 以及 reward 存储在记忆库里,每次训练神经网络时,从记忆库里随机抽取一个batch的记忆数据, 这样就打乱了原始数据的顺序,将数据的关联性减弱。

3.3 目标网络

为了使得算法性能更稳定,建立两个结构一样的神经网络:一直在更新神经网络参数的网络 (MainNet) 和用于更新Q值(TargetNet)。

  • .初始时刻将MainNet的参数赋值给TargetNet,
  • 然后MainNet继续更新神经网络参数,而TargetNet的参数固定不动。
  • 再过一段时间将MainNet的参数赋给TargetNet,如此循环往复。

这样使得一段时间内的目标Q值是稳定不变的,从而使得算法更新更加稳定。

四、算法伪代码

2013年版本:
在这里插入图片描述
2015年版本:
这里写图片描述

五、算法流程

2015年版本:

这里写图片描述


六、算法评价

解决的问题:

  • 解决了Q学习的QTable高维度灾难问题,使得Q值连续化
  • 将DL和RL数据集不兼容问题解决(记忆库、固定目标值函数网络)

存在问题:

  • action依然是从最大的Q值中选取,无法用于action连续的问题
  • 只能处理只需短时记忆问题,无法处理需长时记忆问题;
  • CNN不一定收敛,需精良调参。

参考文献:
https://blog.csdn.net/u013236946/article/details/72871858
Human-level Control Through Deep Reinforcement Learning
Playing Atari with Deep Reinforcement Learning

        

你可能感兴趣的:(深度强化学习(一): Deep Q Network(DQN))