PG类算法总结

1. On-Policy类算法

1.1 VPG:Vanilla Policy Gradient

  • on policy 算法
  • 可用于动作空连续或者离散动作空间

这个就是最初的PG版本。我们的目的是最大化有限的return。J代表的是无折扣的有限return。

下面的公式推导见从PG到A3C

τ\tauτ就是我们的采样序列。

A是Advantage function

可见我们需要获得完整的动作序列。

伪代码:

1.2 TROP: Trust Region Policy Optimization

  • On-policy算法
  • 离散或者连续动作空间

VPG算法在参数更新的时候,是原始参数+学习率*梯度。在现实应用上,如果有一步走的比较差,就会影响整个PG算法的性能。TROP的思路就是在一定的限制内,来决定这个步长迈出多大。

这个限制来自于新旧两个策略的KL-散度,KL散度可以认为是衡量两个分部的距离的。两个策略越接近,我们迈出的步子越小,策略相差越大,我们迈出的步子就可以越大。

TROP的具体数学推导可看原论文。关键的几个公式如下:

  1. 更新规则

我们的L(θk,θ)L(\theta_k, \theta)L(θk​,θ)衡量新的策略(分子)和就得策略(分母)结果相关性的。他们的结果越相同,L越小。

散度的计算:

如果新旧两个策略相等,那么梯度就等于0。从数学上可以证明。(我没证。。)

  1. TROP实际应用

    • 上述实际应用很难,所以使用了泰勒公式近似来求解以更快得到结果。-
    • 因为是带有限制的求极值问题,使用拉格朗日对偶(Lagrangian duality)来处理。
    • 添加α\alphaα的原因是通过泰勒公式进行估计,引入了误差,可能不满足KL的限制,所以加一个系数

    最终的结果:中间推导过程或者原论文

而且对于H的逆矩阵计算很困难,还用到了共轭梯度算法( conjugate gradient algorithm)

1.3 PPO: Proximal Policy Optimization

TRPO算法效果很好,但是应用起来十分复杂。PPO算法解决和TROP一样的问题,就是每次迈多大的步子。PPO更加简单,并且实际效果至少和TRPO一样好。

  • on-policy
  • 连续或者离散动作空间

PPO两个版本:

  • PPO-Penalty:
  • PPO-Clip

具体论文分析Spinningup和Blog-PPO

2. Off-policy类算法

2.1 DDPG

  • off-policy

  • 连续动作空间

  • 可认为是DQN的连续动作空间版本

分析见Spinningup和Blog-DDPG

off-policy:能够使用experience replay。off-policy的根本原因是在计算Q值的时候,不再需要整个动作序列了,on-policy策略使用整个动作序列的reward累加或者带有折扣的reward累加来确定Q值,从而帮助选择策略。off-policy利用了TD-learning的思想,使用神经网络来估计Return,Q值计算只需要当前奖励和之后的估计Q值。这样不需要记录完整序列,只需要记录状态、动作、奖励即可。所以我们可以将使用其他episode采样的数据来训练当前的policy。坏处就是又引入了误差(因为多了一处估计)

2.2 TD3 Twin Delayed DDPG

DDPG超参多、参数不好难以收敛,复杂维度训练困难。

DDPG有四个网络,即Critic-net Critic-target-net、Actor-net、Actor-Target-Net

TD3除了critic-target-net,还同时学习两个critic-net来估计Q值,即有两个Critic-net通过反向传播进行更新。

  1. Actor网络输出平滑化

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ws6vPEgI-1603099010531)(20-MF类算法总结(VPG, TROP, PPO, DDPG, TD3, SAC)].assets/8efd61c40551db4eddb3f780d2804cac34c8ae52.svg)

μ\muμ是Actor网络,alowa_{low}alow​是action范围最小值

为了探索,我们往往在Actor网络中增加正态分布的噪声。我们对输出进行剪切处理。

​ 这么做解决了一个DDPG可能失败的一个情形:Q-function输出了一个某些动作的错误的峰值,policy会快速利用这个峰值,那么就会产生错误的动作行为。target policy这么做,可以平滑Q-function在相似动作上的输出。

  1. 在计算y_target时,两个Q-function的结果选择最小的一个

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U0SR3fJ8-1603099010535)(20-MF类算法总结(VPG, TROP, PPO, DDPG, TD3, SAC)].assets/70901eaea34c31e03bb878d7a710a33cb75d1143.svg)

  1. policy的梯度计算只通过其中一个。

2.3 SAC Soft Actor-Critic

