DQN学习心得 - 基于paddle的强化学习框架PARL

1 PARL

1.1 parl是paddle平台下的一款开源强化学习框架,用简单明晰的方式定义了强化学习过程,并且提供了从入门到进阶的全套学习路线,并配有视频教程,可以说是目前把强化学习的讲解深入浅出做的最好的视频教程了

1.2 parl的基本结构如下所示

environment接口提供了强化学习的环境,本文默认环境为雅达利游戏,因此接下来用游戏环境代称。游戏环境根据当前游戏的状态(observation)接收玩家的动作(action),将输出游戏的下一个状态(next_observation),本次动作得到的分数(reward)以及游戏是否结束(end)

agent接口模拟了游戏的玩家,包括model与algorithm两个内部接口,其中model可视为agent的大脑,用于根据当前状态选择最优的游戏策略。模型训练时,则根据当前策略输出的结果与游戏环境给出的结果进行对比,得到损失信息以更新策略, algorithm可视为训练时采用的具体方法。

parl的优势在于用非常简单的方式定义了一整套的强化学习框架,扩展性和实用性都很强,并且基于paddle给出了大量的算法实现例子,其中包括了代码、参数、论文,无论是学习还是研究强化学习技术,都可谓是非常强大好用的工具

2 Q learning

2.1 强化学习,一般可看作一个连续决策问题,对于游戏中的每一个状态采取一定的策略选取一个动作,使得游戏结束时总分最高,游戏总分包括两部分,一部分是由当前动作直接得到的分数,另一部分则是由当前动作影响到的后续的动作所得到的分数。具体过程可如下公式

其中s为状态,a为动作,π为策略,R1为此刻的分数,Rn(n>1)为将来的分数,γ为不大于1的系数,Q可视为状态为s时采取动作a所能得到的最终分数的期望,详细的推理过程可参考paddle官网的视频教程

2.2 Q learning从概念上来说,属于上述parl框架的algorithm,是一种根据玩家与游戏交互的情况来更新游戏策略的方法,思路很直观,玩家根据目前的策略选取动作,与游戏环境交互,并更新目前的策略,更新公式如下图所示

其θ为模型的参数,可视为游戏策略,具体过程如下

2.3 DQN,Double DQN,Dueling DQN

2.3.1 将Q learning的策略更新思路转移到parl框架中,将输入定义为卷积网络从游戏中图像抽取特征信息,则形成了DQN的基本雏形

2.3.2 为了更进一步的有效学习,DQN的作者设计了reply memory与target model两种极具创意的组件,其中前者用于保存玩家与游戏交互过程中得到的 observation, action, reward, next observation等信息,用以作为监督学习的训练样本,后者则用于使用target model则针对强化学习过程中模型更新频繁的问题,作为目前一段时间模型的近似,来稳定的获取未来的游戏分数期望

2.3.3 DQN在很多雅达利游戏中取得了超越人类的分数,但是谷歌的研究员们针对DQN做了进一步的优化,提出了Double DQN,用以战胜更复杂的游戏环境,其基本思路即DNQ的更新方式会引起过于乐观的估计,反而导致游戏总得分下降,作者采取的解决方案是计算未来的奖励期望时,在另一个模型中选取动作,再回到原本的模型中计算,来避免对某一个动作做出过高的估计。其中的证明过程很复杂,反应到代码上,这个模型用model即可。

2.3.4 Dueling DQN是对DQN的另一个改进,这个改进提升到了model层面,如下图所示,计算动作概率分布时,使用了两个额外的层A,V,分别对应强化学习公式中的优势函数与值函数,但是又不等同于真正的优势函数与值函数。从下述代码可知,作者做了一个非常巧妙的技巧,减去了A函数的平均值,从而使得A,V函数去逼近真正的优势函数与值函数,进一步来说,使得训练过程中,模型更关注于

2.3.5 Double DQN 与Dueling DQN都是针对更复杂的游戏所做的改进,也是为了更适应于真实世界的人与环境交互的场景,由于时间有限,仅做了部分实验结果,参数保持代码中的原始参数不变

A 对于pong游戏

DNQ仅用了1002234个steps达到了20分,但是其后分数波动较大,并不稳定

Double DQN 用了1100484个steps达到了20分,其后分数相对稳定

Dueling DQN 用了1301422个steps达到了21分,其后分数最稳定

B 考虑到pong游戏中动作比较简单,三种方法的差距拉不开,于是又尝试了bank heist游戏

bank heist游戏更加复杂,也更难得到较高的分数,尝试了很多次,都无法几个小时内达到预期的分数,所以只实验了一种方法,结合Double DQN与Dueling DQN一起训练,从结果上看

Double Dueling DQN用了2400161个steps达到了676分,其后分数还在持续上升,远远高于DQN论文中的最高分480分

3 parl 代码

3.1 用parl来解决强化学习的问题是十分简单方便的,运行的基本流程如下,包括定义超参数,编写训练代码,编写测试代码,配置parl框架并运行,尽管代码如此简单,但是parl还提供了更简单的方式,让parl的使用者连下述的代码都不用写,parl提供了大量的examples,包括各种经典、前沿的论文复现代码及其对应的参数,其中的代码都采取parl的统一接口,只需要根据自己的需要做一些简单的更高即可

3.2 比如,想要使用double dqn与dueling dqn两种方法结合进行训练,只将atari_model.py中的一行代码

由 if self.algo == 'Dueling' 改为

if self.algo == 'Dueling' or self.algo == 'DDQN_Dueling'即可

4 小结

原本选择论文的时候,想选择日期更加新鲜的文章,大致对比了一下论文的内容,觉得还是学习DQN模型更有助于巩固之前学习的效果,不得不感慨,这几篇文章都是值得反复读的论文,作者进行深度学习研究的思路、技巧,作者对于强化学习中各种要素的理解,都让我印象十分深刻。写到此刻,最迫切的感触就是,这三篇论文,我想再读一遍


参考:

1 ai studio 强化学习视频教程 https://aistudio.baidu.com/aistudio/education/group/info/1335

2 基于paddle和parl框架的dqn复现代码 https://github.com/PaddlePaddle/PARL/tree/develop/examples

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,233评论 6 495
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,357评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,831评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,313评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,417评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,470评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,482评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,265评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,708评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,997评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,176评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,503评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,150评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,391评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,034评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,063评论 2 352