前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >原创 | 一文读懂强化学习DQN算法

原创 | 一文读懂强化学习DQN算法

作者头像
数据派THU
发布2023-04-25 14:41:52
7320
发布2023-04-25 14:41:52
举报
文章被收录于专栏:数据派THU数据派THU
代码语言:javascript
复制
作者:贾恩东本文约3000字,建议阅读8分钟本文介绍了强化学习DQN的算法。

本文是入门强化学习系列的第二篇,上一篇是入门篇《一文读懂强化学习》

上一篇中讲过强化学习的核心问题是找到最优的策略函数,而评价策略函数好坏的指标之一则是状态价值函数。这里快速回顾一下状态价值函数的定义。

在某时刻,在每种可能发生的状态 s 下,agent 都可以有动作 a (a∈A,A为所有可能动作的集合)可以选择,而每次执行动作,系统就会跳转到下一时刻,而状态就会发生转移,状态的转移不是唯一确定的,其概率分布由系统的状态转移概率矩阵决定;状态价值函数的含义就是从当前状态s 开始到最终状态时agent所能获得的累加回报的期望:

当考虑Reward(回报)具有时间价值的折现率 

时,

状态价值函数V 理应只和两个变量有关,一个是当前的状态s,一个是根据状态如何采取动作,即策略

(s)。

进一步可以表示为递归的形式,这里

代表状态 s→s′ 的转移概率。

上式这种基于迭代的方程就是大名鼎鼎的Bellman-Equation(贝尔曼方程)。

我们重新强调一次,状态价值函数就是在给定某一个状态 s的时候,如果接下来agent的行动策略是 

,我们将会得到多少累积奖励的期望值。因为就算是同样的状态,接下来的行动策略  

 不一样,得到的未来累积奖励也是不一样的。所以状态价值函数的值取决于状态和策略,更本质一点来说,状态价值函数是在衡量一个策略的好坏,而不是衡量一个状态的好坏。

如果我们不在拘泥于衡量整个策略,而着眼于衡量策略中针对某状态的某个行动,那我们如何衡量一个动作的好坏呢?这就是评价策略函数好坏的另一个指标动作价值函数

和状态价值函数有一个约定俗成的记号 V 类似,动作价值函数一般记作 Q 。状态价值函数V的输入是一个状态,在使用策略 

进行后续的动作时,当前直到结束时期望的累积奖励是多少。而动作价值函数  Q的输入是一个状态-动作对,其指在某一个状态强制采取某一个动作,在使用策略

进行后续的动作时,当前直到结束时期望的累积奖励是多少。

这里我用了“强制”这个词来强调一件事:策略 

在看到状态 s 的时候,它采取的动作不一定是 

,而 Q 函数假设在状态 s 强制采取动作 a,而不管我们现在考虑的策略 

会不会采取动作 a,这并不重要。在状态 s 强制采取动作 a。接下来都用策略 

 继续玩下去,就只有在状态 s,我们才强制一定要采取动作 a,接下来就进入自动模式,让策略

 继续玩下去,得到的期望奖励才是 

(s,a) 。

实践中, Q 函数有两种表示方法:

1.输入是状态与动作,输出是一个标量,即直到结束的累积奖励期望。这种Q函数既适用于连续动作(动作是无法穷举的),又适用于离散动作。

2.输入是一个状态,输出是向量,向量的每个分量对应相应动作下直到结束的累积奖励期望。这种 Q函数的表示方法只适用于离散动作。举个例子,在超级玛丽游戏中,玩家动作空间是离散的,假设动作就只有 3 个可能:上跳、往右或是往左。Q 函数输出的向量就有3个分量, 3个分量就分别代表 a 是往上跳时的 Q 值,a 是往右时的 Q 值,还有 a是往左时的 Q 值。

综合以上,我们知道了状态价值函数和动作价值函数的含义。相信读者已经有所感觉:状态价值函数似乎更适合评价不同策略的好坏,而动作价值函数似乎只能评价某动作的好坏。虽然我们上文中的Q函数只能用来评估在某一个策略 

 中不同 动作a 的好坏,但只要有了 Q函数,我们就可以进行强化学习,就可以决定要强制采取哪一个动作,就可以进行策略改进。

假设我们有一个初始的策略,也许一开始很差,甚至动作全部是随机决策的也没有关系。初始的策略记作 

,agent使用策略 

 与环境交互,我们会收集数据想方设法获得 Q 函数(至于如何获得,我们一会儿再详细来说)。即最终我们获得了当前策略  

