前言: 学习了 Sutton 的《强化学习(第二版)》第6章时序差分学习的控制部分,将笔记提炼如下。

笔者阅读的是中文书籍,所提到的公式,笔者将给出其在英文书籍上的页码。英文书籍见 Sutton 个人主页:
http://incompleteideas.net/book/the-book.html

本次笔记内容:

  • 6.4 Sarsa:同轨策略下的时序差分控制
  • 6.5 Q 学习:离轨策略下的时序差分控制
  • 6.6 期望 Sarsa
  • 6.7 最大化偏差与双学习
  • 6.8 游戏、后位状态和其他特殊例子
  • 6.9 本章小结

在上一次笔记中,我们讨论了 动态规划( Dynamic Programming, DP )、蒙特卡洛方法( Monte Carlo Method, MC )与时序差分学习( Temporal Difference Learning, TD )的异同,以及时序差分学习中的预测算法。本次笔记中我们讨论其控制部分算法,其概述如下。

  • Sarsa 是同轨策略下的时序差分控制,;
  • Q-learning 是离轨策略下的时序差分控制;
  • 期望 Sarsa 的表现比上述二者表现都更好( van Hasselt, 2011),并且被称为“广义 Q 学习”;
  • 然而,单纯的最大化操作带来了“最大化偏差”,因此我们提出“双学习”来消除“最大化偏差”;
  • 此外,我们还引出了如“后位状态”的概念,没有具体讨论。

书中展示了4段实例, Zhang 都有相应代码进行实现,分别介绍如下知识点:

  • 有风的网格世界(Example 6.5: Windy Gridworld)介绍 Sarsa 的性能;
  • 在悬崖边行走(Example 6.6: Cliff Walking)对比了基于ϵ\epsilonϵ-贪心方法的 Sarsa 与 Q-learning 的控制效果;
  • 接着,在介绍 期望 Sarsa 时也使用了 Cliff Walking 实例对其效果进行展示;
  • 最大化偏差实例(Example 6.7: Maximization Bias Example)用于表达:双 Q 学习优于 Q 学习。

我对其代码进行了标注,请见https://github.com/PiperLiu/Reinforcement-Learning-practice-zh/blob/master/practice/05-02-Temporal-Difference-Control.ipynb。并且,我还由代码及实验结果,复述了我对于书上提出的算法对比特性的理解。

Sarsa

基于同轨策略,其更新公式为:

Q(St,At)←Q(St,At)+α[Rt+1+γQ(St+1,At+1)−Q(St,At)]Q(S_t,A_t) \leftarrow Q(S_t,A_t) + \alpha [ R_{t+1} + \gamma Q( S_{t+1}, A_{t+1} ) - Q_(S_t , A_t ) ]Q(St​,At​)←Q(St​,At​)+α[Rt+1​+γQ(St+1​,At+1​)−Q(​St​,At​)]

可以看出与之前“时序差分预测”中的价值预测公式很像。

