当前位置: 首页 > news >正文

【强化学习的数学原理】第07课-时序差分方法-笔记

学习资料:bilibili 西湖大学赵世钰老师的【强化学习的数学原理】课程。链接:强化学习的数学原理 西湖大学 赵世钰

文章目录

  • 一、例子
  • 二、TD算法介绍
  • 三、TD算法收敛性、与MC的比较
  • 四、Sarsa
  • 五、Expected Sarsa 和 n-step Sarsa
  • 六、Q-learning介绍、 on-policy vs off-policy
  • 七、Q-learning 伪代码与例子
  • 八、TD算法的统一形式和总结


一、例子

例1:
考虑 mean estimation 问题:已知一个随机变量X,求其期望。目前已有的数据是X的一些采样x。这里用RM算法来求解。求解过程见下图,或者回顾上节课内容。
在这里插入图片描述
例2:
该问题比上面那个问题复杂一些,求解的不再是随机变量 X X X 的均值,而是函数 v ( X ) v(X) v(X) 的均值。但求解思路还是差不多。实际上能测量到的是 v ( x ) v(x) v(x),这是对 v ( X ) v(X) v(X) 的采样。
在这里插入图片描述
例3:
该问题比上面那个问题再复杂一些,目标函数中有2个随机变量,且包含了一个函数 v v v。先在在求期望的时候,既需要X的采样x,也需要R的采样r。这个表达式已经和时序差分算法非常相似了。
在这里插入图片描述

二、TD算法介绍

下图呈现了TD算法。
TD算法在求解一个给定策略 π \pi π 的 state value,它是一种不基于模型、基于数据的方法。
TD算法就是要基于给定策略 π \pi π 下,在生成的数据 ( s 0 , r 1 , s 1 , . . . , s t , r t + 1 , s t + 1 , . . . ) (s_0,r_1,s_1,...,s_t,r_{t+1},s_{t+1},...) (s0,r1,s1,...,st,rt+1,st+1,...)的基础上计算state value。
v t ( s ) v_t(s) vt(s) 表示状态 s 在 t 时刻的 state value 估计值。 s t s_t st 表示在 t 时刻所访问到的状态。
下图中的(1)式将会在后面介绍。
下图中的(2)式表示,在t时刻访问了状态 s t s_t st,其他状态没有被访问到,那么这些没有被访问到的状态,其 v 值是不变的。
在这里插入图片描述
继续分析上图中TD算法中的(1)式,即:下图中的(3)式。new estimate = old estimate + 修正项。修正项中的 α t \alpha_t αt 是系数,TD target v ‾ t = r t + 1 + γ v ( s t + 1 ) \overline{v}_t = r_{t+1} + \gamma v(s_{t+1}) vt=rt+1+γv(st+1),设置 TD target 实际上是希望 v t ( s t ) v_t(s_t) vt(st) 可以朝着这个方向去靠近。 TD error 表示当前的 value v t ( s t ) v_t(s_t) vt(st) 和 target v ‾ t = r t + 1 + γ v ( s t + 1 ) \overline{v}_t = r_{t+1} + \gamma v(s_{t+1}) vt=rt+1+γv(st+1) 之间的误差。
在这里插入图片描述
下面来详细介绍一下 TD target 和 TD error。
(1)为什么 v ‾ t \overline{v}_t vt 被称作 TD target?
因为要把 v ( s t ) v(s_t) v(st) 朝着 v ‾ t \overline{v}_t vt 这个方向去改进。
那么改进后的 v t + 1 ( s t ) v_{t+1}(s_t) vt+1(st) 一定比 v t ( s t ) v_t(s_t) vt(st) 更接近 v ‾ t \overline{v}_t vt 吗?
看下图的推导过程,把式子推导成如下图1式所示的结果。因为 1 − α t ( s t ) 1-\alpha_t(s_t) 1αt(st)的值在(0,1)之间,所以可以得到如下图2式所示的结果。所以说, v t + 1 ( s t ) v_{t+1}(s_t) vt+1(st)肯定是更接近 v ‾ t \overline{v}_t vt的。
在这里插入图片描述
(2)如何理解TD error: δ t = v t ( s t ) − [ r t + 1 + γ v t ( s t + 1 ) ] \delta_t= v_t(s_t)-[r_{t+1}+\gamma v_t(s_{t+1})] δt=vt(st)[rt+1+γvt(st+1)]
TD error包含两个量: v t ( s t ) v_t(s_t) vt(st) [ r t + 1 + γ v t ( s t + 1 ) ] [r_{t+1}+\gamma v_t(s_{t+1})] [rt+1+γvt(st+1)]。并且这两个量是在两个时刻上:t时刻和t+1时刻(所以该方法被称为temproal difference learning)。
实际上,TD error不仅描述了这两个量之间的误差,更描述了 v π v_\pi vπ v t v_t vt之间的误差。 v π v_\pi vπ是我们要估计的值, v t v_t vt是我们当前估计的值。
又定义了一个 δ π , t \delta_{\pi,t} δπ,t(如下图所示)。对 δ π , t \delta_{\pi,t} δπ,t求期望(如下图所示)。
所以,当 v π v_\pi vπ等于 v t v_t vt的时候, δ t \delta_t δt应该等于0;若 δ t \delta_t δt不等于0,则说明 v π v_\pi vπ不等于 v t v_t vt δ t \delta_t δt可以描述 v t ( s t ) v_t(s_t) vt(st) [ r t + 1 + γ v t ( s t + 1 ) ] [r_{t+1}+\gamma v_t(s_{t+1})] [rt+1+γvt(st+1)]之间的不一致性。
在这里插入图片描述
TD的其他性质:TD算法只是在给定策略的情况下,用来估算state value的。不能估计action value,也不能用来搜索最优策略。不过,下面介绍的一些基于TD的方法能够估计action value,并且和policy improvement的这一步骤相结合。
在这里插入图片描述

