强化学习的数学原理(七-1)TD(时序差分)算法

蒙特卡洛方法是非迭代式的方法(至少要完成一个episode后再行更新),TD是迭代式的方法(不需要完成一个完整的episode),TD方法是一个大类,里面包含很多变体的算法,所以TD算法可以特指基础的TD算法,也可以指一类算法。

一、引出TD算法

从RM算法解决几个问题推出基础的TD算法


  • 问题1

求解:

w=\mathbb{E}\left [ X \right ]

其中X为随机变量,w为变量。

可以改写成如下形式,这个g的含义就是估计值与期望值的偏差

g\left ( w \right )=w-\mathbb{E}\left [ X \right ]

问题就转变为求解:

g\left ( w \right )=0

g\left ( w \right )可以满足RM算法的三个条件,那就可以采用RM算法求解:

w_{k+1}=w_{k}-\alpha _{k}\widetilde{g}\left ( w_{k},\eta _{k} \right )

\widetilde{g}属于观测值(估计值与期望值的偏差的观测值),那么具体到一个step如何定义这个观测值?

定义为:截止到当前步的估计值-当前步的随机变量值

其在数值上还等于g与误差\eta的和,故:

\widetilde{g}\left ( w,\eta \right )=w-x=\left ( w-\mathbb{E}\left ( X \right ) \right )+\left ( \mathbb{E} \left ( X \right )-x\right )=g\left ( w \right )+\eta

所以,最终该问题的迭代求解形式为:

w_{k+1}=w_{k}-\alpha _{k}\widetilde{g}\left ( w_{k},\eta _{k} \right )=w_{k}-\alpha _{k}\left ( w_{k}- x_{k}\right )


  • 问题2

求解:

w=\mathbb{E}\left [ v\left ( X \right ) \right ]

其中X为随机变量,w为变量,v为函数。

同样可以进行改写:

g\left ( w \right )=w-\mathbb{E}\left [ v\left ( X \right ) \right ]=0

用RM算法求解:

w_{k+1}=w_{k}-\alpha _{k}\widetilde{g}\left ( w_{k} ,\eta _{k}\right )=w_{k}-\alpha _{k}\left ( w_{k}-v\left ( x_{k} \right )\right )


  • 问题3

求解:

w=\mathbb{E}\left [ R+\gamma v\left ( X \right ) \right ]

其中R,X为随机变量,w为变量,v为函数,\gamma为常数。 

进行改写:

g\left ( w \right )=w-\mathbb{E}\left [ R+\gamma v\left ( X \right ) \right ]=0

用RM算法求解:

w_{k+1}=w_{k}-\alpha _{k}\widetilde{g}\left ( w_{k} ,\eta _{k}\right )=w_{k}-\alpha _{k}\left [ w_{k}-\left ( r_{k}+ \gamma v\left ( x_{k} \right )\right )\right ]


从最后一个例子可以看出来,如果进行如下对应:

R代表奖励,X代表状态,\gamma代表折扣因子,w代表s状态的V值

那问题3就变成了求解贝尔曼公式,若g满足三个条件,那么这个贝尔曼公式就可以用RM算法求解,这就引出了基础的TD算法。

二、基础TD算法

基础TD算法是在求解一个给定的policy的V值(求解贝尔曼公式),即policy evaluation。

考虑一个step:上一步迭代完成后的关于状态的V值函数为v_{t};步的初始状态为s_{t};状态转移后的状态为s_{t+1};过程中获取到的奖励为r_{t+1}系数\alpha _{t}我认为是根据状态出现的次数来变化的,但存疑

v_{t+1}\left ( s_{t} \right ) = v_{t}\left ( s_{t} \right )-\alpha _{t}\left ( s_{t} \right )\left [ v_{t}\left ( s_{t} \right )-\left ( r_{t+1} +\gamma v_{t}\left ( s_{t+1} \right )\right ) \right ]

v_{t+1}\left ( s \right )=v_{t}\left ( s \right ),s\neq s_{t}

v想象成一张表格,v_{t+1}\left ( s_{t} \right )就是对v_{t}\left ( s_{t} \right )的新估值,即更新表格。

要明确的是每步TD算法都是对所有的状态进行V值的更新,只不过只有一个状态的V值变化,而其他的保持不变,但也算更新了。这样不断地迭代下去,直到把所有状态的V值迭代出来。

基础TD算法的局限性: 基础的TD算法只能针对一个确定的policy,在model free的情境下,通过收集的数据来估计出每个状态的V值。但它不能估计出Q值,也不能改进policy。

三、Sarsa算法

Sarsa算法把“估计Q值”和“更新policy”这两个步骤结合到了一起,不断进行估计与策略更新,与MC算法由相似之处,但也有区别。

这里有一个问题是Q的表达式与V的表达式好像不一样,直接套用迭代是不是有问题的?那个公式能不能描述不同动作a之间的q值的关系呢?

找出q_{\pi }\left ( s,a \right )q_{\pi }\left ( s',a' \right )的关系:

