从事深度强化学习有一段时间了,整理了网上的一些资料,写几篇博客作为知识的梳理和总结。

开讲前,先给大家看个深度强化学习的例子,下面是深度学习cnn和强化学习结合玩吃豆人的游戏




看图像我们会发现吃豆人会,吃掉一闪一闪的豆子来消灭怪物,仔细观察会发现,经过训练的吃豆人,甚至会停在某个角落来躲避怪物,这是一个非常有趣的现象,后面会附有个人深度强化学习项目地址。下面我们开始正式介绍强化学习。

一、强化学习的基本概念

1.1 强化学习的原理和解释

强化学习任务通常使用马尔可夫决策过程(Markov Decision Process,简称MDP)
来描述,具体而言:机器处在一个环境中,每个状态为机器对当前环境的感知;机器只能通过动作来影响环境,当机器执行一个动作后,会使得环境按某种概率转移到另一个状态;同时,环境会根据潜在的奖赏函数反馈给机器一个奖赏。综合而言,强化学习主要包含四个要素:状态、动作、转移概率以及奖赏函数。————
周志华《机器学习》




根据上图,agent(智能体)在进行某个任务时,首先与environment进行交互,产生新的状态state,同时环境给出奖励reward,如此循环下去,agent和environment不断交互产生更多新的数据。强化学习算法就是通过一系列动作策略与环境交互,产生新的数据,再利用新的数据去修改自身的动作策略,经过数次迭代后,agent就会学习到完成任务所需要的动作策略。

1.2 强化学习和机器学习

强化学习是机器学习的分支之一,但是又区别于其他机器学习,主要体现在:



* 无特定数据,只有奖励信号
* 奖励信号不一定实时
* 主要研究时间序列的数据,而不是独立同分布的数据
* 当前行为影响后续数据

从1.1基本原理我们可以看的强化学习和其他机器学习算法监督学习和无监督学习的差别。监督学习和无监督学习都需要静态的数据,不需要与环境交互,数据输入到相关函数训练就行。而且对于有监督学习和无监督学习来说,有监督学习强调通过学习有标签的数据,预测新数据的标签,无监督学习更多是挖掘数据中隐含的规律。

1.3 主要算法和相关分类


根据上面的原理,其实我们可以得到,强化学习关键要素:agent(智能体),reward(奖励),action(行为),state(状态),environment(环境)。

* agent:主要涉及到:策略(Policy),价值函数(Value
Function)和模型(Model)。Policy,可以理解为行动指南,让agent执行什么动作,在数学上可以理解为从状态state到动作action的映射,可分为确定性策略(Deterministic
policy)和随机性策略(Stochastic policy),前者是指在某特定状态下执行某个特定动作,后者是根据概率来执行某个动作。Value
Function,对未来总Reward的一个预测。Model,一个对环境的认知框架,可以预测采取动作后的下一个状态是什么,很多情况下是没有模型的,agent只能通过与环境互动来提升策略。
* state:可以细分为三种,Environment State,Agent State和Information State。Environment
State是agent所处环境包含的信息,简单理解就是很多特征数据,也包含了无用的数据。Agent
State是输入给agent的信息,也就是特征数据。Information
State是一个概念,即当前状态包含了对未来预测所需要的有用信息,过去信息对未来预测不重要,该状态就满足马尔科夫性(Markov
Property)。Environment State,Agent State都可以是Markov Property。
* environment:可以分为完全可观测环境(Fully Observable Environment)和部分可观测环境(Partially
Observable Environment)。Fully Observable
Environment就是agent了解了整个环境,显然是一个理想情况。Partially Observable
Environment是agent了解部分环境的情况,剩下的需要靠agent去探索。
强化学习算法按照agent分类,可以分为下面几类:

* 关注最优策略(Policy based)
* 关注最优奖励总和(Value based)
* 关注每一步的最优行动(Action based)
从不同角度也可以继续细分,具体可以看下图:



