Q-Learning和Sarsa一样是基于时序差分的控制算法,那两者有什么区别呢?

这里已经必须引入新的概念

时序差分控制算法的分类:在线和离线

在线控制算法:一直使用一个策略选择动作和更新价值函数,如Sarsa

离线控制算法:两个策略,一个选择新的动作,一个更新价值函数,如Q-Learning

Q-Learning简介

在S下基于ε-贪心策略选择动作A,执行A,获得奖励R,并进入下一个状态S’,

接下来如果是Sarsa,将继续基于ε-贪心策略选择动作A’,利用Q(S',A')更新价值函数,并在下一轮执行A’,这就是在线算法,学到什么就执行什么

但是Q-Learning则不同,它将基于贪心策略选择动作A’,利用Q(S',A')更新价值函数,但是在下一轮并不执行A',而是又基于ε-贪心策略选择动作,这就是离线算法,学到什么不一定执行什么

价值更新方式  Q(S,A)=Q(S,A)+α(R+γmaxaQ(S′,a)−Q(S,A))

对比Sarsa    Q(S,A)=Q(S,A)+α(R+γQ(S′,A′)−Q(S,A))

对比MC     Q(S,A)=Q(S,A)+(1/N)(Gt−Q(S,A))

在选择动作时,选择什么就执行什么,

在更新q值时,sarsa选择什么就执行什么,Q-Learning选择什么不一定执行什么

Q-Learning算法描述

输入:{S A R γ α ε},迭代轮数T

输出:所有的状态和动作对应的价值Q

1. 随机初始化所有的状态和动作对应的价值Q. 对于终止状态其Q值初始化为0.

2. for i from 1 to T,进行迭代。

  a) 初始化S为当前状态序列的第一个状态。

  b) 用 ε-贪婪法 在当前状态S选择动作A

  c) 在状态S执行当前动作A,得到新状态S’和奖励R

  d) 更新价值函数Q(S,A)=Q(S,A)+α(R+γmaxaQ(S′,a)−Q(S,A))

  e) S=S′

  f) 如果S'是终止状态,当前轮迭代完毕,否则跳转到步骤b)

Q-Learning解决Windy GridWorld

for i in range(10000):# 10000 轮while True:maxq0, r0, stat_0, action0 = choose(start)              # e 贪心if stat_0 == end:start = [3, 0]breakmaxq, r, stat_1, action = choose_max(stat_0)            # 贪心q[get_q_x(start), actions.index(action0)] += alpha * (r0 + maxq - q[get_q_x(start), actions.index(action0)])start = stat_0

结果同Sarsa

Sarsa 与 Q-Learning 的比较

Sarsa在学习最优策略的同时还在做探索,而Q-Learning直接学习最优策略

这使得

1. Sarsa在训练时,为了保证收敛,需要设定规则,逐渐减小探索率,Q-Learning则不需要

2. Q-Learning直接学习的最优策略,而最优策略是基于当前数据的,这等于放弃了其他更好的机会,可能收敛于局部最优,Q-Learning的强化版Deep Q-Learning也有这个问题

3. Sarsa属于保守型,Q-Learning属于激进派

  // 好比传销的洗脑,骗子告诉你今天干得好能挣1000块钱,明天干得好能挣5000块钱,但是如果不好好干,可能只有100块,Sarsa听了,觉得干好了才能多挣钱,万一干不好,哎,慢慢来吧,而Q-Learning听了,一算,我今天挣1000,明天5000,发财了,于是立即成为忠实的传销分子,这就是急于求成,容易出错

  // 对应到算法上,就是Sarsa训练的模型比较平滑,而Q-Learning陡峭,可能局部最优

4. 在实际应用中,如果在模拟环境中训练模型,推荐Q-Learning,如果在真实环境中训练模型,推荐Sarsa

总结

Q-Learning和Sarsa一样,很灵活,但是不适合解决大规模问题

转载于:https://www.cnblogs.com/yanshw/p/10416399.html