如果 St+1S_{t+1}St+1​ 是终止状态,那么Q(St+1,At+1Q( S_{t+1}, A_{t+1}Q(St+1​,At+1​则定义为0。这个公式用到了元组(St,At,Rt+1,St+1,At+1)(S_t,A_t,R_{t+1},S_{t+1},A_{t+1})(St​,At​,Rt+1​,St+1​,At+1​),因此该算法命名为 Sarsa 。

Sarsa 想要以1的概率收敛到最优的策略和动作价值函数,需要满足2个条件:

  1. 所有的“状态-动作”二元组都被无限多次访问到;
  2. 贪心策略在极限情况下能够收敛(收敛过程可以通过令 ϵ=1/t\epsilon = 1/tϵ=1/t 来实现)。

算法框架中,每幕中的每步都要更新 Q ,不具体展示框架了,可见书第6章。

Q-learning

更新公式为:

Q(St,At)←Q(St,At)+α[Rt+1+γmax⁡aQ(St+1,a)−Q(St,At)]Q(S_t,A_t) \leftarrow Q(S_t, A_t) + \alpha [R_{t+1} + \gamma \max_a Q(S_{t+1}, a) - Q(S_t, A_t)]Q(St​,At​)←Q(St​,At​)+α[Rt+1​+γamax​Q(St+1​,a)−Q(St​,At​)]

只是变了个更新公式而已,连算法框图都没变,为什么说 Q-learning 是离轨策略呢?

  • 书上的解释:In this case, the learned action-value function, Q, directly approximates q*, the optimal action-value function, independent of the policy being followed.
  • 我的理解:在公式中用于更新的动作为 arg max⁡aQ(S′,a)\argmax_a Q(S' , a)aargmax​Q(S′,a) ,而下一步却未必是 arg max⁡aQ(S′,a)\argmax_a Q(S' , a)aargmax​Q(S′,a) ,因此为离轨策略。

我的理解方式没有错,并且,这个理解会辅助对于“最大化偏差”部分的学习。

期望 Sarsa

Q(St,At)←Q(St,At)+α[Rt+1+γE[Q(St+1,At+1)∣St+1]−Q(St,At)]←Q(St,At)+α[Rt+1+γ∑aπ(a∣St+1)Q(St+1,a)−Q(St,At)]\begin{aligned} Q(S_t, A_t) & \leftarrow Q(S_t, A_t) + \alpha [R_{t+1} + \gamma \mathbb{E}[ Q(S_{t+1}, A_{t+1}) | S_{t+1}] - Q(S_t, A_t)]\\ & \leftarrow Q(S_t, A_t) + \alpha [R_{t+1} + \gamma \sum_a \pi(a | S_{t+1}) Q(S_{t+1},a) - Q(S_t, A_t)]\\ \end{aligned}Q(St​,At​)​←Q(St​,At​)+α[Rt+1​+γE[Q(St+1​,At+1​)∣St+1​]−Q(St​,At​)]←Q(St​,At​)+α[Rt+1​+γa∑​π(a∣St+1​)Q(St+1​,a)−Q(St​,At​)]​

虽然计算上更为复杂,但它消除了 Sarsa 中因为随机选择 At+1A_{t+1}At+1​ 而带来的方差。并且,对于 cliff walking 中的情况,期望 Sarsa 将保持 Sarsa 相对于 Q-learning 的“能学到迂回策略”的优势。

最大化偏差与双学习

最大化偏差

上述算法中,通常是基于 ϵ−\epsilon-ϵ−贪心 来产生策略的,这其中都用到了“最大化操作”。

但是,如果在估计值的基础上进行最大化操作,就是隐式地对最大值进行估计,而这就会产生一个显著的正偏差。例子如下。

如图的MDP,A为起点,做动作 left ,则0收益;做动作 right ,之后获得的收益服从 正态分布 N(-0.1, 1)。

我们知道最优策略应该是 100% 做动作 left 。

但是,如果使用了最大化操作,动作 right 的估计值是不确定的,有些可能大于0,则估计值的最大值就产生了正数,就产生了正偏差。就是最大化偏差。

双学习

双学习可以消除最大化偏差。双学习使用了2倍的内存,但计算量无需双倍。

以双Q学习为例:

使用 Q1Q1Q1 来估计 A∗=arg max⁡aQ1(a)A^* = \argmax_a Q_1(a)A∗=aargmax​Q1​(a) ,而 Q2Q_2Q2​ 负责估计 Q2(A∗)=Q2(arg max⁡aQ1(a))Q_2(A^*) = Q_2(\argmax_a Q_1 (a))Q2​(A∗)=Q2​(aargmax​Q1​(a)) ,由于 E[Q2(A∗)]=q(A∗)\mathbb{E} [Q_2 (A^*)] = q(A^*)E[Q2​(A∗)]=q(A∗) ,因此这个估计是无偏的。

即更新公式换为:

With0.5probabilility:Q1(St,At)←Q1(St,At)+α[Rt+1+γQ2(St+1,arg max⁡aQ1(St+1,a))−Q1(St,At)]else:Q2(St,At)←Q2(St,At)+α[Rt+1+γQ1(St+1,arg max⁡aQ2(St+1,a))−Q2(St,At)]\begin{aligned} & With \; 0.5 \; probabilility: \\ & \quad Q_1(S_t,A_t) \leftarrow Q_1(S_t, A_t) + \alpha [R_{t+1} + \gamma Q_2(S_{t+1}, \argmax_a Q_1(S_{t+1}, a)) - Q_1(S_t, A_t)] \\ & else: \\ & \quad Q_2(S_t,A_t) \leftarrow Q_2(S_t, A_t) + \alpha [R_{t+1} + \gamma Q_1(S_{t+1}, \argmax_a Q_2(S_{t+1}, a)) - Q_2(S_t, A_t)] \\ \end{aligned}​With0.5probabilility:Q1​(St​,At​)←Q1​(St​,At​)+α[Rt+1​+γQ2​(St+1​,aargmax​Q1​(St+1​,a))−Q1​(St​,At​)]else:Q2​(St​,At​)←Q2​(St​,At​)+α[Rt+1​+γQ1​(St+1​,aargmax​Q2​(St+1​,a))−Q2​(St​,At​)]​

后位状态

后位状态我读了两遍,差不多明白了其意思:类似下棋的游戏中,可以由不同的状态,经过不同的动作,达到同一状态(棋盘摆放位置同),我们叫这个为后位状态。在这种情况中,后位状态显然更为重要。这很有趣,应该找些实例继续了解。

Van Roy, Bertsekas, Lee, Tsitsiklis, 1997; Powell, 2011 对其进行了研究。

《强化学习》中的时序差分控制:Sarsa、Q-learning、期望Sarsa、双Q学习 etc.相关推荐

  1. 强化学习 Sarsa Q-learning:on off policy策略下的时序差分控制

    一.on policy & off policy 所有的学习控制都面临着一个困境,他们希望学到的动作可以使随后的智能体行为是最优的,但为了搜索所有的动作(已找到最优动作),他们需要采取非最优的 ...

  2. 《强化学习》中的 时序差分学习 Temporal-Difference Learning (基于与动态规划 DP 、蒙特卡洛方法 MC 的对比)

    前言: 学习了 Sutton 的<强化学习(第二版)>中时序差分学习的"预测"部分内容.前两章中,书介绍了 动态规划 与 蒙特卡洛方法 ,我们从二者与 时序差分学习 的 ...

  3. 强化学习笔记(3)-时序差分更新算法

    时序差分更新算法和回合更新算法一样都是利用经验数据进行学习,其区别在于时序差分更新不必等到回合结束,可以用现有的价值估计值来更新.因此时序差分更新既可用于回合制任务,也可用于连续性任务. 同策时序差分 ...

  4. 初学者的强化学习q learning和sarsa

    Reinforcement learning is a fast-moving field. Many companies are realizing the potential of RL. Rec ...

  5. 强化学习从基础到进阶-案例与实践[3]:表格型方法:Sarsa、Qlearning;蒙特卡洛策略、时序差分等以及Qlearning项目实战

    [强化学习原理+项目专栏]必看系列:单智能体.多智能体算法原理+项目实战.相关技巧(调参.画图等.趣味项目实现.学术应用项目实现 专栏详细介绍:[强化学习原理+项目专栏]必看系列:单智能体.多智能体算 ...

  6. 强化学习_蒙特卡罗与时序差分(Sarsa/Q-Learning)例子

    前言 代码和视频讲解b站视频: 强化学习第四节(Monte Carlo+TD代码详解) 由于up本身代码是ipynb, 在gitee又不能直接在线浏览,加着我又想加点注释啥的,就把它腾到这里了,源代码 ...

  7. 《强化学习》第6章 时序差分学习

    第6章 时序差分学习 文章目录 第6章 时序差分学习 6.1 时序差分预测 练习 6.1 例6.1 开车回家 练习6.2 6.2 时序差分预测方法的优势 例6.2 随机游走 练习6.3 练习6.4 练 ...

  8. 强化学习读书笔记 - 06~07 - 时序差分学习(Temporal-Difference Learning)

    强化学习读书笔记 - 06~07 - 时序差分学习(Temporal-Difference Learning) 学习笔记: Reinforcement Learning: An Introductio ...

  9. 深度强化学习中利用Q-Learngin和期望Sarsa算法确定机器人最优策略实战(超详细 附源码)

    需要源码和环境搭建请点赞关注收藏后评论区留下QQ~~~ 一.Q-Learning算法 Q-Learning算法中动作值函数Q的更新方向是最优动作值函数q,而与Agent所遵循的行为策略无关,在评估动作 ...

最新文章

  1. python函数定义和其四种参数_python入门第九课:函数的定义及多种参数传递方式...
  2. 论MySQL何时使用索引,何时不使用索引
  3. 让表单文本框只读不可编辑的方法
  4. 转:10个常见的 Android 新手误区
  5. 线程,进程,并发,并行
  6. 微信 语音转文字 java,在微信——怎么将语音转化为文字,你需要学习了
  7. office 2007启动要安装配置?
  8. 演讲(1)----8个有趣故事
  9. python题目练习——jmu-python-分段函数数学函数
  10. OMG,学它!java定时器quartz表达式
  11. 手游封包辅助开发教程
  12. 阿里云产品之数据中台架构
  13. 花两年时间去面试一个人——给准备面试的启发
  14. 懵逼树上懵逼果:探索二分法搜索
  15. C语言学习日记(yzy):socket(TCP)网络连接
  16. android广告页白屏_微信官方朋友圈广告营销技巧
  17. 华为v5服务器安装2012系统,裸金属服务器安装v5
  18. 可以真正带你理清同步阻塞与同步非阻塞与异步阻塞与异步非阻塞的文章
  19. 智能反射面(IRS)在无线通信安全领域应用的论文复现
  20. JavaScript中原生Array数组方法详解

热门文章

  1. buffer pool mysql_理解Mysql中的Buffer pool
  2. Mac 无法运行node命令的解决方法
  3. 关于“Unknown or unsupported command ‘install‘”问题解决的小结
  4. Hive数据倾斜解决方法总结
  5. 使用jQuery在AJAX请求中添加标头
  6. Android:如何使用资源名称从资源中获取字符串?
  7. Objective-C中的typedef枚举是什么?
  8. win11应用商店怎么联网 Windows11应用商店无法联网的解决步骤
  9. 怎么找服务器物理地址吗,服务器怎么知道物理地址是多少
  10. 引号 解析 逗号_笔试积累 | 军队文职公共科目真题解析18