详解DQN训练技巧!带你回到深度强化学习「梦开始的地方」

简介: 详解DQN训练技巧!带你回到深度强化学习「梦开始的地方」
【新智元导读】DeepMind开始称霸强化学习的DQN算法,都有哪些训练技巧?

过去十多年里,DeepMind在人工智能的发展中绝对有着重要的地位,从AlphaGo, AlphaZero到AlphaStar,再到如今的AlphaFold 2,每次DeepMind发布新产品似乎都要彻底消灭该行业

 

围棋界天才少年柯洁都不再下传统围棋,跑去练习云顶之弈。弈一时,悟一世,切换赛道誓在新概念围棋夺生涯第九冠(bushi)。

 

 

DeepMind在围棋、星际争霸和德州扑克等取得的巨大成就,实际上都归功于DeepMind于2013年发布的DQN算法,也是深度学习和强化学习的首次成功结合。

 

Deep Q-Networks (DQN) 于 2013 年首次发布,仅将游戏的像素值作为网络的输入,成功在一套雅达利(Atari)游戏中超越之前的所有模型的得分,甚至有三个还超越了骨灰级玩家的得分。

 

论文链接:https://arxiv.org/pdf/1312.5602.pdf

 

智能体直接从经验中进行学习,并成功学习到有效的行动在当年是一项重大突破,也让通用人工智能AGI的重回大众视线:计算机在诸多任务中获得的智能,也许比人类更强!

 

不过DQN的训练并没有想象中那么简单!

 

Q-learning是什么?

 

Q-learning是强化学习(RL)的经典算法,简单来说,RL智能体与环境进行交互,如果采取的行动是「好」的,就会获得奖励,否则获得惩罚,强化学习算法的目标是最大化智能体获得的长期奖励总和。

 

 

在强化学习智能体和环境之间的交互循环中,每个时间步(timestep),智能体需要选择一个行动(action)来改变环境(environment)状态(state)。环境也提供一个奖励信号(reward signal)以表示智能体的行动是否有利。

 

处于一个特定的游戏状态或采取一个行动的未来奖励是不难估计的,难的是你的行动对环境的影响可能是不确定的,这也意味着你得到的奖励也是不确定的。尤其是在我们不知道环境的运行规则,或是在很遥远的未来且状态数很多的情况下,我们怎么能知道一个行动会带来什么奖励呢?

 

比如说,玩《超级马里奥》某一关时,最佳的行动可能是在第一帧跳跃,但如果奖励一直在关卡的最后阶段,要怎么才能知道这个行动的价值?

 

 

Q-learning采取的方法是学习一个行动-价值函数(action-value function),也被称为Q函数。

 

Q函数为每个(状态,行动)组合分配一个价值,用来表示在某一状态下采取某一行动时预期未来回报的估计,并且Q函数为所有状态都定义了一个价值。

 

在Q-learning中,智能体通过与环境互动和更新采取的(状态,行动)的Q值来学习Q-函数估计价值。在采取一个行动之后,用环境中新状态的Q值来更新所有Q值。重复迭代,最终可以估计出该状态的Q值,并根据这一估计采取行动。

 

 

一些简单的游戏通过这种方式可以估计出所有的(状态,行动)对的价值,但对于雅达利游戏来说,(状态,行动)的组合数量实在是太多了,想存储在一个简单的表格中基本是无法实现的。

 

比如说在打砖块游戏中,如果只用球拍和球,在一个300*800像素的屏幕上,状态的数量就达到了10的9次方到10的11次方,海量的状态空间情况下,引入深度神经网络就显得很必要了。

 

神经网络不好训

 

Q-Learning和神经网络的结合在理论上是非常强大的。Q-learning可以让智能体学习任何决策任务,而神经网络可以表示任何函数。如果成功训练,就会有大量的潜在应用场景得以实现,比如自动驾驶汽车、机器人技术等。

 

 

但要训练Q-learning和神经网络的组合是非常困难的。即使经过多次在不同状态下采取行动并获得奖励的迭代,有时性能也不会提高。常见的情况就是,智能体的性能在明显改进之后开始出现下降。

 

在DeepMind发布DQN论文后,这种情况仍然很常见。

 

 

Q-learning算法的每个更新步骤都是基于该步的经历,但是,如果每走一步就更新的话,算法会因为抽样误差(sampling error)而导致不稳定的更新,而抽样误差是由任意分布中抽取数据点导致的。

 

如果你在最近的数据点的序列上进行训练,那么你看到的数据肯定都是相似的,因为通常需要很多个时间步才能遍历到整个状态空间,所以你访问的下一个状态与你当前所处的状态基本上就算密切相关。样本之间的这种相关性会使得学习效率低下,而将它们打散后,通过打破相关性可以改善学习效果。

 

为了缓解这种情况,DeepMind在DQN算法中引入了一种新机制:经验重放(Experience Replay),其中经验指的是智能体在一个时间段内观察到的状态、行动、奖励和下一个状态。经验重放将每个时间段的状态、行动、奖励和后续状态存储在内存中,并在每个时间段从中随机选择一批。

 

对数据进行抽样训练,使每次更新使用的经验随机化,就可以打破数据点之间的关联性,能够降低更新的方差。由于每一步的经验都被用于许多权重的更新,这也意味着训练需要更少的数据。

 

 

在Q-Learning中,有三个使用Q函数的地方:

 

  1. 为了得到第一个状态的Q值
  2. 用于评估哪个后续状态的Q值最高,以选择一个行动
  3. 找到该后续状态的Q值  

 

