zoukankan      html  css  js  c++  java
  • 强化学习入门笔记系列——策略梯度与PPO算法

    本系列是针对于DataWhale学习小组的笔记,从一个对统计学和机器学习理论基础薄弱的初学者角度出发,在小组学习资料的基础上,由浅入深地对知识进行总结和整理,今后有了新的理解可能还会不断完善。由于水平实在有限,不免产生谬误,欢迎读者多多批评指正。如需要转载请与博主联系,谢谢

    策略梯度相关概念


    什么是策略梯度方法?

    策略梯度方法是相对于动作价值函数的另一类强化学习思路。在基于动作价值函数的方法中,我们需要先学习价值函数Q(s,a),再根据估计的价值函数选择动作,价值函数相当于在不同状态下对不同动作的评分,是不可缺少的。而在策略梯度方法中,我们会直接学习动作策略,也就是说输出应当是当前状态下应该执行的动作,即π(a|s)=P(a|s),实际上这里的动作是一个概率分布,更有利的动作会分配到更大的选择概率。因此策略梯度方法可以用包括神经网络在内的任意模型进行参数化,代表策略的参数向量我们用(θ in R^{d'})来表示,则t时刻下当状态为s、策略参数为θ时选择执行动作a的概率可写作:(pi (a|s,θ)=Pr{A_t=a|S_t=s,θ_t=θ})

    在所有的策略梯度类方法中,我们都会预先确定一个用于评价策略的某种性能指标,这里用(J(θ))来表示。我们的目的是最大化这个性能指标,因此利用梯度上升对策略参数θ进行更新:

    [ heta _{t+1} = heta _t + alpha widehat{ abla J( heta _t)} ]

    这里的(widehat{ abla J( heta _t)} in R^{d'})实际上是一个随机估计,它的期望是选定的性能指标(J)对策略的参数( heta _t)的梯度( abla J( heta _t))的近似。对参数更新也就是策略更新的方法,更新后的策略则直接指导动作的执行。在有些算法中,我们会同时学习策略和近似的价值函数,这类方法被称为actor-critic。

    策略梯度方法与价值函数方法的比较

    基于价值函数的方法很多,以经典的DQN为例,它以神经网络代替Q表来逼近最优Q函数,更新后的网络同时作为价值函数引导动作的选择,一定程度上解决了高维离散输入的问题,使得图像等信息的处理在强化学习中变得可能。但其仍存在一些问题,如:

    1. 无法表示随机策略,对于某些特殊环境而言,最优的动作策略可能是一个带有随机性的策略,因此需要按特定概率输出动作。
    2. 无法输出连续的动作值,比如连续范围内的温度数值。
    3. 价值函数在更新过程中的微小变动可能使得被选中的最优动作完全改变,在收敛过程中缺少鲁棒性。

    相对而言,策略梯度算法可以较好地解决上述问题,而且策略的参数化允许我们通过参数模型的引入来添加先验知识。当然在有些情况下动作价值函数方法会更简单,更容易近似,有些情况下则相反,还是要根据实际情况选择采用的方法。

    (抱歉由于最近较忙,剩下的内容将在后续进行补充。。)

    参考资料:

    1. DataWhale组队学习资料——《强化学习》 王琦 杨毅远 江季 著
    2. 《强化学习》第二版 Richard S. Sutton, Andrew G. Barto 等 著
    3. 理解策略梯度算法 https://zhuanlan.zhihu.com/p/93629846
    4. 强化学习进阶 第六讲 策略梯度方法 https://zhuanlan.zhihu.com/p/26174099
  • 相关阅读:
    记录操作:增删改查
    mysql表的完整性约束
    mysql支持的数据类型:数值类型、时间类型、字符串类型、ENUM和SET类型
    mysql中的存储引擎
    系统从未分库分表动态切换到分库分表
    为什么要分库分表
    生产环境中的 redis 是怎么部署的
    redis 集群模式
    redis 的持久化方式
    redis 的过期策略都有哪些?内存淘汰机制都有哪些?
  • 原文地址:https://www.cnblogs.com/liugd-2020/p/13899928.html
Copyright © 2011-2022 走看看