强化学习算法之表格型方法
本文最后更新于:2024年3月29日 上午
免模型预测方法
蒙特卡洛策略评估
蒙特卡洛方法是基于采样的方法,给定策略
蒙特卡洛方法使用经验平均回报(empirical mean return)的方法来估计,它不需要马尔可夫决策过程的状态转移函数和奖励函数,并且不需要像动态规划那样用自举(根据其他估算值来更新估算值的思想称为自举)的方法。蒙特卡洛方法有一定的局限性,它只能用在有终止的马尔可夫决策过程中。
增量式蒙特卡洛方法:
动态规划方法:
蒙特卡洛方法相比动态规划方法是有一些优势的。首先,蒙特卡洛方法适用于环境未知的情况,而动态规划是有模型的方法。 蒙特卡洛方法只需要更新一条轨迹的状态,而动态规划方法需要更新所有的状态。状态数量很多的时候(比如100万个、200万个),我们使用动态规划方法进行迭代,速度是非常慢的。这也是基于采样的蒙特卡洛方法相对于动态规划方法的优势。
时序差分
时序差分可以参考巴甫洛夫的条件反射实验:小狗会对盆里面的食物无条件产生刺激,分泌唾液。一开始小狗对于铃声这种中性刺激是没有反应的,可是我们把铃声和食物结合起来,每次先给它响一下铃,再给它喂食物,多次重复之后,当铃声响起的时候,小狗也会开始流口水。盆里的肉可以认为是强化学习里面那个延迟的奖励,声音的刺激可以认为是有奖励的那个状态之前的状态。多次重复实验之后,最后的奖励会强化小狗对于声音的条件反射,它会让小狗知道这个声音代表着有食物,这个声音对于小狗也就有了价值,它听到这个声音就会流口水。
当中性刺激(铃声)与无条件刺激(食物)相邻反复出现的时候,中性刺激也可以引起无条件刺激引起的唾液分泌,然后形成条件刺激。 我们称这种中性刺激与无条件刺激在时间上面的结合为强化,强化的次数越多,条件反射就会越巩固。小狗本来不觉得铃声有价值的,经过强化之后,小狗就会慢慢地意识到铃声也是有价值的,它可能带来食物。更重要的是当一种条件反射巩固之后,我们再用另外一种新的刺激和条件反射相结合,还可以形成第二级条件反射,同样地还可以形成第三级条件反射。
时序差分是介于蒙特卡洛和动态规划之间的方法,它是免模型的,不需要马尔可夫决策过程的转移矩阵和奖励函数。 此外,时序差分方法可以从不完整的回合中学习,并且结合了自举的思想。
时序差分方法的目的是对于某个给定的策略
最简单的算法是一步时序差分(one-step TD),即 TD(0)
。每往前走一步,就做一步自举,用得到的估计回报(estimated return)
估计回报
- 我们走了某一步后得到的实际奖励
; - 我们利用了自举的方法,通过之前的估计来估计
,并且加了折扣因子,即 。
时序差分目标是估计,有两个原因:
- 时序差分方法对期望值进行采样;
- 时序差分方法使用当前估计的
而不是真实的 。
时序差分误差(TD error)
上式体现了强化的概念。
我们对比一下蒙特卡洛方法和时序差分方法。在蒙特卡洛方法里面,
接下来,进一步比较时序差分方法和蒙特卡洛方法。
- 时序差分方法可以在线学习(online learning),每走一步就可以更新,效率高。蒙特卡洛方法必须等游戏结束时才可以学习。
- 时序差分方法可以从不完整序列上进行学习。蒙特卡洛方法只能从完整的序列上进行学习。
- 时序差分方法可以在连续的环境下(没有终止)进行学习。蒙特卡洛方法只能在有终止的情况下学习。
- 时序差分方法利用了马尔可夫性质,在马尔可夫环境下有更高的学习效率。蒙特卡洛方法没有假设环境具有马尔可夫性质,利用采样的价值来估计某个状态的价值,在不是马尔可夫的环境下更加有效。
例如,我们想获得开车去公司的时间,每天上班开车的经历就是一次采样。假设我们今天在路口 A 遇到了堵车, 时序差分方法会在路口 A 就开始更新预计到达路口 B、路口 C ⋯⋯⋯⋯,以及到达公司的时间; 而蒙特卡洛方法并不会立即更新时间,而是在到达公司后,再更新到达每个路口和公司的时间。 时序差分方法能够在知道结果之前就开始学习,相比蒙特卡洛方法,其更快速、灵活。
我们可以把时序差分方法进行进一步的推广。之前是只往前走一步,即TD(0)。 我们可以调整步数(step),变成
如果
得到时序差分目标之后,我们用增量式学习(incremental learning)的方法来更新状态的价值:
自举是指更新时使用了估计。蒙特卡洛方法没有使用自举,因为它根据实际的回报进行更新。 动态规划方法和时序差分方法使用了自举。
免模型控制方法
Sarsa:同策略时序差分控制
时序差分方法是给定一个策略,然后我们去估计它的价值函数。接着我们要考虑怎么使用时序差分方法的框架来估计Q函数,也就是 Sarsa 算法。
Sarsa 所做出的改变很简单,它将原本时序差分方法更新
上式是指我们可以用下一步的
如图 3.28 所示,我们先把
Q学习:异策略时序差分控制
Sarsa 是一种同策略(on-policy)算法,它优化的是它实际执行的策略,它直接用下一步会执行的动作去优化 Q 表格。同策略在学习的过程中,只存在一种策略,它用一种策略去做动作的选取,也用一种策略去做优化。所以 Sarsa 知道它下一步的动作有可能会跑到悬崖那边去,它就会在优化自己的策略的时候,尽可能离悬崖远一点。这样子就会保证,它下一步哪怕是有随机动作,它也还是在安全区域内。
Q学习是一种异策略(off-policy)算法。异策略在学习的过程中,有两种不同的策略:目标策略(target policy)和行为策略(behavior policy)。
目标策略是我们需要去学习的策略,一般用
行为策略是探索环境的策略,一般用
Q学习是异策略的时序差分学习方法,Sarsa 是同策略的时序差分学习方法。
Sarsa 在更新 Q 表格的时候,它用到的是
但是 Q学习 在更新 Q 表格的时候,它用到的是 Q 值
ps:Sarsa 在计算时使用下一步实际执行的动作,而Q学习在计算时使用最优策略,即目前按照目前Q函数计算出最优价值的动作,但是实际执行的动作和Sarsa一样,使用
同策略和异策略的区别:
- Sarsa 是一个典型的同策略算法,它只用了一个策略
,它不仅使用策略 学习,还使用策略 与环境交互产生经验。如果策略采用 -贪心算法,它需要兼顾探索,为了兼顾探索和利用,它训练的时候会显得有点“胆小”。它在解决悬崖行走问题的时候,会尽可能地远离悬崖边,确保哪怕自己不小心探索了一点儿,也还是在安全区域内。此外,因为采用的是 -贪心 算法,策略会不断改变( 值会不断变小),所以策略不稳定。 - Q学习是一个典型的异策略算法,它有两种策略————目标策略和行为策略,它分离了目标策略与行为策略。Q学习可以大胆地用行为策略探索得到的经验轨迹来优化目标策略,从而更有可能探索到最佳策略。行为策略可以采用
-贪心 算法,但目标策略采用的是贪心算法,它直接根据行为策略采集到的数据来采用最佳策略,所以 Q学习 不需要兼顾探索。
本文参考:第三章 表格型方法 (datawhalechina.github.io)
Github地址:MyShare/DRL/Q-table at master · TyroGzl/MyShare (github.com)
也可关注公众号【G的科研生活】,回复【DRL】获取源码