下面我们简单介绍分析一下Qlearning和Sarsa

1. Qlearning



2. Sarsa




从表格我们知道,Qlearning是on-policy,而Saras是off-policy。 对于Saras,当agent处于状态s时,根据当前Q网络以及一定的策略来选取动作a,进而观测到下一步状态s',并再次根据当前Q网络及相同的策略选择动作a',而Qlearning则是,根据当前Q网络计算出下一步采取哪个动作会得到maxQ值,并用这个Q值作为当前状态动作对Q值的目标,简单来说,Saras是agent处于新状态s',就知道要采取行动a',并且执行了,行动的选择根据策略,Q值的计算是根据动作a',而Qlearning是agent处于新状态s',只能知道采取哪个行动可以得到maxQ,并没有采取对应行动,它是根据当前Q和策略来采取行动的。在后面我们会做详细分析。

二、深度强化学习


传统的强化学习局限于动作空间和样本空间都很小,且一般是离散的情境下。然而比较复杂的、更加接近实际情况的任务则往往有着很大的状态空间和连续的动作空间。当输入数据为图像,声音时,往往具有很高维度,传统的强化学习很难处理,深度强化学习就是把深度学习对于的高维输入与强化学习结合起来。

2013和2015年DeepMind的Deep Q
Network(DQN)可谓是将两者成功结合的开端,它用一个深度网络代表价值函数,依据强化学习中的Q-Learning,为深度网络提供目标值,对网络不断更新直至收敛。2015
DQN nature算法可以看下图:



DQN用到了两个关键技术涉及到了两个关键技术:

1、样本池(Experience
Reply):将采集到的样本先放入样本池,然后从样本池中随机选出一条样本用于对网络的训练。这种处理打破了样本间的关联,使样本间相互独立。

2、固定目标值网络(Fixed Q-target):计算网络目标值需用到现有的Q值,现用一个更新较慢的网络专门提供此Q值。这提高了训练的稳定性和收敛性。

DQN在Atari
games上用原始像素图片作为状态达到甚至超越人类专家的表现、通过左右互搏(self-play)等方式在围棋上碾压人类、大大降低了谷歌能源中心的能耗等等。当然DQN也有缺点,它是高维输入,低维输出的,当涉及到一次性输出连续动作时,即高维度输出,就束手无策了,DeepMind也在后续提出了DDPG。

根据前面知识可以意识到强化学习本身是非常通用了,智能体可以自己学习,如果和深度学习结合岂不是万能?错了,当前深度强化学习也有许多难点:

* 样本利用率低,需要长时间训练
* 很难设计奖励函数
* 对环境过拟合,比如去玩打砖块很擅长,却很难去适应俄罗斯方块
* 不稳定,函数对参数很敏感,参数的变动,模型会千差万别
未来可能方向:

* 与迁移学习结合,适应不同环境
* 硬件提升
* 融合更多的模型学习,充分利用样本
* 自主设定奖励函数
个人相关深度强化学习github地址:https://github.com/demomagic <https://github.com/demomagic>

下一篇我们将深入讲解强化学习的必备知识,马尔科夫决策过程(MDP)

PS: 如果觉得本篇本章对您有所帮助,欢迎关注、评论、赞!如果要转发请注明作者和出处

参考文献:

    [1]一条咸鱼的强化学习之路2之强化学习基本概念与MDP:https://zhuanlan.zhihu.com/p/26608059
<https://zhuanlan.zhihu.com/p/26608059>

    [2]深度强化学习——从DQN到DDPG:
https://blog.csdn.net/qq_41352018/article/details/80274257
<https://blog.csdn.net/qq_41352018/article/details/80274257>

    [3]一文了解强化学习:https://blog.csdn.net/aliceyangxi1987/article/details/73327378
<https://blog.csdn.net/aliceyangxi1987/article/details/73327378>

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信