将Q-learning与神经网络结合起来,如果直接将同一个网络用于这三个地方,也就意味着如果模型高估了一个状态的价值,那前面的状态也会被高估,因为Q-learning使用最大行动价值作为最大预期行动价值的估计,可能会导致学习到一个错误的Q-函数估计。

 

不过在学习过程中,数值估计不精确是很正常的,也就是说,高估是很常见的。

 

 

如果对Q值的高估在各个状态都是一致的,那这就不是一个问题。如果所有的Q值都有类似的变化,那么我们选择的行动也会是一样的。但从经验上看,实际运行通常不是这样的,也就意味着由近似的Q值产生的策略(policy)不一定会收敛到最佳策略。

 

解决高估问题的方法是使用Double DQN,也是DeepMind在2015年发表的另一篇论文中提出的。

 

论文链接:https://arxiv.org/pdf/1509.06461.pdf

 

Double DQN指的是模型拥有两个深度神经网络,模型使用正在训练的网络在与环境互动时进行行动选择,Q-函数估计更新使用后续状态的Q值,这就是第二个目标网络派上用场的地方。

 

目标网络通常是网络的一个旧版本,用来寻找具有后续状态的最大Q值的行动,而原始网络用来评估这个后续行动的Q值。通过将用于行动选择和行动评估的Q值解耦,就不太可能选择到高估的值了。

 

 

自此,训练DQN的坑基本都被填上了,不过强化学习后续还取得了其他重大进展,比如围棋领域的AlphaGo,星际争霸、德州扑克等领域都被攻克。

 

但一切都是自DQN发布之后,深度强化学习才进入春天,DQN也展现了其解决通用问题的潜力。

参考资料:https://blog.delta-academy.xyz/why-deepmind-dqn-hard-to-train

相关文章
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
大模型开发:解释强化学习以及它与监督学习的不同之处。
强化学习(RL)是机器学习的一种,通过智能体与环境交互学习最优策略,以获取最大回报,常用于动态环境如游戏和机器人。与之不同,监督学习(SL)使用有标签的训练数据来预测新数据,适用于如图像分类等稳定问题。两者关键区别在于学习方式和应用场景:RL侧重环境交互和策略优化,适合未知动态环境;SL依赖已知标签数据,适合标签明确的任务。在大模型开发中,两者各有优势,并不断融合创新,推动人工智能发展。
216 2
|
6月前
|
机器学习/深度学习 vr&ar
【深度强化学习】值函数逼近的详解(图文解释)
【深度强化学习】值函数逼近的详解(图文解释)
100 0
|
1月前
|
机器学习/深度学习 监控 数据可视化
深度学习中实验、观察与思考的方法与技巧
在深度学习中,实验、观察与思考是理解和改进模型性能的关键环节。
42 5
|
6月前
|
机器学习/深度学习 算法 调度
深度学习|改进两阶段鲁棒优化算法i-ccg
深度学习|改进两阶段鲁棒优化算法i-ccg
|
6月前
|
机器学习/深度学习 自然语言处理 搜索推荐
【传知代码】图神经网络长对话理解-论文复现
在ACL2023会议上发表的论文《使用带有辅助跨模态交互的关系时态图神经网络进行对话理解》提出了一种新方法,名为correct,用于多模态情感识别。correct框架通过全局和局部上下文信息捕捉对话情感,同时有效处理跨模态交互和时间依赖。模型利用图神经网络结构,通过构建图来表示对话中的交互和时间关系,提高了情感预测的准确性。在IEMOCAP和CMU-MOSEI数据集上的实验结果证明了correct的有效性。源码和更多细节可在文章链接提供的附件中获取。
【传知代码】图神经网络长对话理解-论文复现
|
5月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python实现深度学习模型:策略梯度方法
使用Python实现深度学习模型:策略梯度方法
53 0
|
6月前
|
机器学习/深度学习 算法 关系型数据库
PyTorch深度强化学习中蒙特卡洛策略梯度法在短走廊环境(CartPole-v0)中的实战(超详细 附源码)
PyTorch深度强化学习中蒙特卡洛策略梯度法在短走廊环境(CartPole-v0)中的实战(超详细 附源码)
70 0
|
6月前
|
机器学习/深度学习 算法 机器人
深度强化学习中利用Q-Learngin和期望Sarsa算法确定机器人最优策略实战(超详细 附源码)
深度强化学习中利用Q-Learngin和期望Sarsa算法确定机器人最优策略实战(超详细 附源码)
84 0
|
机器学习/深度学习 人工智能 前端开发
强化学习:基于蒙特卡洛树和策略价值网络的深度强化学习五子棋
强化学习:基于蒙特卡洛树和策略价值网络的深度强化学习五子棋
强化学习:基于蒙特卡洛树和策略价值网络的深度强化学习五子棋
|
机器学习/深度学习 人工智能 算法
强化学习从基础到进阶-案例与实践[1]:强化学习概述、序列决策、动作空间定义、策略价值函数、探索与利用、Gym强化学习实验
强化学习从基础到进阶-案例与实践[1]:强化学习概述、序列决策、动作空间定义、策略价值函数、探索与利用、Gym强化学习实验
强化学习从基础到进阶-案例与实践[1]:强化学习概述、序列决策、动作空间定义、策略价值函数、探索与利用、Gym强化学习实验