为了理清强化学习中最经典、最基础的算法——Q-learning,根据ADEPT的学习规律(Analogy / Diagram / Example / Plain / Technical Definition),本文努力用直观理解、数学方法、图形表达、简单例子和文字解释来展现其精髓之处。区别于众多Q-learning讲解中的伪代码流程图,本文将提供可视化的算法流程图帮助大家学习、对比Q-learning与Sarsa。

( 在此假设大家已了解TD Method, ε-greedy policy,off-policy 和 on-policy相关知识。想了解的童鞋也可在本文最后Reference或链接中学习)

一、直观理解

任何强化学习的问题都需要兼顾探索(Exploration)和利用(Exploitation),因此TD方法也对应有两种经典的衍生算法:Q-learning(off-policy)和Sarsa(on-policy)。基于off-policy思想的Q-learning,与Monte Carlo 方法中off-policy的灵魂思路是一致的,除了更新价值的步数不一样之外。在此引用笔者之前回答中关于off-policy的一个比喻。

古时候,优秀的皇帝都秉持着“水能载舟 亦能覆舟”的思想,希望能多了解民间百姓的生活。皇帝可以选择通过微服出巡,亲自下凡了解百姓生活(On-policy),虽然眼见为实,但毕竟皇帝本人分身乏术,掌握情况不全;因此也可以派多个官员去了解情况,而皇帝本人则躺在酒池肉林里收听百官情报即可(Off-policy)。 (坏皇帝则派出“锦衣卫”_(´ཀ`」 ∠)_)

不清楚off-policy的同学可以点击以下传送门:

https://www.zhihu.com/question/57159315/answer/465865135

二、算法流程

本文首先放出两张一目了然的流程图: Q-learning和Sarsa,为了可以直接于可视化流程图的比较之中领悟这两种方法的思路和差别。

1. Sarsa

(已了解Sarsa的同学也不要轻易跳过,或者对比过后,你会有新的发现)

1.1) 一个回合(Episode)开始,随机选择(初始化)第一个状态。并基于 ε-greedy策略在状态中选择动作,有两种情况,一是有  的概率直接选择具有最大值Q的动作,二是有 ε 概率随机选择  下的任意动作(在第二种情况下每个动作的概率均为  ,其中  为 下的动作总个数)。

1.2) 进入第一次循环(Repeat 1 / Step 1):执行 之后(与环境互动),观察下一个状态 ,并马上得到 的即时回报 。此时,再次基于 ε-greedy策略,在状态中选择动作。得到  后,即可进行Q函数的更新(Update),更新中的  为ε-greedy策略下所随机选取的动作,这是与Q-learning的不同之处!(下标 k 或 i 表示最近一次更新的Q值,是一个迭代序数而非时间步(step)序数,在此可先忽略。)

1.3) 不断循环第二步,直到终止状态。

2. Q-learning

2.1) 一个回合(Episode)开始,随机选择(初始化)第一个状态

2.2) 进入第一次循环(Repeat 1 / Step 1):首先基于 ε-greedy策略在状态中选择动作。选择并执行 之后(与环境互动),观察下一个状态 ,并马上得到  的即时回报 。此时,立即进行Q函数的更新(Update),更新中的  为我们人为直接选择 下所有动作中具有最大Q值的动作,这就是与Saras根本区别!

2.3) 更新完毕后,进入第二次循环:基于 ε-greedy策略,在状态中选择动作与环境互动(此前在状态时候并未采取动作与环境互动)。值得注意的是,我们在循环1中更新(Update)时所选取 的动作 是唯一的(人为强制选择),即最具有最大价值Q的动作 ;而循环2中作为需要与环境互动的第二次动作  则是基于ε-greedy策略(即在此时究竟选取  对应的动作 还是其他动作完全根据是随机选择,听天由命吧 0.0 )!因此,基于ε-greedy策略,与环境互动、做学习训练时做动作选择的决策(在off-policy中这被称为行为策略)与Sarsa是一致的。

3. 细节

不少学童鞋对这两幅伪码图中的动作符号存疑:为什么动作的表示有时候为大写的A,有时候为小写的a?

(引用R. S. Sutton与A.G. Barto于2018年1月1日发布的《Reinforcement learning: An introduction》第二版)

Pseudo code of Sarsa

Pseudo code of Q-learning

大写的A表示集合,比如 则表示 下的所有动作,而  则表示具体的一个动作,它们之间的关系为:。回到流程图中,可以发现出现a都在Q-learning的update公式中,这是因为我们在更新时,人为指定选择具有最大值Q的a,这是具有确定性的事件(Deterministic)。而在Q-learning中与环境互动的环节、在Sarsa中更新Q值的环节与环境互动的环节时,动作的选择是随机的( ε-greedy),因此所有动作都有可能被选中,只不过是具有最大值Q的动作被选中的概率大。

此时我们可以清楚知道Sutton书中的伪代码的全部含义啦^_^!

三、Q-learning如何实现更加有效的探索?

清楚整个流程之后,我们来具体看看,Q-learning到底是怎么实现有意义的探索,如何在环境中发掘出更有价值的动作?(即一个当前估值(evaluate)不高但潜力巨大的动作的逆袭之路)

第一个简单的栗子

在这个例子中,我们将更新黄色状态的动作价值

假设已知黄色状态下只有两个动作可选:灰动作和黑动作。而蓝色、绿色状态下最大价值动作均为红动作,其他动作暂不列出(因为在Q-learning中更新时,人为强制选择下一状态中最大价值的动作,因此同一状态下的其他动作在更新环节没有任何体现)。

在某个回合(episode)中,在时间步为n的时候(time step = n),所处状态为黄色。并且在第k-1次更新 时,(  通过即时奖励获取,不纳入更新迭代次数k),已知灰动作价值比黑动作大,即有

所以基于 ε-greedy策略选择动作,会出现情况①或②:

①有  的可能性选择当前最大价值Q的灰动作

而另一黑动作没有更新,即  。

其中, S_n=yellow 、  。

②有 ε /2 的可能性选择当前较小价值Q的黑动作 a_n':

而另一灰动作没有更新,即

其中, S_n=yellow 、  。

无论发生情况①或是②,黄色状态下的灰动作与黑动作的价值的大小关系都可能发生变化!!我们通过取最大值(即greedy思想)来更新目标策略 \pi (target policy), :

比如,当出现情况②的时候,即探索(explore)了黑动作,更新后有 ,则此时黄色状态下的黑动作变为最优动作(颠覆了灰色动作有最大Q值的地位)。

四、另一个栗子

在此举一个非常直观的例子来帮助我们认识一下Q-learning和Sarsa的实际应用效果的区别。

在下面栅格化的小世界中,绿色区域为草地,在上面每移动一格子就会扣1分,而踏入黑色区域的悬崖(chasm),会扣一百分,并且回到起始点S (Start)。我们希望能学习到一条得分最高的路径到达终点T (Terminal)。分别使用Sarsa和Q-learning进行学习。结果如图所示,红色为相应算法的最优路径。

Sarsa v.s Q-learning

可以看到,Q-learning寻找到一条全局最优的路径,因为虽然Q-learning的行为策略(behavior)是基于 ε-greedy策略,但其目标策略(target policy)只考虑最优行为;而Sarsa只能找到一条次优路径,这条路径在直观上更加安全,这是因为Sarsa(其目标策略和行为策略为同一策略)考虑了所有动作的可能性( ε-greedy),当靠近悬崖时,由于会有一定概率选择往悬崖走一步,从而使得这些悬崖边路的价值更低。

五、总结

Q-learning虽然具有学习到全局最优的能力,但是其收敛慢;而Sarsa虽然学习效果不如Q-learning,但是其收敛快,直观简单。因此,对于不同的问题,我们需要有所斟酌。

Reference

  1. Watkins C J C H, Dayan P. Technical Note: Q-Learning[J]. Machine Learning, 8(3-4):279-292, 1992.

  2. R. S. Sutton and A. G. Barto. Reinforcement learning: An introduction. IEEE Transactions on Neural Networks, 9(5):1054–1054, 2018.

声明:本图文未经作者允许,谢绝转载。

囧Bourne:强化学习中on-policy 与off-policy有什么区别?

Bourne强化学习笔记2:彻底搞清楚什么是Q-learning与Sarsa相关推荐

  1. 强化学习4——无模型控制model-free control (On-Policy learning:Sarsa和Off-policy learning:Q-learning)

    文章目录 前言 无模型控制 问题 思路 方法 On-Policy learning MC Sarsa Off-policy learning Q-learning On-Policy learning ...

  2. python嵩天课堂笔记_[Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周)

    [Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) [Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) 目录 强化学习 定义 马尔科夫决策过程 基本元素 值函数 最优值 ...

  3. 142页ICML会议强化学习笔记整理,值得细读

    作者 | David Abel 编辑 | DeepRL 来源 | 深度强化学习实验室(ID: Deep-RL) ICML 是 International Conference on Machine L ...

  4. 强化学习笔记 DDPG (Deep Deterministic Policy Gradient)

    1 总述 总体来讲,和actor-critic 差不多,只不过这里用了target network 和experience relay 强化学习笔记 experience replay 经验回放_UQ ...

  5. 强化学习笔记:Q_learning (Q-table)示例举例

    1 示例介绍 在右侧有宝藏,探险者到达宝藏所在的位置,就可以获得奖励 比如某一时刻的状态是这个样子的:"-o---T" T 就是宝藏的位置, o 是探索者的位置 如果在某个地点 s ...

  6. 强化学习笔记:Actor-critic

    0 复习 由于actor-critic 是 policy gradient 和DQN的一个结合,所以我们先对这两个进行一个简单的复习: 0.1 policy gradient 强化学习笔记:Polic ...

  7. 强化学习笔记:PPO 【近端策略优化(Proximal Policy Optimization)】

    1 前言 我们回顾一下policy network: 强化学习笔记:Policy-based Approach_UQI-LIUWJ的博客-CSDN博客 它先去跟环境互动,搜集很多的 路径τ.根据它搜集 ...

  8. 强化学习笔记:Sarsa算法

    1 Sarsa(0) Sarsa算法和TD类似,只不过TD是更新状态的奖励函数V,这里是更新Q函数强化学习笔记:Q-learning :temporal difference 方法_UQI-LIUWJ ...

  9. 强化学习笔记: generalized policy iteration with MC

    强化学习笔记: MDP - Policy iteration_UQI-LIUWJ的博客-CSDN博客 强化学习笔记:Q-learning_UQI-LIUWJ的博客-CSDN博客 在policy ite ...

最新文章

  1. android的UI开发工程师指引
  2. python 利用matplotlib中imshow()函数绘图
  3. Codeforces Round #374 (Div. 2) A , B , C 水,水,拓扑dp
  4. SharePoint 2010 产品六大功能模块
  5. 使用BeetleX.ESDoc构建文档搜索功能
  6. mysql 关联查询_mysql数据库调优(二)
  7. 开源内容管理系统 php mysql_十大免费PHP+MySql平台内容管理系统推荐
  8. 【Qt开发】Qt让线程休息一段时间
  9. 第四章(数组) 编程题 1
  10. 通过FreeMarker生成word文档
  11. Python爬虫开发【第1篇】【正则表达式】
  12. 企业级业务架构设计理论与方法
  13. uint32 转 float 示例
  14. 手把手教你使用SPSS做出亚组分析的交互作用效应(p for Interaction)
  15. 51单片机之系统指令
  16. Solr Server服务器端安装配置
  17. 【iOS】应用跳转到系统应用
  18. 今天,王坚正式把“杭州城市大脑”作为礼物献给世界...
  19. R语言查看对象的结构:class函数、mode函数、str函数、names函数
  20. 案例分享 | 某券商利用AI技术进行告警关联分析(上)

热门文章

  1. Microsoft Graph Toolkit mgt-get的魅力
  2. Electron那些事05:保护源码asar
  3. 推荐系统-基于用户的协同过滤(User-based CF)
  4. Easy-题目46:205. Isomorphic Strings
  5. 三星w系列vip服务器,【三星W2013评测】系统功能强大+VIP专项服务-中关村在线
  6. Python详细知识体系总结(2021年2月8日)学Python的一定要看
  7. NODE.JS怎么给手机发短信对接验证码短信接口DEMO示例
  8. 微信置顶文案怎么制作?
  9. Windows下获取当前时间函数汇总
  10. 功能实现思路、逻辑思路、功能、逻辑