三、TD算法收敛性、与MC的比较

在数学上,TD算法实际上在求解一个给定策略 π \pi π的贝尔曼公式。与前面提到的贝尔曼公式求解方法(闭式解、迭代的方法)的不同点在于,TD算法是在没有模型的情况下来求解贝尔曼公式。

1.贝尔曼公式的一种新的表达形式
下图公式4给出了state value的定义(immediate reward + γ \gamma γ*return的期望),其中G表示return。 E [ G ∣ S = s ] E[G|S=s] E[GS=s]也可以写成 E [ v π ( S ′ ) ∣ S = s ] E[v_{\pi}(S')|S=s] E[vπ(S)S=s],也就是说return可以写成下一个状态S’的 v π ( S ) v_{\pi}(S) vπ(S)。因此,公式4就可以推导成公式5的样子。公式5是贝尔曼公式的另一种表达形式。
在这里插入图片描述
2. 用RM算法求解公式5中的贝尔曼公式
首先定义下式 g ( v ( s ) ) g(v(s)) g(v(s)),令 g ( v ( s ) ) = 0 g(v(s))=0 g(v(s))=0,就是要求解 v ( s ) − E [ R + γ v π ( S ′ ) ∣ s ] = 0 v(s)-E[R+\gamma v_{\pi}(S')|s]=0 v(s)E[R+γvπ(S)s]=0,即求 v ( s ) = E [ R + γ v π ( S ′ ) ∣ s ] v(s)=E[R+\gamma v_{\pi}(S')|s] v(s)=E[R+γvπ(S)s]。实际上这个式子的解就是上图中的 v π ( s ) v_{\pi}(s) vπ(s)
通过一系列的采样来求解这个式子。对 R R R的采样为 r r r,对 S ′ S' S的采样为 s ′ s' s。把要求解的式子转换为下图中“ g ( v ( s ) ) g(v(s)) g(v(s))+误差”的形式。
在这里插入图片描述
把刚刚推导出的式子代入到TM算法中,得到下图中的公式6。可以观察出,这个形式其实和TD算法很像了。但存在两个不同点:(1)在公式6中需要反复地得到r和s’的采样,需要不断地从s出发,得到r,跳到s’,(2)在公式6中,要知道 v π ( s k ′ ) v_{\pi}(s^{'}_k) vπ(sk)的值才能计算,但这个值是不知道的
在这里插入图片描述
这两个问题的解决方法如下:
(1)不再反复对r和s’进行采样,即不断地从s出发,得到r,跳到s’,再从s出发,得到r,跳到s’…而是在得到一个trajectory的基础上,如果这个trajectory恰巧访问到了s,就去更新一下s。如果没有访问到s,那么这个s的估计值就保持不动。
(2)不用 v π ( s k ′ ) v_{\pi}(s^{'}_k) vπ(sk)的值计算,而是用它的一个估计值 v k ( s k ′ ) v_{k}(s^{'}_k) vk(sk)来替代。
在这里插入图片描述
TD算法收敛性的严格证明详见赵老师的书。

TD算法与MC算法的比较
两个方法的优势和劣势如下图所示。
TD算法是online(在线)的,即,如果现在得到一个reward,跳到下一个状态,就可以立刻用这些信息来更新当前的一些值。但是MC是offline(离线)的,也就是说,需要等到一个episode都被采集完之后,才能计算从当前s到最后的return是多少, 然后用这个return来作为一个估计值。
所以TD算法适合处理continuing task(task不会停止,会一直持续下去/或者task是一个非常长的任务),MC算法只能处理episodic task,即必须等task停止之后,才能使用MC算法。
在这里插入图片描述
TD是bootstrapping的,就是说一开始对某一状态的state value已经有了一个初始的猜测,基于这个初始的猜测,再加上一些新的信息,可以得到一个新的猜测。而MC不是bootstrapping的,是直接根据当前的episode来计算出return。
TD估计的variance/方差比较小,因为在算法中涉及到的随机变量比较少。但MC的varience比较大,因为涉及到很多随机变量。
但是TD的mean/expectation是有bias的,因为TD是bootstrapping,它依赖于初始的估计,如果出事估计不太准确的话,会造成bias。
在这里插入图片描述

四、Sarsa

TD算法是根据给定策略估计state value的,而Sarsa算法是根据给定策略估计action value的。Sarsa计算action value的过程实际上就是一个policy evaluation的过程,随后再结合policy improvement找到最优策略。

1.根据给定策略估计action value
Sarsa算法的具体计算方式如下图所示。其中, q t ( s , a ) q_t(s,a) qt(s,a) q π ( s , a ) q_{\pi}(s,a) qπ(s,a)在t时刻的估计值。这个计算和经典的TD算法几乎是一致的,只是把 v t ( s t ) v_{t}(s_{t}) vt(st)替换成 q t ( s t , a t ) q_t(s_{t},a_{t}) qt(st,at)了。下图中红色的第二个式子是指,如果当前时刻是 s t s_t st a t a_t at,就去更新它的q,对于其他的状态s和动作a则不更新。
在这里插入图片描述
为什么这个算法被称作Sarsa? 其实就是state-action-reward-state-action的缩写
在这里插入图片描述
Sarsa和TD算法的区别是什么? Sarsa是action value版的TD算法。
在这里插入图片描述
Sarsa在数学上做了什么? 实际上也是求解了如下图所示的一个贝尔曼公式,不过这个贝尔曼公式刻画了action value之间的关系。
在这里插入图片描述
2.为了计算出最优策略,需要把Sarsa和policy improvement相结合
结合后的算法伪代码如下图所示。根据当前的状态 s t s_t st,根据当前策略选择动作 a t a_t at,得到奖励 r t + 1 r_{t+1} rt+1,跳转到状态 s t + 1 s_{t+1} st+1,再根据当前策略选择动作 a t + 1 a_{t+1} at+1。这就得到了Sarsa所需的experience。然后在这个experience的基础上计算action value(update q-value),也就是policy evaluation。然后做policy update,这个update的方法是基于 ϵ − g r e e d y \epsilon -greedy ϵgreedy的策略。
在这里插入图片描述
注意:
(1)在计算出状态 s t s_t st对应的 q ( s t , a t ) q(s_t,a_t) q(st,at)后,就立马更新状态 s t s_t st的策略。
(2)基于 ϵ − g r e e d y \epsilon -greedy ϵgreedy的策略是为了在exploitation和exploration之间达到一个平衡。

五、Expected Sarsa 和 n-step Sarsa

1. Expected Sarsa
下图是Expected Sarsa的计算方法。它和Sarsa的区别在于公式的最后一部分 E [ q t ( s t + 1 , A ) ] E[q_t(s_{t+1},A)] E[qt(st+1,A)],这是对a求了一个expectation。,如下图表达式所示,那这个值就是对应着在 s t + 1 s_{t+1} st+1的一个state value v t ( s t + 1 ) v_t(s_{t+1}) vt(st+1),而不再是action value。
相比于Sarsa 而言,Expected Sarsa的计算量更大,因为要算期望了,但是也减少了变量个数,不再需要 a t + 1 a_{t+1} at+1,所以其随机性也会减少。
在这里插入图片描述

Expected Sarsa在解决什么样的数学问题呢?
它也是在求解一个贝尔曼公式,如下图所示。
在这里插入图片描述
2. n-step Sarsa
n-step Sarsa 包含了Sarsa 和 Monte Carlo两个方法。
先复习一下 q π ( s , a ) q_{\pi}(s,a) qπ(s,a),它等于从状态s出发,选择状态a,所得到return的期望。这个return G t G_t Gt实际上有很多写法,可以按照下图的方式无限展开。当n=1时,这个方法就是Sarsa,当n=无穷大时,这个方法就是MC,当n=n时,这个方法就是n-step Sarsa。
在这里插入图片描述
如下图所示,当n=1的时候,把 G t ( 1 ) G^{(1)}_t Gt(1)代入到 q π ( s , a ) q_{\pi}(s,a) qπ(s,a)中,就会发现这个式子其实就是sarsa所求解的贝尔曼公式。当n=无穷的时候,代入可得,这就是MC所求解的式子。
n-step Sarsa的计算方法如下图所示。和 Sarsa 以及 Expected Sarsa 的不同之处就在公式最后TD target那个地方。
在这里插入图片描述
n-step Sarsa需要的数据如下:
在这里插入图片描述
这些数据比较多,因此所面临的问题就是,在t时刻是不知道t+n时刻的一些值的,因此需要等待。TD是online的,MC是offline的,而n-step Sarsa既不是online又不是offline的。
在这里插入图片描述n-step Sarsa的性质也是MC和TD的混合。当n比较大的时候,n-step Sarsa的性质接近于MC,当n比较小的时候,n-step Sarsa的性质接近于TD。
n-step Sarsa也是在做policy evaluation,需要将其和policy improvement相结合来搜索最优策略。

六、Q-learning介绍、 on-policy vs off-policy

Q-learning是RL算法中使用最广泛的方法。之前讲到的Sarsa是在给定策略的基础上,计算action value,随后结合policy improvement的思路,寻找最优策略。但Q-learning可以直接估计optimal action value,并找到optimal policy(因此就不需要结合policy improvement了)。

下图直接给出了Q-learning的算法,这个算法的形式和Sarsa几乎一样,不同的地方在TD target那个部分: r t + 1 + γ m a x a ∈ A q t ( s t + 1 , a ) r_{t+1}+\gamma \mathop{max}\limits_{a∈\Alpha} q_t(s_{t+1},a) rt+1+γaAmaxqt(st+1,a)
在这里插入图片描述
Q-learning在数学上解决什么问题呢? Sarsa是在求解一个贝尔曼方程,而Q-learning是在求解一个贝尔曼最优方程。
在这里插入图片描述
on-policy learning 和 off-policy learning
强化学习中,存在两个策略,一个是behavior策略,该策略是和环境交互,生成experience;另一个是target策略,该策略是不断更新,向最优策略发展。
在这里插入图片描述

如果behavior策略和target策略是相同的,那么这种学习就被称作on-policy。也就是说,用这个策略和环境进行交互,然后改进策略,得到新的策略,再用新的策略和环境进行交互,如此循环往复。(智能体边探索边改进策略)
如果是不同的,那这种学习就被称作off-policy。比如说,用策略和环境交互,得到很多experience samples,然后用这个经验不断改进策略,最终这个策略收敛到一个最优的策略。(智能体可以在使用一种策略探索的同时优化另一种策略)

PS: 其实这里老师的解释我没太懂,不过可以结合下一节“Q-learning 伪代码与例子”中的内容去理解off policy和on policy。
在这里插入图片描述
off-policy的好处是,可以直接拿来别人的经验进行学习,
在这里插入图片描述
如何判断一个强化学习算法是on-policy还是off-policy? (如下图所示)
在这里插入图片描述
下面是三个例子。
Sarsa是on policy。
如果 ( s t , a t ) (s_t,a_t) (st,at)都给定了,那么 r t + 1 r_{t+1} rt+1 s t + 1 s_{t+1} st+1都是不依赖于任何策略的, r t + 1 r_{t+1} rt+1 p ( r t + 1 ∣ s t , a t ) p(r_{t+1}|s_t,a_t) p(rt+1st,at)决定, s t + 1 s_{t+1} st+1 p ( s t + 1 ∣ s t , a t ) p(s_{t+1}|s_t,a_t) p(st+1st,at)决定。但 a t + 1 a_{t+1} at+1依赖于策略 π t ( s t + 1 ) \pi_t(s_{t+1}) πt(st+1) a t + 1 a_{t+1} at+1是在t+1状态下,根据策略 π t ( s t + 1 ) \pi_t(s_{t+1}) πt(st+1)采样得到action a t + 1 a_{t+1} at+1。这就是Sarsa的behaviour policy,因为需要用到它进行采样。target policy是在估计 π t ( s t + 1 ) \pi_t(s_{t+1}) πt(st+1)所对应的action value,再用action value进行policy improvement从而得到更好的策略。(如下图所画的三角形所示)所以, π t \pi_t πt既是一个behaviour policy又是一个target policy。是一个on-policy的策略。
在这里插入图片描述
MC的分析方法和上面差不多。在此不多赘述。
在这里插入图片描述
Q-learning是off-policy。
如果 ( s t , a t ) (s_t,a_t) (st,at)都给定了,那么 r t + 1 r_{t+1} rt+1 s t + 1 s_{t+1} st+1都是不依赖于任何策略的, r t + 1 r_{t+1} rt+1 p ( r t + 1 ∣ s t , a t ) p(r_{t+1}|s_t,a_t) p(rt+1st,at)决定, s t + 1 s_{t+1} st+1 p ( s t + 1 ∣ s t , a t ) p(s_{t+1}|s_t,a_t) p(st+1st,at)决定。Q-learning中的behavior policy是从 s t s_{t} st出发,根据策略得到 a t a_{t} at。target policy是看哪个 q ( s , a ) q(s,a) q(s,a)比较大,就选哪个a。所以,behaviour policy和target policy是不同的。

在这里插入图片描述

七、Q-learning 伪代码与例子

Q-learning的伪代码(on-policy version):
on-policy的伪代码和Sarsa很像,主要的区别就是在Update q-value中的TD target那一部分。
在on-policy version中,首先基于策略生成数据experience,然后通过这些数据去计算q-value,通过计算好的q-value更新策略,再基于更新后的策略生成数据…所以,这个策略既是用来生成数据的(是behaviour policy),又不断得被更新(是target policy),所以这版伪代码是on-policy version。
在这里插入图片描述
Q-learning的伪代码(off-policy version):
首先假设一个策略是 π b \pi_b πb,用这个策略来生成一系列的数据experience:{ s 0 , a 0 , r 1 , s 1 , a 1 , r 2 , . . . s_0, a_0, r_1, s_1, a_1, r_2,... s0,a0,r1,s1,a1,r2,...},然后根据这些已有的experience来寻找最优的策略。下面针对t的每一个时刻做update q-value和update target policy。在这里,update q-value的过程和on-policy中的一样。update target policy的过程和on-policy中的有所差别,on-policy中用的是 ϵ − g r e e d y \epsilon -greedy ϵgreedy算法,而off-policy中用的是 g r e e d y greedy greedy算法。使用 ϵ − g r e e d y \epsilon -greedy ϵgreedy算法的目的是为了让后续采样的结果更具探索性,而off-policy中是不用更新后的策略 π T \pi_T πT采样的,而是用 π b \pi_b πb采样,因此无需策略 π T \pi_T πT具有探索性,就不需要用 ϵ − g r e e d y \epsilon -greedy ϵgreedy算法了。渐渐地,随着q的估计越来越准确, π \pi π也会逐渐收敛到最优的策略。这里有两个策略 π T \pi_T πT π b \pi_b πb,所以这是off policy的情况。
在这里插入图片描述
例子:网格世界,找到每一个状态所对应的最优策略。
在这里插入图片描述
首先是用behaviour policy来生成一些数据experience,一共有5个action,每个action给1/5=0.2的概率,因此这个behaviour的探索性是比较强的。下图的episode进行了100万步。然后用off-policy Q-learning来对数据进行计算。算出来的结果如下图所示。这个结果和ground truth几乎是一模一样的。
在这里插入图片描述
假设behaviour policy的探索性没有那么强(如下图所示,有些状态没有被探索到),那么最后计算的结果离最优策略的差距还是挺大的。
在这里插入图片描述
在这里插入图片描述

八、TD算法的统一形式和总结

所有的TD算法都可以用下图中的统一形式表示。不同的TD算法,它们的不同点就在 q ‾ t \overline{q}_t qt上。
在这里插入图片描述
并且这些TD算法所做的事情就是在求解贝尔曼公式/贝尔曼最优公式。
在这里插入图片描述

相关文章:

  • 【Linux内核】进程管理(上)
  • DOS命令 setx 用法
  • MyBatis进阶
  • Spring的BeanFactory和FactoryBean有 什么不同
  • 基于矢量轨道角动量波的透射超表面设计
  • 基于deepseek api和openweather 天气API实现Function Calling技术讲解
  • pandas(11 分类数据和数据可视化)
  • 腿足机器人之八- 腿足机器人动力学
  • linux--关于linux文件IO(2) open、read、lseek、stat
  • matlab功率谱反演法
  • B. Longest Divisors Interval
  • Linux 基于共享内存的循环队列实现
  • 深度学习02 神经网络实现手写数字案例
  • 成熟开发者需具备的能力
  • GDB 调试入门教程
  • Python中数学问题1--lcm、gcd
  • SpringBoot整合easy-es
  • AIP-145 范围
  • el与data的2种写法
  • 图像生成GAN和风格迁移
  • 外企聊营商|武田制药:知识产权保护助创新药研发
  • 中国人民银行等四部门联合召开科技金融工作交流推进会
  • 腾讯一季度净利增14%:AI直接拉动广告收入增长,王者荣耀流水创新高
  • 中央军委决定调整组建3所军队院校
  • “女硕士失踪13年生两孩”案进入审查起诉阶段,哥哥:妹妹精神状态好转
  • 市场监管总局等五部门约谈外卖平台企业