强化学习——基础概念
本文是对百度AIStudio推出的由科老师主讲的<强化学习7日打卡营>课程和David Silver的<深度强化学习>课程的总结,文章属于原创,但内容多是老师上课所讲的知识,此处只作为个人学习的阶段性总结。个人能力有限,文章有歧义之处可以观看原视频教程。课程地址:
强化学习7日打卡营:https://aistudio.baidu.com/aistudio/education/group/info/1335
深度强化学习:https://www.bilibili.com/video/BV1kb411i7KG
科老师的课程着重于实践,更多讲解的代码的实现,主要使用百度的强化学习框架PARL来实现。David Silver的课程着重于的理论的讲解,两门课程结合起来是个不错的选择。
一、强化学习问题的提出
强化学习是多学科融合的一门科学,是一门决策科学。在不同的领域有不同的表现形式。在计算机科学领域,我们通常叫它机器学习,更多的我们说它是强化学习。而在工程领域,这更像在研究最优化问题。在神经科学领域,人类大脑在很大程度上依赖于多巴胺系统来进行行为决策,多巴胺系统通过传递神经递质多巴胺,这类似强化学习中的奖励。在数学领域,这属于运筹学的内容。在经济学中,博弈论,效用理论和有限理性都在研究相同的问题,就是人类是如何以及为什么做出决定,这些决定可以使效益最大化。
强化学习是机器学习的一个分支,机器学习包括:监督学习、无监督学习、强化学习。
强化学习的框架如下图所示:
地球代表了强化学习中的环境,大脑代表了强化学习中的智能体Agent,强化学习就是要建立一个agent,让它自己完成我们交给它的任务。其核心思想是:智能体agent在环境environment中学习,根据观测observation,执行行为action,并根据环境反馈的奖励reward来指导更好的行为。
奖励 Reward
强化学习问题的根基是奖励。奖励Rt是一个标量反馈信号。每个时间步t,agent都会从环境获得一个奖励信号,表明agent在时间步t做得怎么样,agent的任务是将每一步的奖励累加起来,并使其达到最大。
序列决策 Sequential Decision Making
强化学习过程可以理解为是一个连续决策问题。目标是通过选取行为来最大化未来的奖励。行为的影响是长期的,并且奖励可能会延迟,为了获得更多的长期奖励,牺牲即时奖励或许会更好,即要目光长远。
环境 Environment
1)agent在每一个时间步t,会
(从环境)接收到观测Ot,也就是对外部世界的一个快照(机器人摄像机拍到的影像)
(从环境)获得标量奖励Rt
(根据策略)执行行为At
2)环境在每一个时间步t,会
①接收到(agent的)行为At,之后环境开始变化,产生新的观测和奖励
②发送新的观测Ot+1
③发送新的标量奖励Rt+1
3)在环境时间步中t增加
agent按以上的步骤和环境进行交互,不断的试错探索后,将产生观测、奖励和行为的时间序列,这个时间序列就是agent的经验,而经验就是用于强化学习的数据
状态 State
1)历史和状态 History and State
历史是观察、行为和奖励的序列。这也是agent到t时刻所经历的过程,获得的经验,是agent所能知道的所有信息。
Ht=O1,R1,A1,…,At-1,Ot,Rt
对于agent来说,它根据历史来决定所采取的行为。
对于环境来说,它根据历史来决定(下一刻的)观测或奖励。
但是历史并不是很有用,因为它包含的信息太多,通常会很大,所以我们常用状态State而不用历史。
状态是对(历史)信息的总结。每经历一个时间步长t,我们就构建一个状态,它是历史的函数:
St=f(Ht)
状态只有包含最后一次观测才能是合理有效的。比如只考虑最近四次的观测(这使得问题变得简单,而不是考虑整个历史上的所有观测)。
2)环境状态 Environment State
是环境的私有呈现,包含环境用来决定下一个观测/奖励的所有数据。如Atari模拟器。从环境的角度来看,环境状态决定了agent接下来应该采取什么样的行为。
需要注意的是,环境的状态对于agent并非总是可见的。比如机器人在地球上活动,它能看到的只有摄像机所拍到的东西(即观测observation),而其他的东西对agent来说是不可见的,比如武当山上的树。
即使agent能看到环境的状态,有些信息也可能是错误的,这对agent来说是没有用的信息,对agent左右有效的行为并没有好处。看到武当山上的树对于机器人在房间里行走并没有多大的用处。
多智能体的情况,当前智能体可以将其它智能体和环境交互的部分当成环境的一部分
环境状态并未告诉我们创建算法的有用信息,因为我们无法看到环境状态。
3)智能体状态 Agent State
是agent的内部呈现,包括agent可以使用的、决定未来动作的左右信息。agent状态也是一个数据集合,是强化学习算法可以利用的信息,它可以是历史的函数:Sta=f(Ht)
4)信息状态 Information State
包含历史上所有有用的信息,又称马尔科夫状态Markov State。
定义:当且仅当一个状态St满足以下等式时,它可称为马尔科夫状态:P[St+1 | St] = P[St+1 | S1,…,St]
马尔科夫性质:下一个的状态St+1仅与当前的状态St有关,与过去的状态S1,…,St-1无关。
也就是说,如果一个状态是马尔科夫状态,那么只要知道当下的状态,我们可以丢弃它的历史状态,因为历史状态对未来状态并无用处,当下状态包含了所有的历史状态的信息。另外可以理解为当下的状态足以表征未来的行为、观测和奖励的分布,即马尔科夫状态有足够多的信息来得出未来所有的奖励。
环境状态是马尔科夫状态。即我们可以完全表征环境未来的状态。
历史Ht是马尔科夫状态。这样我们就不用保存整个历史数据,这通常非常大,会占据很多内存空间。
5)完全可观测环境 Fully Observable Environents
这种环境下,agent可以看到环境所有的信息。
Ot=Sta=Ste
agent状态=环境状态=信息状态
当使用这种表示方式时,就得到了强化学习的形式,也就是马尔科夫决策过程(Markov decision process MDP)
6)部分可观测环境 Partially Observable Environments
这种环境下,agent无法看到环境所有的信息。
例如一个带有摄像头的机器人,它并不知道自己在房间的哪个位置,它所能获得的信息仅是摄像头拍摄到的影像。
例如斗地主,agent只能观测到已经打出的牌,还没出的牌是无法观测到的。
此时agent状态≠环境状态,并且我们不知道环境的状态(我们不知道对手手中牌是什么),所以我们需要构建agent状态Sta。这就是部分观测马尔科夫决策过程(Partially Observable Markov decision process POMDP)。构建的方法很多,例如将它构建为:
①完整的历史:
②环境状态的贝叶斯(Beliefs)概率:Sat = (P[Set = s1],…,P[Set = sn])。agent不知环境发生了什么,因此需要对环境引入概率分布。这个概率向量决定了状态,我们用它来决定下一步的行为,因此需要保存所有状态的概率值。
③循环神经网络
二、智能体 Agent
agent可以但不必须包换以下三个部分:策略Policy、价值函数Value-function、模型Model。
策略 Policy
策略表明agent能采取的行为。策略是一个行为函数,以agent的状态作为输入,以agent的下一步行为决策作为输出。即从状态到行为决策的映射。我们所要做的就是从经验中学习到一个好的策略,从而获得更多的奖励。
策略可以是:
确定性策略:a=π(s),输入一个状态s,返回一个确定的行为a;
随机性策略:π(a|s)= P[At=a|St=s],输入状态s,返回该状态下执行行为a的概率。
价值函数 Value function
价值函数用来评价agent在某种特定状态下的好坏,采取某种行为后的好坏,在某种特定状态下采取某种行为后,预期的奖励会是多少。价值函数是对未来奖励的预测。评估不同状态的价值用以选择奖励更大的状态。
价值函数是基于行为的,公式中用策略π作为索引。比如一个机器人执行策略a会摔倒很多次,执行策略b能快速行走,那这两个策略的最终奖励是不同的。我们获得的奖励完全依赖于我们的策略。对于策略来说,价值函数告知我们在未来我们的奖励预期会是多少。γ是一个(0,1]的权重值,用来权衡未来的奖励和当下的奖励。γ趋于0时,价值函数侧重的是当下的奖励;γ趋于1时,价值函数不仅关注当下,也关注未来;当γ=1,价值函数关注一个完整的循环,这种情况仅当未来有限时采用。γ通常取0.99~0.999。0.99意味着会向前看100步左右,0.99100=0.366。
模型 Model
模型是agent用来感知环境是如何变化的,这里的环境并不是指真是的环境,而是agent眼里的环境。有时模型对预测环境的变化很有用处,模型会学习环境的行为,然后用来确定下一步的计划。一般来说模型包含两部分:
状态转换模型 Transitions model:P预测下一个状态,预测环境的动态变化。比如迷宫环境中,agent往东南西北方向行走的概率分别是0.25,0.25,0.25,0.25。
奖励模型 Rewards model:R预测下一个(即时)奖励。比如迷宫环境中,agent每走一步就会获得-1的奖励。
在无模型(Model-free)强化学习问题中,模型是不需要的。
分类
(1)
1)基于价值(Value Based):
①策略未知
②价值函数已知
agent通过价值函数来选择最优的行为。如下图中,基于价值函数,老鼠在状态B时,知道A的价值是-50,B的价值是+50,那么老鼠会往右走。
2)基于策略(Volicy Based):
①策略已知
②价值函数未知
一个基于策略的agent意味着不去表征agent的内部情况,也就是不使用价值函数。agent包含某种数据结构,如迷宫环境中,在某状态下,储存的是agent即将行走的方向的概率,东南西北。在下图中,基于策略,老鼠往左右方向走的概率各是50%,往下走的概率是0%。
3)Actor Crtic:
①策略已知
②价值函数已知
将策略和价值函数结合起来,直接采用策略来储存某状态下的行为,同时也保存每个状态目前所得到的奖励。
(2)
1)无模型(Model Free)
①策略 和/或 价值函数已知
②模型未知(P和R未知)
模型未知意味着agent并不去尝试理解环境(学习P和R),不去创建环境的动态特性模型来表征直升机该如何运动。相反我们根据策略或价值函数,即通过经验,我们就能找到应该如何采取行动才能获得最高的奖励。我们并不需要知道环境是如何变化的。
2)基于模型(Model Based)
①策略 和/或 价值函数已知
②模型已知(P和R已知)
这首先需要建立一个模型用来表示环境的工作原理(即建立环境的P函数和R函数)。如迷宫环境中,agent只能往东南西北四个方向走,往每个方向的概率都是0.25(P函数),每走一步获得-1的奖励(R函数,即时奖励)。
三、强化学习中的问题
学习和规划 Learning and Planning
在连续决策问题中存在两种不同的问题。回顾一下,制定最优决策意味着什么,就能发现这两个问题。
1)强化学习问题(Reinforcement Learning):
①环境最初是未知的
②agent与环境交互
③agent改进其策略
2)规划(Planning):
①环境模型是已知的
②agent使用其模型执行计算(无任何外部交互)
③agent改进其策略
④a、 k.a.深思熟虑、推理、反省、琢磨、思考、探索
agent首先通过学习获得环境的模型,然后进行规划
探索和利用 Exploration and Exploitation
强化学习类似于一个试错的学习过程,agent要在和环境的交互中发现一个好的策略,同时又不至于在试错的过程中丢失太多的奖励。探索和利用是agent在决策时需要平衡的两个方面,这也是强化学习特有的,在监督学习和无监督学习中则没有这个特点。
例如:我们要在我们的APP上增加一个广告推送的功能。现在有很多广告可以推送给用户,有牛肉干的,葡萄干的,啤酒的等等。每次用户打开APP的时候,我们可以推送一则广告3s。经过一段时间后我们统计发现葡萄干的广告点击数100,牛肉干的是1000,啤酒的是2000。利用指的是,目前啤酒的点击率最高,我们以后一直推送啤酒相关的广告,这样我们能获得最高的点击率;而探索指的是,我们尝试推送以下汽车的广告或者卖房的广告,结果发现卖房的点击率是10,汽车的点击率是5000,探索过程中,虽然我们会遇到卖房广告这些低收益的情况,但也可能存在汽车广告这种比之前收益都要高的情况。
预测和控制 Prediction and Control
预测意味着遵循现在的策略,agent会在将来得到多大的奖励。即根据一个确定的策略来评估执行该策略所获得的奖励(价值函数)。
控制指的是最优的策略是什么,在这个状态,我执行什么行为才会收获最多的奖励
本文主要对强化学习中的基础概念进行了总结,还没有涉及到具体的算法,后续也会根据课程的排布对算法进行总结。