Q-Learning基础

笔记整理自李宏毅老师的公开课

基础知识

在之前的笔记关于Policy Gradient和PPO方法中,需要学习的是某个策略π\piπ。给定出一个策略网络π\piπ,然后令计算机通过不断地训练策略网络,来实现智能。训练的过程中,更新迭代的也是策略网络的参数。

而Q-Learning中,不是直接训练策略网络π​\pi​π​,而是给学习一个Crtic,该Critic用于评估Agent做出的每个选择的评估值。

Q-Learning的核心在于一个Q-Function:Qπ(st,a)Q^{\pi}(s_t,a )Qπ(st​,a)。该函数的意义是,在状态sts_tst​下,如果选择了行动aaa,该函数会得到的返回值,其中π\piπ表示某种策略或者说是Actor。注意,sts_tst​状态下选择行动aaa,是由QQQ函数决定的,此时如果让策略π\piπ来选择行动,则不一定是行动aaa。在选择aaa之后,此时再令π\piπ自己玩下去,知道游戏终结,返回结果作为QQQ的值。

再给出一个评估函数Vπ(s)V^{\pi}(s)Vπ(s),该函数作用是评定某个Actorπ\piπ在状态sss下的分数,分数越高说明对π\piπ越有利。评估的方式一般有两个:

  • Monte-Carlo方式:让π\piπ一直与环境进行互动,每次互动都会有相应的结果,直到最后会有一个结果总和GGG。之后,令Vπ(s)V^{\pi}(s)Vπ(s)与GGG进行比较产生误差,利用误差进行修正VVV的神经网络。但是,这个方法要求必须玩到游戏结束才能进行网络训练,有些时间太长的游戏不太适合这个方式。而且,这个方式的Variance比较大,因为游戏和状态选择本省就有较大的随机性。
  • Temporal-difference方式:在游戏流程⋯ ,st,at,rt,st+1,⋯\cdots,s_t,a_t,r_t,s_{t+1},\cdots⋯,st​,at​,rt​,st+1​,⋯中,有核心公式Vπ(st)=Vπ(st+1)+rtV^{\pi}(s_t)=V^{\pi}(s_{t+1})+r_tVπ(st​)=Vπ(st+1​)+rt​,其中rtr_trt​表示在sts_tst​状态采取行动ata_tat​后得到的回报。那么利用上述公式,可以直接训练评估网络。但是,这个方式的缺点在于VπV^{\pi}Vπ评估不一定是准确的。

实际中,TD方式比较常用。

Qπ(s,a)Q^{\pi}(s,a)Qπ(s,a)网络有两种输入和输出方式:

  • 把状态sss作为输入,输出每个aaa的值。这种方式比较适合离散有限个aaa的情况
  • 把状态sss和采取的aaa作为输入,输出一个标量值,作为sss状态下采取aaa行动的评估值。适合无限连续状态的情景

使用Q-Learning做RL的基本步骤:

  1. π\piπ与环境互动。

  2. 通过MC或者TD的方式,学习出Qπ(s,a)Q^{\pi}(s,a)Qπ(s,a)。

  3. 找到一个更好的π′\pi^{'}π′,并令π=π′\pi=\pi{'}π=π′。之后继续步骤1

