顺序以周博磊老师强化学习纲要课程为主,增加王树森老师强化学习基础的知识补充,和蘑菇书的知识补充,作为学习记录

第五章:策略优化基础

主要内容:

  1. 基于策略优化的强化学习
  2. 常见策略优化算法:Policy Gradient
  3. 存在问题及解决办法
  4. Actor-critic

一、基于策略函数的强化学习

  1. 回顾

    1. 基于价值函数的RL:

      1. 得到Q函数,对Q函数进行优化,获得Q值极大的动作

      2. 实际上,更重要的是策略,基于价值函数的最终目的也是获得使价值函数最高的策略,属于隐式的学习策略函数
    2. 对比:
      1. 基于价值函数的RL

        1. 学习价值函数
        2. 通过价值函数隐式学习策略
      2. 基于策略函数的RL
        1. 不学习价值函数(即不关注某个状态的价值)
        2. 直接学习策略函数
      3. Actor-Critic 既学习价值函数又学习策略

  2. 基于策略函数的优化
    1. 优势:

      1. 强化学习中基于策略函数进行优化会使得优化更容易
      2. 无论数据多少都可以得到一个策略函数,数据越多效果越好(而在价值函数中,为了完成对Qtable的估计,是需要有很多数据的)
      3. 策略梯度方法在高维空间更有效(相对于高维动作空间,value只有单值,过于稀疏,而policy是向量)
      4. 策略梯度方法输出是概率(随机策略)(stochastic policy)(概率的优势会在之后提到)
    2. 缺点:
      1. 经常得到局部最优解,而不是全局最优解(因为建模时用的不是最优函数)
      2. 方差较大,导致结果不够稳定
    3. 分类:
      1. Determinstic policy:输出是一个确定的行为

      2. Stochastic policy:输出是各个行为的概率,执行时通过概率对行为进行采样

      3. 在某些场景中确定策略更容易输,随机策略才是最佳策略(优势之一)​​​​​​​

    4. 优化方法
      1. 优化策略实际优化的客观函数:π_θ(s,a)
      2. 如何衡量策略π_θ的价值?
        1. 在可结束回合中:取得开始的价值

        2. 在连续环境中
          1. 使用平均价值:

          2. 每一步获得的平均奖励

          3. 其中d是指当马尔可夫链到达稳态后,每个状态出现的概率
        3. 从轨迹τ的角度来说(MC采样方法)
          1. 策略价值为:

          2. 此时,基于策略函数的RL的目的就是找到最优θ(实现极大化奖励)

          3. 即,基于策略函数的RL的重点在于优化参数θ使其可以最大化函数J(θ)
          4. 最大化实现方法:
            1. 函数可微:梯度上升(gradient ascend)
            2. 函数不可微,或微分难以得到: 一些无需微分的黑箱优化方法
              1. Cross-entropy method(CEM)
              2. Hill climbing
              3. Evolution algorithm
      3. Cross-Entropy Method
        1. 是一种进化策略方法,核心是参数优化的过程
        2. 是一种基于参数扰动的搜索算法,给参数合理扰动(变体),在扰动中搜索和选择较好的集合,利用交叉熵指导更新v,使扰动方向越趋近于目标优化方向
        3. 是免梯度方法,从进化角度解决优化问题

          1. 采样,存在关于参数θ的分布,采样后得到多组θ
          2. 该分布可由初始化得到
          3. 6.对每个θ使其与环境交互,存储结果
          4. 8.极大似然优化更新参数,排序后取前10%对应的参数
          5. 迭代对选取参数进行优化
          6. 有时候CEM方法比可以微分优化的效果都好(在有些环境中)
          7. 周老师给出的代码:https://github.com/cuhkrlcourse/RLexample/blob/master/my_learning_agent.py
      4. Finite Difference
        1. 无法计算梯度,利用一种近似方法求梯度

        2. 在每个维度增加一个很小的随机扰动,用来近似梯度,用近似梯度进行优化
        3. 该方法效率较低且存在噪声,但对任何policy都是有效的
        4. 其他查询到的知识:有限差分法FDM
          1. 用数值解逼近微分方程真实解的方法
          2. 将求解区域离散为差分网格
          3. 以有限个网格结点代替连续的求解域
          4. 用网格上的差商代替格点上的空间导数
          5. 整理后变为差分代替微分
      5. 可微分:策略梯度方法
        1. 计算梯度:
        2. 似然函数:(对概率取log)

        3. 得到score function:
        4. 策略函数形式:
          1. Softmax policy
          2. Gaussian policy
        5. 术语:
          1. MLE:最大似然估计
          2. LL:log likelihood 对数似然函数
          3. 通过MLE估计参数通常会采用LL作为目标函数,
            1. 如max_θlogp(x;θ)    记L(θ)=logp(x;θ)
          4. 求解最优的最直接方法就是令其对参数的导数为0,
            1. 即dL(θ)/dθ=0
            2. 此时dL(θ)/dθ就是score function (目标函数求对数似然的一阶导数)
        6. Softmax policy

          1. 基于目前已知的动作的平均奖赏对探索和利用进行折中
          2. 每个动作平均奖赏相当,则被选概率也相当
          3. 若某个动作平均奖赏明显高于其他动作,被选取概率也更高
          4. τ趋近于0时算法趋于仅利用;趋于无穷大时算法趋于仅探索
          5. Q(i)记录当前动作完成后的平均奖赏
        7. Gaussian policy
          1. 对连续动作空间,动作选择是高斯分布函数,是很好的选择
          2. 对状态特征量进行加和、
          3. 方差可以参数化也可以是固定的
          4. 取策略时对连续空间进行采样
          5. 得到对应的score function

