深度强化学习
表格来存储每一个状态state和Q值显然是不现实的,除了存储开销,搜索开销也非常巨大。深度强化学习(Deep Q Network)是强化学习与深度学习的结合,利用神经网络作为函数逼近器来解决高维或复杂状态空间下的强化学习问题。
其关键特征就是使用深度神经网络(DNN)代替表格化的值函数或策略。我们可以将状态和动作当成神经网络的输入,然后经过神经网络分析后得到动作的 Q 值,这样我们就没必要在表格中记录 Q 值,而是直接使用神经网络生成 Q 值。
参数的更新与强化学习里值函数近似相同,θ = θ + α * (VΠ(x) - Vθ(x)) * x
,梯度下降法,学习率乘以最小二乘误差的负导数。
DQN 2015(详见参考资料二)
这篇论文解决的是2D游戏场景下的决策问题,实现了端到端的模型,直接对游戏画面进行评估,输出Q值。这项工作弥合了高维感官输入和动作之间的鸿沟,从而产生了第一个能够学习在各种具有挑战性的任务中表现出色的人工代理。模型结构包括三层卷积层+两层全连接层,卷积层提取图片特征,全连接层作为动作-状态值函数计算每个动作的Q值。
算法详解
可以看到和Q-learning算法的思路是一致的,在当前状态下使用ε-贪心策略选择动作,使用下一个状态的状态-动作值函数的最大值更新当前状态的动作-状态值函数,然后再重复以上过程。
虽然叫QDN,但是这篇论文严格意义上只有MLP与NN有关的,前面的CNN只是对图像进行处理,换一个任务,输入不是图像,那么前面的三层CNN网络也就没有什么意义了。这篇工作不同于强化学习里的值函数近似,在于提出了经验回放和Target Q-network。
克服非线性函数逼近的不稳定问题:
- 引入了两种核心技术:
- 经验回放(Experience Replay):通过随机抽取回放记忆数据打破样本之间的相关性。
- 目标网络(Target Network):使用延迟更新的目标网络来稳定目标值的计算,减少学习过程中的震荡和发散。
这里不再深究其设计的原理。
模型更新过程
分别有两个网络,一个是当前网络的参数θ
,一个是目标网络的参数θ-
,我们的目标是使当前网络无限接近于最优Q
函数。
从缓冲区拿到批量(s, a, r, s')
,将s'
作为输入给目标网络θ-
得到s'
的Q
值,找到最大的Q(s', a')
值计算目标值y
。
将s
作为当前网络θ
的输入得到Q
值,找出其中的Q(S, a)
,计算Loss,对梯度进行更新。
PS:这里一个很有趣的地方就是,正常理解的最小二乘损失是对网络所有的输出计算欧氏距离,即MLP网络输出了所有动作的Q值,但是这里只会计算Q(S, a)
和y的最小二乘损失,用于梯度更新。而梯度更新的参数也不会是网络的全部参数,只会是参与了Q(s, a)
判断的参数。
深度强化学习参考资料
- 什么是 DQN | 莫烦Python
- 论文理解【RL经典】 —— 【DQN】Human-level control through deep reinforcement learning-CSDN博客