q_{\pi }\left ( s,a \right )=\displaystyle\sum_{r}p\left ( r|s,a\right )r + \gamma \displaystyle\sum_{s'}p\left ( s'|s,a\right )\displaystyle\sum_{a'}q_{\pi }\left ( s',a' \right )\pi \left ( a'|s' \right )

所以\displaystyle\sum_{s'}p\left ( s'|s,a\right )v_{\pi }\left ( s' \right )计算的并不是

\mathbb{E}\left ( v_{\pi }\left ( s' \right )|s=s \right )

而是

\mathbb{E}\left ( v_{\pi }\left ( s' \right )|s=s,a=a \right )

所以公式有问题,并不符合原始公式,非常怪异,但可以理解为用q_{t}\left ( s_{t+1},a_{t+1} \right )\mathbb{E}\left ( v_{\pi }\left ( s' \right )|s=s,a=a \right )进行近似,以减少计算量。

(1)改进策略依赖的是action_value(Q值)而不是state_value(V值),故Sarsa首先是求解Q:

q_{t+1}\left ( s_{t},a_{t} \right ) = q_{t}\left ( s_{t},a_{t} \right )-\alpha _{t}\left ( s_{t},a_{t} \right )\left [ q_{t}\left ( s_{t} ,a_{t}\right )-\left ( r_{t+1} +\gamma q_{t}\left ( s_{t+1},a_{t+1} \right )\right ) \right ]

q_{t+1}\left ( s,a \right )=q_{t}\left ( s ,a\right ),s\neq s_{t}\,and\,a\neq a_{t} 

(2)求解Q值之后,可以采用epsilon-greedy的方法或其他的方法更新策略:

\pi_{t+1} \left ( a|s_{t} \right )=\begin{cases} 1-\frac{\varepsilon }{\left | A\left ( s_{t}\right ) \right |}\left ( \left | A\left ( s_{t} \right ) \right | -1\right )& \text{ if } a=argmax_{a}\,q_{t+1}\left ( s_{t},a \right ) \\ \frac{\varepsilon }{\left | A\left ( s_{t} \right ) \right |} & \text{ if } a\, is \, others \end{cases}

其中A(s)是状态s下的动作a合集,|A(s)|就是a的数量。

四、Expected Sarsa

Expected Sarsa是Sarsa的一个“改进算法”,但其实它更像是由贝尔曼公式推演过来的原始算法。

q_{t+1}\left ( s_{t},a_{t} \right ) = q_{t}\left ( s_{t},a_{t} \right )-\alpha _{t}\left ( s_{t},a_{t} \right )\left [ q_{t}\left ( s_{t} ,a_{t}\right )-\left ( r_{t+1} +\gamma \mathbb{E}\left [ q_{t}\left ( s_{t+1},A \right ) \right ]\right ) \right ]

\mathbb{E}\left [ q_{t}\left ( s_{t+1},A \right ) \right ]\doteq v_{\pi }\left ( s_{t+1} \right )

对比n-step Sarsa,Expected Sarsa是“横着算”。

五、n-step Sarsa

采用截断的思想,可以将Sarsa与MC算法统一成n-step Sarsa。Sarsa采用一步一迭代的方式改进策略,而n-step Sarsa采用多步一迭代的方式改进策略,MC采用一轮一迭代的方式改进策略。

针对g_{t}(TD target)的估计:

  • Sarsa:

g_{t}=r_{t+1}+q_{t}\left ( s_{t+1},a_{t+1} \right )

  • MC:

g_{t}=r_{t+1}+\gamma r_{t+2}+\gamma ^{2} r_{t+3}+...

  • n-step Sarsa:

g_{t}=r_{t+1}+\gamma r_{t+2}+\gamma ^{2} r_{t+3}+...+\gamma ^{n}q_{t}\left ( s_{t+n}, a_{t+n}\right )

所以n-step Sarsa公式为:

q_{t+1}\left ( s_{t},a_{t} \right ) = q_{t}\left ( s_{t},a_{t} \right )-\alpha _{t}\left ( s_{t},a_{t} \right )\left [ q_{t}\left ( s_{t} ,a_{t}\right )-\left ( r_{t+1}+\gamma r_{t+2}+...+\gamma ^{n}q_{t}\left ( s_{t+n}, a_{t+n}\right )\right ) \right ]

n-step Sarsa的特点或问题:公式虽然摆在那,但是在t时刻的那个步骤中,后续步骤的r我都不知道,就没法在那一步进行更新Q值,必须等必要的数据采完了行。也就是很多步之后才能更新,即其真实应用公式为:

q_{t+n}\left ( s_{t},a_{t} \right ) = q_{t+n-1}\left ( s_{t},a_{t} \right )-\alpha _{t+n-1}\left ( s_{t},a_{t} \right )\left [ q_{t+n}\left ( s_{t} ,a_{t}\right )-\left ( r_{t+1}+\gamma r_{t+2}+...+\gamma ^{n}q_{t+n-1}\left ( s_{t+n}, a_{t+n}\right )\right ) \right ]

 更新Q值之后才能更新policy。推测最后算法的效果很像“滑动窗口”。

六、有关Sarsa算法的小总结

从Sarsa到Expected Sarsa,再到n-step Sarsa,以及MC算法,我们可以看到它们就是在变化公式中TD-target部分的形式,从而演化出不同的算法。

Sarsa系列的算法与MC算法本质上都在求解稍微不同的贝尔曼公式。

后面的Q-learning也是差不多的思路。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值