二:常见策略优化算法:Policy Gradient

  1. 策略优化经典算法:Policy Gradient

    1. 对于只走一步的MDP

      1. 采样起始状态s
      2. 一步后得到奖励r=R(s,a)
      3. 得到客观函数:

      4. 求梯度:

    2. 对于多步MDP(策略函数会与环境进行交互,实际上会产生一个轨迹)
      1. 首先,经过一次回合后可以得到轨迹τ
      2. 由此可以表示出某个轨迹τ发生的概率

      3. 接下来表示轨迹τ的奖励
        1. 仅完成单次回合:

        2. 事实上,我们会采样多次回合,我们要调整参数θ使奖励R(τ)越大越好,R(τ)是随机变量,计算它的期望值

        3. 推导过程:
          1. 此时,我们的目的是:
          2. 因为希望奖励越大越好,所以使用梯度上升来更新参数,用来最大化奖励
          3. 该式子等同于期望值:(好处就是log连乘变连加)
          4. 使用采样估计期望值:(一般期望算不出来常用MC)
          5. 此时对轨迹概率进行拆分:(log连乘变连加)(无用量求导后消去)
          6. 所以梯度式进一步改变为:
          7. 书上的表达式为:
          8. 此时就得到了score function
          9. 利用score function对参数进行更新 
          10. 一般策略梯度采样数据只用一次,利用数据更新参数后,丢掉数据,接着重新采样再去更新参数
  2. 对比(分类问题和强化学习)(estimator)

    1. 解决分类问题时,目标函数就是需要极大化或极小化的对象;
    2. 强化学习和分类问题的唯一不同是在损失前面乘以权重,即整场游戏的总奖励(而不是单步奖励)(加权后的极大似然估计,尽量采样到可以达到更高奖励里去)

三、存在问题及解决方法

  1. 存在问题:此时的policy gradient 是基于MC采样方法得到的,事实上该方法虽然无偏,但会导致噪声较大,方差较大

    1. 当前公式:

  2. 解决方法:如何降低方差使其更稳定
    1. 利用时序上的因果关系,去掉不必要的项
    2. 包含一个baseline,减小R的方差
  3. 方法一:时序因果关系
    1. 原函数:
    2. 此时,对于在状态s_t下发生的所有动作a_t来说,它们乘以的权重都是第t次游戏的所有奖励
    3. 这种加权方式很明显存在问题,执行该动作之前得到的奖励不是该动作的贡献
    4. 根据折扣回报的思想,我们可以进一步优化梯度:
    5. 原梯度:
    6. 时序因果性:t’的策略不会影响t’之前的奖励
  4. REINFORCE算法
    1. 基于MC policy gradient的算法
    2. 回合更新方式,先获得每个步骤的奖励,再计算每个步骤的未来总奖励G
    3. 利用G对参数θ进行更新
    4. 由于:
    5. 代码计算中,实际是从后往前推,先算T时刻G,一直算到G1
  5. 方法二:使用Baseline
    1. 原函数:
    2. 当所有动作奖励均为正时,某动作未采样到导致其概率下降(相对下降)
    3. 引入baseline函数,使奖励有正有负:(b的要求在于与动作a无关)
    4. 这样做即使未采样到,正向动作也不会概率下降
    5. 一种baseline函数是我们所期望结果,对于本章就是对实际得到一系列奖励的平均值(因为期望不好算所以变成了MC采样进行计算)
    6. 通过推导可知
      1. 引入baseline不会改变policy gradient的值(因为减b的部分恒等于0)
      2. 不会改变期望但会使方差更小(为什么),从而使梯度更稳定,即强化学习训练也更稳定
    7. baseline同时可以用参数w进行拟合,优化过程中同时优化参数θ和w
    8. 优势函数:G-b

四、引入Critic (Actor-critic)

  1. 对Gt的替代

    1. 即得到Actor-Critic算法
    2. 书中,将优势函数即记为,用网络估计A
    3. 该网路称为评论员critic
  2. Actor-Critic算法(将value function和policy function结合)
    1. 对critic: 功能:进行策略评估,当前策略可能获得价值
    2. 估计critic参数w的方法(重用策略评估方法)
      1. MC策略评估
      2. TD learning
      3. Least-squares 策略评估
      4. 这些就是基于价值函数的强化学习方法
  3. QAC方法
  4. AC函数拟合
    1. 方法一:对策略函数和价值函数分别拟合
    2. 方法二:将两个拟合函数组合起来,分享特征提取部分
    3. 通过baseline减少AC的方差
  5. policy gradient的应用
    1. 克服不可微分的计算成分
    2. policy gradient本身是基于MC采样的算法,用采样的方法替代不可微分的方法
  6. 两种流派
    1. 基于价值函数的RL

      1. 使用动态规划和bootstraping等方法对价值函数进行优化
      2. 通过Q函数获取最佳策略,更关注价值函数的估计
      3. Deep Q-learning
    2. 基于策略函数的RL
      1. 基于策略优化,机器学习与深度学习等
    3. 最终都靠近Actor-Critic方法
    4. 具体取决于自身的应用方面

