基本概念
State:在下面的例子中就是指每个位置(location),例如s1、s2、s3…就是一个State,所有State的集合就是State Space(集合空间 S = { s1,s2,s3,s4,s5…,s9 })
Action:每个状态可采取的行动,就如下面图片的例子,对于任意的Agent,那么其可以有四个Action分别为a1(往上走)、a2(往右走)、a3(往下走)、a4(往左走)、a5(原地不动),我们把所有的Action放在一起就构成了一个Action Space:( A(si) = {a1,a2,a3,a4,a5})
State transition:当我们采取一个action的时候,Agent从一个State移动到另一个State,这样的以哦个过程就是state transition
第二张图片为什么采取了state transition还依然处于s1的state的呢,就是因为我们使用的上面的表格例子,S1往上走就超过边界,所以往上走还是会停留在原state
我们可以使用表格的形式来哦展示出所有的state transition,将每个状态上的action都表现出来,但是在实际使用的情况下比较受限,因为他只能表述确定性的情况
,加入我们state是s1,我们使用action是a1,那么我们有可能被弹回s1,也有可能弹回s4,这种多情况是无法表达的
Policy:会告诉Agent如果我在一个state我因该使用哪个action,绿色的箭头就是Policy,圆圈代表待在原地不动。 path:如图中虚线就是我们状态转移的过程
一般使用这种条件概率的方式表示Policy,其中派在强化学习当中指的是策略,派就是一个条件概率,它指定了任何一个state下任何一个action他的概率是多少
不确定情况,每个action都有概率,只不过有些的为0
表格形式表达策略
Reward: 首先reward是一个数,一个实数是一个标量,在agent采取了一个action之后会得到这样一个数,
如果这个数是一个正数,那么代表我们对这个action是鼓励的;如果数为负数那么代表我们不希望这样的的action发生
。
如果我们不给reward或者reward设置为0 就是没有punishment,没有punishment在一定程度上就是鼓励
也可以用正数代表punishment,负数代表鼓励
在实际情况下我们得到的reward打的大小是不确定的,这个时候表格就不再适用了,这时候就可以使用比一般化的方法条件概率来表示
reward考虑的是其state和采取的action,而不是下一个state
Trajectory and return:是一个state-action-reward的链
return:就是这一个trajectory上所有reward的总和,其作用还可以比较不同策略的优劣
不同的策略会得到不同的轨迹也会有不同的trajectory和return
以上两策略的好坏我们可以通过return来进行判断,两种策略都达到目标,但是第二种策略中是进入到了一个惩罚方块里,那么我们可以用return来查看不同测控的优劣
Discounted return
上面我们讲到的策略中,到达S9之后其action就会选择a5,他的return也会一直+1,这样下去最后的return就会变成无穷大,就会被发散掉
为了解决上面发散的问题,我们引入了discount rate γ∈ [0,1),discount rate
和return相结合就得到了Discounted return
按照下面的描述我们可以看到可以通过控制γ来控制agent最后学到的策略,如果我们减小γ,那么会让它变得更加近视(会更加注重最近的一些reward),如果变大那么会更加远视(会更加注重长远的reward)
Episode
Episode一般会伴随terminal states,terminal
states就是下面从S1到S9的一个过程又被称之为一个trial,他的步骤是有限的
有些任务他是没有terminal states的,就意味着agent和环境的交互会永远的持续下去,这样的任务就是continuing tasks,现实中我们是找不到无线持续下去的任务,但是我们会近似地把时间持续比较长的任务说成是continuing tasks
在我们这个例子中agent到达目标区域后我们是要让agent停在那不动还是要像上面计算Discounted return一样让它在执行策略然后一直停留在S9位置呢,我们有一种统一的方法来描述这种episode和continuing tasks,在后面这里我们不区分他们两个,因为我们把这种episode task 转换成了continuing task,下面是转换的两种方法:
(1)我们把target state认为是一个特殊的absorbing state(我们在设置他的stage transition probability的时候如果当前状态就是target状态那么不论你采取什么action他都会再回到这个状态或者说在这个状态的时候他就没有其他的action,可以修改它的action space为只有停留在原地的action),还要在修改在这之后所得到的reward全部都是0
(2)我们将target state认为是一个普通的状态,他也有策略,如果策略好的化他就一直停留在那里,可以收集正的reward,如果策略不好的话可以跳出来(后面一般都会使用此方法)
Markov decision process(MDP)框架
MDP包含很多要素
- Sets(集合):State(state space)、Action(action space)、reward
- Probability distribution:State transition probability:就是我们在S采取一个行动,这个行动从S跳到S` 的概率是多少 p(S`|S,a)
reward probability:当前我在S采取action为a那么我得到的r的概率是多少p(r|s,a) - Policy:我在状态S,采取一个策略这个策略会告诉我采取action为a他的概率是多少Π(a|S)
- Markov property:memoryless property不考虑历史策略
下图 描述的是马尔可夫过程(Markov process)
Markov process 和 Markov decision process 的关系 Markov decision process
中如果decision就是我们的policy确定了,那么这个policy就和整个系统融为一体了,就变成了Markov process
贝尔曼公式(Bellman equation)
为什么return是重要的呢?
我们可以看到下面从S1出发采用了不同的策略到达我们的目标S4,那我们要如何判断哪个策略是最好的呢,直观上看因为第一个策略没有进入到 forbidden area(s2)因此其是最好的策略,第二种策略进入到了S2是最坏的,第三种策略有一定概率进入到S2是不好不坏的。那我们如何用数学来描述这样的直观结果呢,就可以使用return来进行策略评估
对策略1(Policy 1)计算return
对策略2(Policy 2)计算return
对策略(Policy 3)计算return,一般来说这已经不算是在求return了,因为对于return的定义来说,return是针对一条轨迹来定义的,但是这里面涉及到了两条轨迹,实际上我们计算的是平均值,也可以理解为求expectation,因此这里的return3就是我们后面要介绍的state value
通过return的大小来比较不同策略的优劣
计算从不同出发点出发的return,我们可以看到这些return是相互依赖的,这我们称之为Bootstraping
那这些return相互依赖我们又怎么计算我们所需要的return呢
公式V = r + γPV
求出来的解就是我们所需要的return,同时这个公式也就是贝尔曼公式(Bellman equation),但是这只是针对非常简单的deterministic的情况
state value
为了介绍state value需要引入一些符号
对于单步过程,St指的是当前的状态,At指的是在当前状态下我们采取的动作是At,我们得到的下一个reward是R(t+1)有时也会写成Rt,跳到的下一个吧状态是S(t+1),t指的是当前时刻,t+1指的是下一个时刻
在这些过程当中所有的跳跃都由probability distribution来决定的 在St要采取什么样的动作,是由策略来决定的
在St采取action At要得到什么样的reward是由reward probability决定的
在St采取At要跳到下一个什么状态是由state transition probability决定的
上面这样一个单步的过程可以推广到一个多部的trajectory,因为R(t+n)是一个随机变量,因此Gt也是一个随机变量
定义state value Gt是对一个trajectory的discounted return,state
value就是Gt的期望值(expectation、expectation value、mean、average、平均值),state
value的全称是state-value function
- VΠ(s)是一个s的一个函数,因此从不同的s出发,我们得到的轨迹不同,那么得到的discounted return也是不同的,我们求出的平均也是不同的
- 它是一个策略的函数,不同的策略会得到不同的轨迹,不同的轨迹会得到你不同的return,进而又会得到不同的state value
- state value中的value不仅仅是数值上的value,还可以代表它的一种价值,当一个state value比较大的时候就代表这个状态是比较有价值的,因为从这个状态出发我们会得到更多的return
return 和state value有啥区别和联系?
return是针对当个trajectory,而state value是对多个trajectory得到return再求平均值
下面的例子我们计算三个不同策略从S1出发的state value
如何推导贝尔曼公式
上面我们已经讲到了state value的概念和作用,那么怎么来计算state
value呢,这就需要使用贝尔曼公式进行计算。贝尔曼公式描述了不同状态的state value之间的关系
首先我们从一个St出发采取At,得到以下的一个trajectory
我们可以计算这个trajectory的discounted return
Gt,最终经过化简,我们得到Gt等于最近的reward加上下一个时刻为出发点出发能够得到的return
根据state value的定义得到以下式子,然后把Gt分成最近reward和将来的reward两个部分,最终我们将其分开就得到两个expectation,下面我们就开始分析这两个expectation
第一个expectation所表示的就是当前时刻在状态s(St = s)我得到当前的reward(immediate reward)是Rt+1,那么它的mean(期望值)是什么
首先我们在状态s(St = s)可以有多个action可以采取,我们采取action a的概率就是Π(a|s),当我们采取action a我们得到的value就是E[Rt+1 | St = s,At = a]
也就是Σp(r|s,a)r
(从s出发采取action a得到r
reward的概率就是p(r | s,a)),所以根据expectation的定义就是下面式子中后半部分求和那一项Σp(r|s,a)r
第二个expectation所表示的是我从当前状态s(St = s),从s出发所得到的下一个时刻的return的mean(期望值Gt+1)
p(s` | s)
:从当前s出发跳到不同s`的概率E[Gt+1 | St+1 = s, St+1 = S`]
:当前状态是s,下一个状态时s`,计算从下一个状态出发我所得到的return的mean(期望值),因为我们知道下一个状态时s`,我们就不用再关心之前时什么状态,因此也可以化简为E[Gt+1 | St+1 = s`]
(马尔可夫性质,没有记忆不关心之前的状态)
E[Gt+1 | St+1 = s`]
:表示从s`出发计算之后所能得到的return的平均值那么也就是计算s`的state value所以可以转换成vΠ(s`)
p(s` | s,a)Π(a | s)
:从s出发有多种不同action可以选择选择其中一个action的概率是Π(a|s),选择的action跳到s`的概率是p(s` |s,a),因此我们可以将p(s` |s)变形成p(s` | s,a)Π(a | s)
因此由上面的推导贝尔曼公式表达式如下 其描述了不同state value之间的关系 这个式子对状态空间中所有的状态都成立
- vΠ(s)和vΠ(s`)是需要计算的state value ,通过bootstrapping计算
- 概率Π(a|s)是policy,因此贝尔曼公式是依赖于policy的,如果我们能够把state value计算出来实际上我们就是在做policy evaluation,就是去评估这个policy(策略)是好还是坏
- 另外两个概率p(r|s,a)和p(s`|s,a)就是dynamic model或者叫environment model,这里又分两种情况,一种是我们知道这个model,另一种如果我们不知道model我们任然可以求出来state
value,但是需要用到model free reinforcement learning算法通过例子了解贝尔曼公式 下面我们用绿色箭头标注出了策略Π,下面也写出来这个问题中的所有贝尔曼公式
通过确定上面公式解析中提到的三个概率来确定最终的s1状态的的贝尔曼公式
按照上面的方法得到s2、s3、s4的贝尔曼公式
最终求解的结果如下
如果确定固定的γ = 0.9,那么最后的结果为:
因为s2、s3、s4离target area近,所以最终他们三个点的价值高,这三个点是值得去走的,s1离target area离target
area比较远因此其价值相对你较低,没有那么值得被走
贝尔曼公式矩阵和向量的形式
下面我们要了解的是怎么样求解贝尔曼公式当我们得到一个贝尔曼公式时,我们可以看到它等式左右和右边都有一个vΠ(s),假如从这一个公式中要求出state value 是不可能的。但是我们知道下面这个公式对所有的状态都是成立的,如果存在n个状态,那么我们就有n个这样的等式,如果我们把这n个等式放在一起我们就得到了一个 matrix-vector form
怎么得到matrix-vector from
我们将公式中ΣΠ(a|s)和Σp(r|s,a)合并为rΠ(s)
我们将公式中ΣΠ(a|s)和p(s`|s,a)结合就得到了pΠ(s`|s)(从s到s`的概率)也就是图二右边公式等号右边那一项
其中上图中rΠ(s)代表我从当前状态出发,所能得到的immediate reward的一个平均值
我们将上面整合的式子转换成matrix-vector from(如下图)
其中vΠ,rΠ是一个向量;[pΠ]ij代表第i行第j列的元素时从si跳到sj的概率,pΠ矩阵也被称为state transition matrix
例子:
使用贝尔曼公式的矩阵和向量形式来求解state value
为什么要求解state value?
给定一个policy我们会列出它的贝尔曼公式,在进一步求解这个贝尔曼公式得到state value,这样一个过程实际上叫做policy evaluation(policy evaluation是强化学习中非常重要,非常基础的工具,它可以评估一个策略的好坏)如何解决贝尔曼公式结合的matrix-vector form 下面有两种方法
(1)closed-form solution:也就是直接给出state value的解析表达式(如下图),在实际过程中我们通常不会使用,因为里面涉及到需要求矩阵的逆,当状态空间比较大的时候,矩阵的维数也会比较大,求逆的计算量也会比较大,因此实际过程中更多使用迭代的方法
(2)迭代方法:如下图因为式子中rΠ,γ,pΠ我们都事先知道,我们就可与i事先猜一个v0,求出v1,再将v1带入式子求出v2,这样一直迭代就可以求出最后真实的v0,v1,…,vk序列 ,当k趋向于无穷的时候vk就收敛到了vΠ就是真正的state value
vk收敛到vΠ的证明
例子:这是比较好的policy,但是我们看出即使两个policy是不一样的,但是他们得到的state value 时一样的,因此不同的policy是可能得到相同的state value的
看起来比较差的策略,很多时候下面两种策略的state value都是负的,也有出现撞墙的情况
Action value
State value和Action value有什么区别的联系?
State value指的是agent从一个状态出发所得到的average return,Action value指的是它从一个状态出发并且选择了一个action之后所得到的average return为什么要关注Action value?
在强化学习中的策略中我们会有很多可选的action,那我们需要选择那些action呢,这时候就需要通过action value 来进行判断,action value 大的意味着我选择那个action可以得到更多的rewardaction value 的定义:我从当前的状态s(St = s)出发,采取action a(At = a)之后我所得到的return的一个average就是action value
qΠ(s,a)是一个依赖于从哪个状态出发依赖于从这个状态的哪个action来出发的
action value 时依赖于策略Π的,不同的策略会得到不同的action value
数学上action value 和state value 他们有什么联系
图中的vΠ(s)是state value ,qΠ(s,a)是action value
公式(2)告诉我们如果我们知道action value 那么求平均我们就得到了这个状态的state value
公式(4)告诉我们如果知道了所有状态呢的state value我们就可以求出来所有的action value
例子:
策略已经用绿色箭头标出,首先的任务是针对s1写出对于s1的action value
策略告诉我们在s1的时候要往右走,接下来我们在求关于s2的action value那么我们就可以求出
如何来计算action value
(1)我们先求解了一个贝尔曼公式,然后我们可以从state value 中计算出action value
(2)我们也可以不计算state value 而直接计算action value,例如通过数据的方式,这时就可能不需要依赖模型
最优策略和贝尔曼最优公式
两个概念:optimal state value 、optimal policy
一个工具:贝尔曼最优公式(Bellman optimal equation(BOE))
强化学习的目的:寻找最优策略
先从例子出手,上面讲到的我们可以使用贝尔曼公式计算出State value ,然后我们可任意通过求解出来的State value 计算出 Action value
从上面计算的例子我们发现上面的策略其实不是最好的,那么我们怎么去改进这个策略,得到更好的策略呢,这就需要依赖Action value ,首先我们先将上面的策略写成下面图片中的形式(当a = a2往右走的时候它是1,当a != a2的时候等于0),在这个策略下我们已经计算出它的action value 并且我们发现a3的action value是最大的,因此我们需要保证每次我们都采取action value最大的action,这就能保证我们最终的整个策略是最好的,这需要在前一步是最优的情况下进行,因此需要进行迭代,这时候就可以使用贝尔曼最优公式来解决。
optimal policy 的定义
如果我们优两个策略Π1、Π2,那么他们在每一个状态都有自己的state value,如果对于所有的状态s,Π1得到的state value 都是大于Π2得到的state value,那我们就说Π1是要比Π2要好的
最优:如果一个策略Π*它对任意一个状态相比任意的其他一个策略Π它所得到state value 都要大,我们就是这个Π*是最优的
贝尔曼最优公式(Bellman optimality equation)
对于贝尔曼公式是给定的一个策略Π进行求解,但是对于贝尔曼最优公式我们是不确定策略Π的,我们需要去求解这个策略Π
贝尔曼最优公式最大化问题分析
我们可以看到在贝尔曼最优公式里面等号右边存在一个最优问题(max),并且对于这个最优问题策略Π是我们需要求解的未知量,并且在式子中v(s)也存在于式子两边,也是需要求解的未知量,那么我们怎么用一个式子求解两个未知量呢?可以按照下面的思路来进行求解
我们可以先固定v在求解其对应的策略Π
上面已经你介绍过我们怎么处理maxΠ,因此我们可以将右边求解maxΠ写成下面的式子来表示
其中的f(v)是一个向量,在这个向量中对应的state s对应的元素就是maxΣΠ(a|s)q(s,a),接下来我们求解贝尔曼最优公式就可以求解
v = f(v)
就行在求解式子
v = f(v)
之前我们先介绍一个contraction mapping theorem
fixed point(不动点)
:如果在集合X上有一个点x,有一个映射或者函数f,如果x满足f(x) = x,x就被称为一个不动点或者fixed point
Contraction mapping(contractive function)
:如果有一个函数被称为contraction mapping,那么它满足下面的不等式(去任意两个点,他们的函数值的差的norm是小于这两个点的norm,并且存在一个因子γ∈(0,1))[就是在一维空间中f(x1)与f(x2)之间的距离比x1与x2之间的距离还要小]
contraction mapping theorem
如果f是一个contraction mapping,那么对于式子x = f(x),contraction mapping theorem告诉我们三个重要的结论
(1)Existence:不关心f的表达式究竟是什么,只要是一个contraction mapping 我们就知道他一定存在一个 fixed point满足F(x*) = x*,
(2)Uniqueness:我们还知道这个fixed point 他是唯一存在的
(3)Algorithm:还知道怎样去求解这样一个fixed point ,使用迭代式算法xk+1 = f(xkl)
在BOE中应用Contraction property
为了在贝尔曼最优公式中应用contraction mapping theorem,我们首先需要证明贝尔曼公式中的f(v)是一个contraction mapping,其中γ是 discount rate 是小于1的,所以v = f(v)是一个contraction mapping
贝尔曼最优公式的解的最优性
贝尔曼最优公式是一个特殊的贝尔曼公式
假设v是贝尔曼最优公式的解,可以用我们上面介绍的算法求解出来,Π*是对应v*的一个最优策略
证明这个贝尔曼最优公式的策略是不是最优的这个state value v、vΠ*是不是最大的可以使用下面的结论来进行证明
贝尔曼最优公式的性质
什么样的因素决定了最优策略,由下图中红色的变量来决定