SAC算法继承了TD3的两个Q-net的结构。同时,引入了交叉熵,不需要手动设置探索率。

Blog-SAC

Reference

本文所有公式和伪代码来自:
SpinningUp

RL论文阅读20 - MF类算法总结(VPG, TROP, PPO, DDPG, TD3, SAC)相关推荐

  1. [论文阅读] (20)USENIXSec21 DeepReflect:通过二进制重构发现恶意行为(恶意代码ROI分析经典)

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

  2. 论文阅读笔记 | 目标检测算法——SAPD算法

    如有错误,恳请指出. 文章目录 1. Introduction 2. Soft Anchor-Point Detector 2.1 Detection Formulation with Anchor ...

  3. 论文阅读笔记 | 目标检测算法——FSAF算法

    如有错误,恳请指出 文章目录 1. Introduction 2. FSAF Module 2.1 Network Architecture 2.2 Ground-truth and Loss 2.2 ...

  4. 论文阅读笔记 | 目标检测算法——PP-YOLOv2

    如有错误,恳请指出. 文章目录 1. Introduction 2. Revisit PP-YOLO 2.1 Pre-Processing 2.2 Baseline Model 2.3 Trainin ...

  5. 聚类算法 距离矩阵_论文阅读9——AP聚类算法

    Affinity Learning for Mixed Data Clustering 论文提出了基于混合对数据进行聚类的学习框架,具体研究内容包括:1)如何处理具有混合类型属性的数据.2)如何学习数 ...

  6. RL论文阅读【一】Playing Atari with Deep Reinforcement Learning

    1 废话 开始要认真的读论文的,计划每天晚上回宿舍看一半,两天看完一篇,第三天写博客总结,虽然有点慢吧,但是积少成多嘛~ 今天先介绍第一篇,也是深度强化学习的开山之作. 2 动机 一般把这篇论文称作深 ...

  7. 论文阅读笔记 | 目标检测算法——Libra R-CNN算法

    如有错误,恳请指出. 文章目录 1. Introduction 1.1 Sample level imbalance 1.2 Feature level imbalance 1.3 Objective ...

  8. 论文阅读笔记 | 目标检测算法——PP-YOLO

    如有错误,恳请指出. 文章目录 1. Introduction 2. Related Work 3. PP-YOLO 3.1 Architecture 3.1.1 Backbone 3.1.2 Det ...

  9. 论文阅读笔记 | 目标检测算法——YOLOX

    如有错误,恳请指出. 文章目录 1. Introduction 2. YOLOX 2.1 YOLOv3 baseline 2.2 Decoupled head 2.3 Strong data augm ...

最新文章

  1. 加入域应具备的权限讨论
  2. java实现HTML转PDF
  3. 1.FPGA开发软件安装——Vivado
  4. mybitas oracle.sql.clob,Oracle使用简单函数
  5. boost::system::system_error相关的测试程序
  6. 搞定Server 2008蓝牙问题
  7. 利用组策略管理器映射网络驱动器的方法
  8. centos7安装nexus3
  9. 以码为梦,心向远方,路在脚下|211应届计算机毕业生的迷茫
  10. 苹果IPSW文件提取软件
  11. h5做app和原生app有什么区别
  12. 什么是CAD定位功能?CAD定位功能如何使用?
  13. Jsp:WebRoot与WebContent区别
  14. Era of nostalgia?(怀旧时代的到来?)
  15. 计算机管理中打开移动硬盘磁盘必须格式化,最佳解决方案:无法打开移动硬盘分区,并且未格式化解决方案。...
  16. chrome如何分析页面加载时间
  17. pytz 的所有函数
  18. 记一次调试SIM7600CE使用物联网卡遇到的问题
  19. 召唤神龙-万宁版源码,游戏直播用不挂(麦田资源网)
  20. Open JDK 8.0_152-b16 崩溃 : [libzip.so+0x12522] newEntry+0x62

热门文章

  1. tomcat项目在Linux下生成文件路径错误问题
  2. 5年多工作经验,工资给15k,要是你,你会接受吗?
  3. java实现简单区块链毕业设计
  4. java入门基础教程(纯干货知识点+视频资源)
  5. 【转】deepin Linux下Picked up _JAVA_OPTIONS错误
  6. iOS 获取屏幕尺寸
  7. 苹果iphone4s英文系统怎么显示中文联系人?
  8. Python + Opencv 实现图像tif格式转jpg
  9. Web前端面试指导(四十四):什么是响应式开发?
  10. c++实现磨砂玻璃(类似马赛克)效果