强化学习笔记:MDPs、MC、TD

目录

1、强化学习的特点

2、如何计算价值函数(动态规划、蒙特卡洛、时序差分)

动作价值函数的计算公式

蒙特卡洛法、时序差分

3、蒙特卡洛法与时序差分的区别

4、on-policy与off-policy的区别 

5、Q-learning 

6、SARSA

7、sarsa(0)、sarsa(1)、sarsa(lambda) 的比较

8、SARSA 与Q-learning的区别


1、强化学习的特点

1.没有监督标签。只会对当前状态进行奖惩和打分,其本身并不知道什么样的动作才是最好的。

2. 评价有延迟。往往需要过一段时间,已经走了很多步后才知道当时选择是好是坏。有时候需要牺牲一部分当前利益以最优化未来奖励。

3. 时间顺序性。每次行为都不是独立的数据,每一步都会影响下一步。目标也是如何优化一系列的动作序列以得到更好的结果。即应用场景往往是连续决策问题。

4. 与在线学习相比,强化学习方法可以是在线学习思想的一种实现,但是在线学习的数据流一定是增加的,而强化学习的数据可以做减少(先收集,更新时按丢掉差数据的方向)。而且在线学习对于获得的数据是用完就丢,强化学习是存起来一起作为既往的经验。

2、如何计算价值函数(动态规划、蒙特卡洛、时序差分)

动作价值函数的计算公式

蒙特卡洛法、时序差分

强化学习笔记:MDPs、MC、TD_第1张图片

3、蒙特卡洛法与时序差分的区别

强化学习笔记:MDPs、MC、TD_第2张图片

强化学习笔记:MDPs、MC、TD_第3张图片

强化学习笔记:MDPs、MC、TD_第4张图片

4、on-policy与off-policy的区别 

首先就判断on-policy和off-policy就在于估计时所用的策略更新时所用的策略是否为同一个策略。比如Sarsa选了什么动作来估计Q值就一定会用什么动作来更新state,一定会执行该动作(会有贪婪率);而Q-Learning则不然,估Q值是一回事,但执行动作时一定是会选max,即使用了两套策略,属于off-policy。

而之所以要叫on或off是因为,off-policy基本上都是要基于replay memory,即估计出的动作值肯定是最优的,但在生成策略的时候,却选择了价值最大的综合memory的max Q 的action。而on-policy每次都是选择最优的action。

5、Q-learning 

采用时序差分法的强化学习可以分为两类,一类是在线控制(On-policy Learning),即一直使用一个策略来更新价值函数和选择新的动作,代表就是Sarsa。而另一类是离线控制(Off-policy Learning),会使用两个控制策略,一个策略用于选择新的动作,另一个策略用于更新价值函数,代表就是Q-Learning。

强化学习笔记:MDPs、MC、TD_第5张图片

 

6、SARSA

Sarsa的思想和Q-Learning类似。如上图从上到下,先基于当前状态S,使用ϵ−贪婪法按一定概率选择动作A,然后得到奖励R,并更新进入新状态S′,基于状态S′,使用ϵ−贪婪法选择A′(即在线选择,仍然使用同样的ϵ−贪婪)。

SARSA 伪代码

强化学习笔记:MDPs、MC、TD_第6张图片

同样建立一个Q Table来保存状态s和将会采取的所有动作a,Q(s,a)。在每个回合中,先随机初始化第一个状态,再对回合中的每一步都先从Q Table中使用ϵ−贪婪基于当前状态 s (如果Q表没有该状态就创建s-a的行,且初始为全0)选择动作 a,执行a,然后得到新的状态s’和当前奖励r,同时再使用ϵ贪婪得到在s’时的a’直接利用a’更新表中Q(s,a)的值,继续循环到终点。

相比之下,Q-Learning是贪婪的,在更新Q时会先不执行动作只更新,然后再每次都会选max的动作,而sarsa选了什么动作来更新Q就一定执行相应的动作。这就使它不贪心一昧求最大,而是会稍稍专注不走坑,所以sarsa相对来说十分的胆小,掉进坑里面下次争取会避免它(而Q不管,每次都直接向着最小的反向学习。)不管因为Sarsa太害怕坑,而容易陷入一个小角落出不来。

7、sarsa(0)、sarsa(1)、sarsa(lambda) 的比较

强化学习笔记:MDPs、MC、TD_第7张图片

1.单步更新在每一步都做更新,但是在获得奖励前走的所有步数被认为与获取奖励无关,没有得到更新。这样的更新效率低下。不过只是对获得奖励的前一步做更新,也使得越是靠近奖励的地方越是能得到较好的更新。

2.回合更新在一个回合结束时才做更新,他考虑了从起点到获得奖励的每一步,对每一步做了更新,但是从起点到终点的每一步被认为是权重一样的,这是不合理的。

3.和之前我们提到过的 奖励衰减值 gamma 一样, lambda 是脚步衰减值, 都是一个在 0 和 1 之间的数。离宝藏越近的脚印越重要, 越需要被好好的更新。

sarsa(lambda)伪代码,如图所示:

强化学习笔记:MDPs、MC、TD_第8张图片

8、SARSA 与Q-learning的区别

强化学习笔记:MDPs、MC、TD_第9张图片

参考资料:

周博磊老师的课件链接:https://github.com/zhoubolei/introRL

斯坦福cs234课件:http://web.stanford.edu/class/cs234/index.html

 

 

你可能感兴趣的:(强化学习,python,强化学习,算法)