强化学习基础知识梳理(5)相关推荐

  1. 强化学习基础知识梳理(4)

    顺序以周博磊老师强化学习纲要课程为主,增加王树森老师强化学习基础的知识补充,和蘑菇书的知识补充,作为学习记录 第四章:价值函数近似 主要内容包括: 价值函数近似基本原理介绍(Value Functio ...

  2. 1120_野火RT-Thread教程学习4_RTT学习基础知识梳理

    野火RT-Thread教程学习笔记4_RTT学习基础知识梳理 Grey 全部学习汇总:GitHub - GreyZhang/g_RT-Thread: learning and hacking RT-T ...

  3. 深度强化学习基础知识 思维导图

    学习了王树森老师的深度强化学习入门课件,将各个算法整理在如下思维导图中. 深度强化学习基础知识 思维导图

  4. 领导1v1谈话_让谈话强化学习基础知识1

    领导1v1谈话 Update: Part 2 is published! Let's Talk Reinforcement Learning - The Fundamentals - Part 2 更 ...

  5. 强化学习基础知识笔记[6] - DQN

    参考资料 [1] 深度强化学习系列 第一讲 DQN 本文主要是对该资料学习的笔记,并且加入了一些自己的想法,如有错误欢迎指出. DQN 算法引入 DQN算法在Q-Learning算法上改进而来,具体改 ...

  6. 深度学习基础知识(八):神经网络基础之导数

    这个专栏主要是想和大家分享一下深度学习的基础知识,主要是以吴恩达老师深度学习课程内容作为基础,并补充了很多其他内容希望让整体内容更加容易理解和系统化.如果想要了解具体专栏里面有什么内容的话,可以看一看 ...

  7. 论文浅尝-综述 | 基于强化学习的知识图谱综述

    转载公众号 | 人工智能前沿讲习 论文来源:https://crad.ict.ac.cn/CN/10.7544/issn1000-1239.20211264 摘要:知识图谱是一种用图结构建模事物及事物 ...

  8. python语法基础知识总结-Python基础知识梳理 - 第01部分

    在开始Python基础知识梳理前, 先安装下环境. 以下过程是在Linux操作系统, root用户下进行的, 主要安装了2.7版本的python, 和pip, ipython, virtualenv等 ...

  9. Js基础知识梳理系列

    小序:总是感觉自己的技术一直在原地踏步,想学习一些新的技术,但学起来很吃力,而且总是没有什么实际的收获,似乎进入了所谓的"瓶颈期".问了一些前辈是否也遇到过同样的问题,他们给我的解 ...

最新文章

  1. Codeforces Round #406 (Div. 1) B. Legacy(线段树上优化建图)
  2. python好学吗1001python好学吗-怎样才能写出 Pythonic 的代码 #P1001#
  3. qt定时连续发送udp数据包_TCP和UDP
  4. 108. 奇数码问题【思维 / 逆序对】
  5. 排序算法之两路归并排序(Java)
  6. 教授是如何教授数学思维的?
  7. 移动端手机火狐浏览器全屏插件
  8. 接管任意微软账户并获$5万赏金的故事
  9. VS2010“.NET研究”中的调试技巧
  10. w ndows7浏览器网页,win7系统IE浏览器播放网页视频失败的解决方法
  11. 创建Web Service后,客户端不能调用的解决办法(提示:此方法只有在本地才可以使用)...
  12. 浮动网页html特效代码,网页上可点击关闭的纯代码无图版浮动tips提示特效代码...
  13. 手动修改Icon图标的颜色深度(张佩)
  14. 【UEFI实战】HII之uni文件
  15. 幼麟棋牌创建房间逻辑分析
  16. Java Swing教程(基础)
  17. 这些华为技巧,花粉都不一定全知道
  18. Class 文件的魔数和文件版本号
  19. 如何实现从OPC到阿里云IoT平台的数据交换?
  20. mysql中select使用方法,MySQL中select语句介绍及使用示例

热门文章

  1. infa 组件学习总结----sorter
  2. DAC调用INFA命令
  3. mfc-7360扫描时无法检查连接计算机,mfc7360怎么扫描 mfc7360扫描键无反映解决办法...
  4. 【Linux】日志 日志管理服务 日志轮替
  5. 12306是如何实现高流量高并发的关键技术
  6. 优联智能灯控系统升级:NB-IoT将引领智慧照明新风潮
  7. rsa非对称加密(js+php)---事例2(已被采用)
  8. CodeCombat地牢关卡Python代码
  9. 在B端供应链上,看见企业增长的「密码」
  10. MapReduce初级编程实践