强化学习8-时序差分控制离线算法Q-Learning相关推荐

  1. 【强化学习笔记】从 “酒鬼回家” 认识Q Learning算法

    1.背景 现在笔者来讲一个利用Q-learning 方法帮助酒鬼回家的一个小例子, 例子的环境是一个一维世界, 在世界的右边是酒鬼的家.这个酒鬼因为喝多了,根本不记得回家的路,只是根据自己的直觉一会向 ...

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

    前言: 学习了 Sutton 的<强化学习(第二版)>第6章时序差分学习的控制部分,将笔记提炼如下. 笔者阅读的是中文书籍,所提到的公式,笔者将给出其在英文书籍上的页码.英文书籍见 Sut ...

  3. TicTacToe: 基于时序差分TD(0)算法的agent实现以及完整python实现框架

    目录 1. 前言 2. TD(0) 3. 实现要点解读 3.1 Class Env 3.2 Class State 3.3 Class Agent 3.3.1 class TD0Agent(Agent ...

  4. 动手强化学习(六):DQN 算法

    动手强化学习(六):DQN 算法 1. 简介 2. CartPole 环境 3. DQN 3.1 经验回放 3.2 目标网络 4. DQN 代码实践 5. 以图像为输入的 DQN 算法 6. 小结 文 ...

  5. 深度学习机器臂控制_基于深度强化学习的机器人手臂控制

    基于深度强化学习的机器人手臂控制 杨淑珍 ; 韩建宇 ; 梁盼 ; 古彭 ; 杨发展 ; 吕萍丽 [期刊名称] <福建电脑> [年 ( 卷 ), 期] 2019(035)001 [摘要] ...

  6. 动手学强化学习(三):动态规划算法 (Dynamic Programming)

    动手学强化学习(三):动态规划算法 (Dynamic Programming) 1. 简介 2. 悬崖漫步环境 3. 策略迭代算法 3.1 策略评估 3.2 策略提升 3.3 策略迭代算法 4.价值迭 ...

  7. 【四】多智能体强化学习(MARL)近年研究概览 {Learning cooperation(协作学习)、Agents modeling agents(智能体建模)}

    相关文章: [一]最新多智能体强化学习方法[总结] [二]最新多智能体强化学习文章如何查阅{顶会:AAAI. ICML } [三]多智能体强化学习(MARL)近年研究概览 {Analysis of e ...

  8. 深度强化学习在时序数据压缩中的应用--ICDE 2020收录论文

    彼节者有间,而刀刃者无厚:以无厚入有间,恢恢乎其于游刃必有余地矣 ----- 庖丁解牛 前言:随着移动互联网.IoT.5G等的应用和普及,一步一步地我们走进了数字经济时代.随之而来的海量数据将是一种客 ...

  9. 首个深度强化学习AI,能控制核聚变,成功登上《Nature》

    编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 最近,DeepMind 开发出了世界上第一个深度强化学习 AI ,可以在模拟环境和真正的核聚变装置中实现对等离子体的自主控制. ...

最新文章

  1. 『科技』2019全球最有前景AI公司TOP100
  2. cvNormalizeHist()函数详解
  3. isql 测试mysql连接_[libco] 协程库学习,测试连接 mysql
  4. 如何用各种编程语言杀死一条龙
  5. php mysql 多行_php-更新MySQL中的多行而没有循环
  6. 不要在变量名的旁边加echo和.br;
  7. [转载] python下求语数总分和平均值_R和python语言如何求平均值,中位数和众数
  8. 基于单片机的水温液位自动控制系统设计
  9. 华为 荣耀 等手机解锁BootLoader
  10. Android多媒体开发框架
  11. python下载和安装教程视频_Maya课时:Python的下载与安装视频教程_翼狐网
  12. 百度搜索开放平台,百度搜索api
  13. Python保留指定位数的小数
  14. window如何彻底卸载软件教程
  15. 2021最新全球CS专业排名发布,CMU再夺榜首,清华和MIT并列第三!
  16. 基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理
  17. VirtualBox Host-Only Ethernet Adapter 误删问题
  18. 盛金公式 C++(求解一元三次方程的求根公式)
  19. 人人都是系统装机高手,利用windows官方的工具,安装超简单
  20. GandCrab v2.0 勒索病毒分析

热门文章

  1. 在总账模块结账的时候提示总账和明细账对账不平结不了账
  2. 西瓜播放器 vue+xgplayer播放mp4/hls视频流。
  3. 【电子学会】2021年06月图形化一级 -- 奔跑的马
  4. 武器装备测试系统ETest
  5. 浏览器怎么显示php文件夹,如何使用浏览器打开php文件?
  6. MicroChip C18编译器上手及环境设置
  7. 一周肝出Linux之远程服务详解(ssh远程登录、scp远程复制、sftp安全下载、TCP Wrappers访问控制)
  8. 曝光,程序员的 10 个摸鱼神器
  9. DA14580软件开发平台参考(一)
  10. 欧洲十大电动摩托车市场-Part one