category
欢迎回到我的强化学习系列!现在我们已经介绍了Q-learning,是时候在RL中引入深度学习了。
在这篇文章中,我们将讨论:
为什么将深度学习引入RL如此重要;
它带来了什么挑战,我们如何解决这些挑战;我们如何解决这些问题;
我们如何构建一个DQN。
如果你是这个系列的新手,一定要先看看这些帖子:
- 第一部分:RL简介
- 第二部分:介绍马尔可夫过程
- 第3部分:马尔可夫决策过程(MDP)
- 第4部分:使用MDP进行最优策略搜索
- 第五部分:蒙特卡罗与时间差分学习
- 第6部分:TD(λ)和Q学习
现在是时候再深入一点了!
为什么是深度学习?
在Q学习中,当状态和动作空间是离散的并且维度较低时,可以使用Q表来存储每个状态动作对的Q值。然而,当状态和动作空间是高维和连续的时,Q-Table就不合格了。
一种常见的解决方案是将Q-Table-update问题转化为函数拟合问题,并为相似状态获得相似的输出动作。Q函数通过更新参数θ来近似最佳Q值:
Q(s,a;θ)≈Q′(s,α)
深度神经网络,可以自动提取复杂特征。它们是处理具有连续状态的高维Q表的门票。
DQN是许多将深度学习和强化学习相结合的算法之一,可以直接从高维原始数据中学习策略。通过将卷积神经网络(CNN)与Q-Learning相结合,DQN促进了强化学习的发展,并扩展了其应用场景。
CNN的输入可以是原始图像数据(作为状态),输出是每个动作对应值评估(Q值)。
谷歌的Deepmind团队在DQN上发表了两篇论文:
2013年在NIPS上用深度强化学习玩Atari;
2015年,通过对自然的深度强化学习进行人类水平控制。
由于这些文章涵盖了DQN的基本思想,我将在本文中引用它们。
第一步:了解将深度学习应用于强化学习的挑战
样本分布
深度学习与RL融合的一个主要原因是数据集需要独立且相同的分布。只有在这种数据集上通过深度学习训练的模型才能更好地拟合数据集中的潜在模式,并获得理想的结果。
但是,正如我们在本系列中广泛讨论的那样,强化学习从奖励和一系列高度相关的状态中学习。随着算法学习新的行为,代理可能会改变数据分布,导致无法收敛。
因此,如果你想将深度学习算法应用于强化学习,你必须切断状态的相关性并稳定数据集的分布。
监督问题
深度学习是监督学习的一种标准形式。在训练之前,你想要训练的理想模型的目标已经存在——只是它是隐藏的。通过深度迭代,深度学习使算法收敛,从而找到理想的模型。
相比之下,强化学习是从稀疏、嘈杂和延迟的奖励信号中学习。如果你想将深度学习算法应用于强化学习,你必须为每次更新迭代设计一个目标。
要复习监督学习和无监督学习之间的区别,请跳回到我的第一篇文章:强化学习简介。
第二步:解决监督式深度学习和无监督强化学习之间的矛盾
以下是针对上述挑战的两种解决方案。
样本分布
根据Deepmind 2013年的论文,经验机制可以解决样本分布问题。其工作原理如下:
- 初始化。代理将用状态s初始化,然后将状态s输入评估网络(稍后描述的神经网络),并输出每个动作的q值。
选择操作。代理通过q值和探索和开发算法选择在此状态下执行的动作。
反馈。在状态s,我们选择动作a,环境将以奖励的形式提供反馈,并给代理下一个状态s。
顺序。此时,到达一个序列(s,a,r,s'),其中s是当前状态,a是在状态s中执行的操作,r是环境反馈给代理的奖励,s'是下一个状态。序列(s,A,r,s')构成训练样本。 - 参数。将经验池的大小设置为N。这意味着经验池中只存在N个最新序列。大于N的序列将覆盖经验池中的样本。每次更新神经网络参数时,都会使用经验池中的数据。
汇聚。经验池的存在将一系列高度相关的状态转化为离散的数据样本。它可以减少训练方差,稳定样本分布,有利于算法的收敛。就像人类一样,代理人可以从自己的历史经验中学习。
解决监督问题
为了解决强化学习和监督深度学习之间的矛盾,Deepmind在2013年的论文中概述了两种神经网络的设计。
一种神经网络是预测网络(评论家):
- 输入是当前状态——样本序列中的第一个元素s。输出是每个动作生成的q值。
- 代理使用每个输出的q值来确定要执行的状态。
- 该网络的参数可以随时更新。
另一个神经网络是评估网络(actor):
- 输入是下一个状态;即样本序列中的第四个元素s’。输出是状态s'的每个动作的q值(q_next)。
- 接下来,Bellman方程(q_target=r+γ*max(q_Next))计算用于在状态s中执行动作a的目标q值。
- 评估网络的输出通过贝尔曼方程,计算结果的目标q值可以用作预测网络的标签。
因此,上述[步骤/网络]可以解决有监督深度学习和无监督强化学习之间的矛盾。
为了抑制状态之间的相关性问题,评估网络的参数不会实时更新。相反,在经过一定数量的步骤后,预测网络将其参数复制到评估网络。
现在,让我们用简单的术语来描述DQN的主要架构。
第三步:建立自己的DQN
回放记忆
回放存储器存储演员DQN通过玩游戏记录的体验。这些经验稍后将被评论家DQN用作训练数据。
通过从经验数据中随机采样,构建了一批转换,其中的数据是去相关的。
DQN是如何工作的?
演员DQN可以用来玩游戏,尽管最初它做得很糟糕。
让演员表演一段时间,然后将其所有体验保存在回放内存中。每个内存将是一个5元组(状态、动作、下一个状态、奖励、继续)。
游戏结束后,“继续”项将为0.0,否则为1.0。
每隔一段时间,我们可以从回放记忆中采样一批记忆,就像我们在监督学习中处理动态训练数据一样。我们使用这些记忆来估计Q值。
你希望演员彻底探索游戏,所以你可能想把它与ε-贪婪策略结合起来。
评论家DQN将调整其参数,使其Q值预测接近演员通过演员的经验数据估计的结果。常规的监督学习技术可以对这些数据起作用。
定期将评论家DQN复制到演员DQN,就是这样!
总结
总之,DQN是成功的!你正在顺利地理解和使用它!
现在,您应该熟悉以下基本概念:
- 深度强化学习(DRL):深度学习和强化学习的结合
- DQN:DRL的一种典型方法
在我的下一篇文章中,我们将更深入地探讨DRL。
感谢您的阅读!如果你喜欢这篇文章,请尽可能多地点击拍手按钮。这将意味着很多,并鼓励我继续分享我的知识。
要添加的问题或想法?我很想在评论中听到你的消息!
- 登录 发表评论
- 1次浏览
最新内容
- 1 minute 12 seconds ago
- 8 minutes 33 seconds ago
- 17 minutes 2 seconds ago
- 11 hours ago
- 12 hours 26 minutes ago
- 12 hours ago
- 4 days 13 hours ago
- 1 week ago
- 1 week ago
- 2 weeks 1 day ago