补充,更新π′\pi^{'}π′的公式:
π′=argmaxaQπ(s,a)\pi^{'}=\mathop{arg\ max}_a Q^{\pi}(s,a) π′=arg maxa​Qπ(s,a)
有两点需要注意:

  • π′\pi^{'}π′没有提取任何参数,它由QQQ决定
  • 这种方式不适合连续的action

Exploration策略

ϵ−Greedy\epsilon-Greedyϵ−Greedy策略:
action={argmaxaQπ(s,a),1−ϵrandomaction,ϵaction=\begin{cases} \mathop{arg\ max}_a Q^{\pi}(s,a), & 1-\epsilon\\ random\ action, & \epsilon \\ \end{cases} action={arg maxa​Qπ(s,a),random action,​1−ϵϵ​
其中ϵ∈(0,1)\epsilon \in(0,1)ϵ∈(0,1),是一个概率。

Boltzmann Exploration策略:
P(a∣s)=exp⁡(Q(s,a))∑aexp⁡(Q(s,a))P(a|s)=\frac{\exp{(Q(s,a))}}{\sum_a\exp {(Q(s,a))}} P(a∣s)=∑a​exp(Q(s,a))exp(Q(s,a))​
选择策略时,是借助概率进行的。

Replay Buffer策略

每次都把数据存储到一固定buffer中,训练的时候,从buffer中随机选取一个批次进行训练。如果buffer满了,则用新的数据更替就的数据。

Q-Learning一般性的算法

  • 初始化Q-function QQQ ,目标Q-function Q^=Q\hat{Q}=QQ^​=Q
  • 不断进行迭代:
    • 对于一次迭代中的每一步,进行如下操作:

      • 对于一次迭代中的某个状态sts_tst​,根据QQQ选择ata_tat​,这是依赖于Exploration(见下文)策略的选择
      • 获取这一步的奖励rt​r_t​rt​​,并到达下一个状态st+1​s_{t+1}​st+1​​
      • 把(st,at,rt,st+1)(s_t,a_t,r_t,s_{t+1})(st​,at​,rt​,st+1​)存储到一个buffer中(Replay buffer策略见下文)
      • 从buffer中,选取一个批次的(si,ai,ri,si+1)(s_i,a_i,r_i,s_{i+1})(si​,ai​,ri​,si+1​)
      • 目标函数y=ri+maxaQ^(si+1,a)​y=r_i+\mathop{max}_a \hat{Q}(s_{i+1},a)​y=ri​+maxa​Q^​(si+1​,a)​
      • 更新QQQ的参数,使得Q(si,ai)Q(s_i,a_i)Q(si​,ai​)接近yyy
      • 每进行CCC步,更新Q^=Q\hat {Q}=QQ^​=Q

Q-Learning训练的常用技巧

Double Q-Learning Network

实际的游戏中,一般Q-Value都是被高估了。Double DQN就是为了尽量减少这种情况。DDQN的方法是有两个函数QQQ与Q′Q^{'}Q′:
Q(st,at)=rt+Q′(st+1,argmaxaQ(st+1,a))Q(s_t,a_t)=r_t+Q^{'}\left(s_{t+1},\mathop{arg\ max}_aQ(s_t+1,a)\right) Q(st​,at​)=rt​+Q′(st+1​,arg maxa​Q(st​+1,a))
实际操作中,会有两个Q-Network,一个是选择行动的QQQ网络,另一个是Target Network Q′Q^{'}Q′。其中QQQ是需要更新参数的网络。

Noisy Network

在每一次与环境开始互动的时候,对神经网络添加噪声。之后用这个神经网络与环境互动,并更新参数,一直反复进行。

强化学习的数学基础3---Q-Learning相关推荐

  1. 强化学习入门 : 一文入门强化学习 (Sarsa、Q learning、Monte-carlo learning、Deep-Q-Network等)

    最近博主在看强化学习的资料,找到这两个觉得特别适合入门,一个是"一文入门深度学习",一个是"莫烦PYTHON". 建议:看资料的时候可以多种资料一起参考,一边调 ...

  2. [强化学习实战]出租车调度-Q learning SARSA

    出租车调度-Q learning & SARSA 案例分析 实验环境使用 同策时序差分学习调度 异策时序差分调度 资格迹学习调度 结论 代码链接 案例分析 本节考虑Gym库里出租车调度问题(T ...

  3. 强化学习的数学基础2---PPO算法

    强化学习的数学基础2-PPO系列算法 这篇笔记来自于李宏毅老师的公开课 PPO算法全称是Proximal Policy Optimization算法.该类算法是为了解决Policy Gradient算 ...

  4. 强化学习 最前沿之Hierarchical reinforcement learning(一)

    强化学习-最前沿系列 深度强化学习作为当前发展最快的方向,可以说是百家争鸣的时代.针对特定问题,针对特定环境的文章也层出不穷.对于这么多的文章和方向,如果能撇一隅,往往也能够带来较多的启发. 本系列文 ...

  5. 【论文笔记】分层强化学习鼻祖:Feudal Reinforcement Learning 1993

    1993年的分层强化学习:Feudal Reinforcement Learning 概括 1992年没有深度学习,人们研究RL的思路与现在并不相同.但不可否认,提出"分层强化学习" ...

  6. 【强化学习】双深度Q网络(DDQN)求解倒立摆问题 + Pytorch代码实战

    文章目录 一.倒立摆问题介绍 二.双深度Q网络简介 三.详细资料 四.Python代码实战 4.1 运行前配置 4.2 主要代码 4.3 运行结果展示 4.4 关于可视化的设置 一.倒立摆问题介绍 A ...

  7. 分层强化学习综述:Hierarchical reinforcement learning: A comprehensive survey

    论文名称:Hierarchical reinforcement learning: A comprehensive survey 论文发表期刊:ACM Computing Surveys 期刊影响因子 ...

  8. 深度强化学习-基于价值的强化学习-TD算法和Q学习(三)

    本文主要介绍TD算法和Q学习算法 目录 TD算法: Q学习算法: 同策略,异策略: TD算法: 即时间差分 (Temporal Difference):此处用举例子方法来帮助大家理解 1.假设我从天津 ...

  9. 强化学习笔记(4)-深度Q学习

    以下为学习<强化学习:原理与python实现>这本书的笔记. 在之前学习到的强度学习方法中,每次更新价值函数只更新某个状态动作对的价值估计.但是有些情况下状态动作对的数量非常大,不可能对所 ...

  10. 深度强化学习之模仿学习(Imitation Learning)

      上一部分研究的是奖励稀疏的情况,本节的问题在于如果连奖励都没有应该怎么办,没有奖励的原因是,一方面在某些任务中很难定量的评价动作的好坏,如自动驾驶,撞死人和撞死动物的奖励肯定不同,但分别为多少却并 ...

最新文章

  1. DataGrid中实现输入数量和金额自动计算出总金额
  2. Springboot直接访问templates中的html
  3. 【转载】关于防火墙的初次接触
  4. python marshal 对象序列化和反序列化
  5. 副业宝典~副业思维让你拥有更多钱
  6. 元宇宙与虚拟现实(一)
  7. 泰坦尼克号生存率预测
  8. Total和Tellurian签署意向性协议,对Driftwood项目和2.5 mtpa LNG进行股权投资;就增加对Tellurian投资签署普通股购买协议
  9. 存档:全球各国名称中英文对照表
  10. 21点扑克游戏的出牌策略的研究
  11. requests爬取豆瓣前250部高分电影
  12. iPhone4隐藏功能分享
  13. 4月21日V反再次来临?
  14. cool edit工具介绍及使用
  15. 鞍山市2021中高考成绩查询,2021年鞍山高中学校排名及录取分数线排名
  16. React-Native搭建Android平台(ZUCC智能终端与移动应用开发lab1)
  17. 数据泄露事件频发,数据安全迫在眉睫
  18. vscode报错ERROR in node_modules/@types/node/ts3.5/globals.global.d.ts:1:13 - error TS2403: Subsequent
  19. 其他信息: 未找到源,不过,未能搜索部分或所有事件日志。 若要创建源,您需要用于读取所有事件日志的权限以确保新的源名称是唯一的。 不可访问的日志: Security。...
  20. linux centos 下载 百度云,CentOS 7 (Linux) 下载百度网盘大文件

热门文章

  1. Java实验3 方法与数组
  2. algorithm头文件下的sort()
  3. 目标检测——YOLOv5的学习笔记
  4. 【干货】TCP/IP协议三次握手四次挥手
  5. python 中__init__ 与 __call__ 的区别
  6. 两个凸多边形的公共面积
  7. codeM 2018 资格赛
  8. 多目标跟踪数据集 :mot16、mot17数据集介绍
  9. AcWing 789. 数的范围 (整数二分)
  10. 第k小的数(二分、partition)