zoukankan      html  css  js  c++  java
  • 强化学习入门笔记系列——DDPG算法

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

    DDPG算法基本概念


    什么是DDPG算法?

    深度确定性策略梯度(Deep Deterministic Policy Gradient, DDPG)虽名为“策略梯度”,实际上是Actor-Critic的一种经典算法。除了用于动作选择的策略网络,它还大量借鉴了DQN的思想并构建价值网络来间接引导策略网络的更新。
    在这里我们可以将DDPG分为两部分,一是作为“演员”(Actor)的策略网络,二是作为“评论家”的价值网络。策略网络利用策略梯度方法进行更新,但它不是直接与环境交互来计算目标函数,而是通过价值网络估计的Q值来调整自己的网络参数( heta)。也就是说“演员”并不直接与提供奖励的观众(环境)接触,而是利用价值网络间接地获得对动作的评价。与此同时,价值网络部分可以看作经典的DQN模型,它一方面与环境交互,利用reward来更新自己Q网络的参数(w);另一方面它作为评委需要估算当前状态和动作的Q值来引导策略网络的更新。由于借鉴了DQN中的一些思想,DDPG中的策略网络和价值网络也都各分为两部分,即一个用于每步更新的当前网络和一个用于计算预测的Q值及动作的目标(target)网络,后者每隔一段时间从当前网络中复制参数,加起来总共四个网络。这样可以尽量保证预测时可以得到比较稳定的Q值,有助于模型的收敛。

    DDPG算法有什么特点?

    深度确定性策略梯度,顾名思义,首先是利用了神经网络来逼近Q函数,其次它是一个确定性策略,也就是对于任意状态,输出当前最佳的动作,这里是一个确定的动作,而不是一个包含概率分布的动作集。最后它是引入了策略梯度的方法来执行动作选择。

    如何实现确定性策略?

    策略网络中输出位置我们可以添加一层以tanh为激活函数的节点,它实现对于动作空间的压缩,输入一个浮点数,它都会生成[-1,1]之间的值。然后根据动作空间的实际要求,将输出值随比例扩大即可。这样同时解决了实现执行动作连续性与和确定性的问题。

    参考资料:

    1. DataWhale组队学习资料——《强化学习》 王琦 杨毅远 江季 著
    2. 《强化学习》第二版 Richard S. Sutton, Andrew G. Barto 等 著
    3. 深度强化学习——从DQN到DDPG https://zhuanlan.zhihu.com/p/28549596
  • 相关阅读:
    浅谈Java 8的新特性和使用场景
    Oracle下通过EXPDP导出某用户下的所有表,实例
    官网下载I.MX6参考手册
    TFTP服务开启
    二、 U-Boot 命令使用
    CP15协处理器
    Linux内核配置Kconfig语法
    M.2接口是如何辨别插入的SSD是SATA协议还是NVME协议?
    SSH 服务开启
    一 、 UBOOT简介
  • 原文地址:https://www.cnblogs.com/liugd-2020/p/13945521.html
Copyright © 2011-2022 走看看