的Q值,去衡量一下 

在某一个状态 s 强制采取某一个动作,接下来会得到的期望奖励。那我们就可以选择最大 Q 对应的那个动作强制选择,即改进当前策略为新的策略 

′ ,策略

′ 会比原来的策略 

 要好。我们用 

′ 取代 

,再去学习它的 Q 函数,得到新的 Q 函数以后,再去寻找一个更好的策略。这样一直循环下去,策略就会越来越好。迭代过程可以如下式。

那么我们要如何获得价值函数呢?有两种不同的方法,我们展开来说。

1.基于蒙特卡洛的方法。简单来说,就是让agent与环境交互,我们从上帝视角做好记录与统计工作,从agent看到状态 

 进行行动开始直到结束,接下来的累积奖励有多大;如果agent看到状态 

 进行行动开始直到结束,接下来的累积奖励有多大。但是实际上,我们也不可能看到所有的状态,因为agent不可能穷举经历所有环境的可能,不过这并不是很严重的问题,只要agent和环境交互足够多,我们就能看到绝大多数的状态。更进一步的,我们将价值函数当成是一个连续函数,用一个神经网络Deep Network来近似。那么对一个连续函数,或者神经网络来说,就算输入状态是从来都没有看过的,我们也可以想办法估测一个值,这其实就是一个回归问题(regression)。如果在状态s,接下来的累积奖励期望是 G ,也就是这个价值函数的标签真值,那么我们在拟合该模型的时候,就希望在输入

 的时候,输出的值与

 越接近越好;输入  

 的时候,输出的值与 

 越接近越好,可以使用MSE Loss进行梯度下降。

2.基于时序差分的方法。即Temporal Difference,TD算法。在基于蒙特卡洛的方法中,每次我们都要计算累积奖励,也就是从某一个状态 

 一直到互动结束的时候,得到的所有奖励的总和。如果我们要使用基于蒙特卡洛的方法,我们必须至少玩到流程结束。但有些互动流程时间非常长,我们要记录到流程结束才能够更新网络,这花的时间太多了,因此我们会采用基于时序差分的方法。基于时序差分的方法不需要等到流程结束,只需要在其中的某一个状态 

 的时候,采取动作 

得到奖励

 ,接下来进入状态 

,就可以使用时序差分的方法。具体来说,我们可以通过贝尔曼方程来使用时序差分的方法。假设我们现在用的是某一个策略

,在状态 

时,它会采取动作  

,得到奖励 

 ,接下来进入  

 。状态 

  的 Q 值与状态

 的 Q 值,它们的中间差了一项 

,这是因为我们把 

 的 Q 值加上得到的奖励  

就可以得到

 的 Q 值,如下式表达。在训练的时候,我们把 

 输入网络会得到 

(

),把 

 输入网络会得到 

(

),

(

) 减  

(

)的值应该是 

。我们希望它们相减的损失与

 接近,训练下去,更新 

 的参数,我们就可以把 

 函数学习出来,同样的,可以使用MSE Loss进行梯度下降。

到这里我们就把DQN的入门知识讲解完毕了,当然DQN还有一些进阶的技巧,比如延迟更新,经验回放,探索-利用均衡等技巧,留待感兴趣的同学自己查阅学习论文即可。DQN算法从一开始NIPS 2013的版本到在这之后DeepMind不断对其进行改进,在Nature等期刊上的不断发文,留下了很多不错的学习DQN进阶技巧的一手资料,这里我就不再赘述了。

编辑:王菁

校对:林亦霖

数据派研究部介绍

数据派研究部成立于2017年初,以兴趣为核心划分多个组别,各组既遵循研究部整体的知识分享实践项目规划,又各具特色:

算法模型组:积极组队参加kaggle等比赛,原创手把手教系列文章;

调研分析组:通过专访等方式调研大数据的应用,探索数据产品之美;

系统平台组:追踪大数据&人工智能系统平台技术前沿,对话专家;

自然语言处理组:重于实践,积极参加比赛及策划各类文本分析项目;

制造业大数据组:秉工业强国之梦,产学研政结合,挖掘数据价值;

数据可视化组:将信息与艺术融合,探索数据之美,学用可视化讲故事;

网络爬虫组:爬取网络信息,配合其他各组开发创意项目。

点击文末“阅读原文”,报名数据派研究部志愿者,总有一组适合你~

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派THUID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

未经许可的转载以及改编者,我们将依法追究其法律责任。

点击“阅读原文”加入组织~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据派THU 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档