深度强化学习(一): Deep Q Network(DQN)
原文:https://blog.****.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.****.net/u013236946/article/details/72871858
Human-level Control Through Deep Reinforcement Learning
Playing Atari with Deep Reinforcement Learning
</div>
原文:https://blog.****.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.****.net/u013236946/article/details/72871858
Human-level Control Through Deep Reinforcement Learning
Playing Atari with Deep Reinforcement Learning
</div>