【强化学习-Mode-Free DRL】深度强化学习如何选择合适的算法?DQN、DDPG、A3C等经典算法Mode-Free DRL算法的四个核心改进方向

本文主要是介绍【强化学习-Mode-Free DRL】深度强化学习如何选择合适的算法?DQN、DDPG、A3C等经典算法Mode-Free DRL算法的四个核心改进方向,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【强化学习-DRL】深度强化学习如何选择合适的算法?

  • 引言:本文第一节先对DRL的脉络进行简要介绍,引出Mode-Free DRL。
  • 第二节对Mode-Free DRL的两种分类进行简要介绍,并对三种经典的DQL算法给出其交叉分类情况;
  • 第三节对Mode-Free DRL的四个核心(改进方向)进行说明。
  • 第四节对DQN的四个核心进行介绍。

DRL的发展脉络

  • DRL沿着Mode-Based和Mode-Free两个脉络发展。
  • Mode-Based:利用已知环境模型或未知环境模型进行显式建,并与前向搜索(Look Ahead Search)和轨迹优化(Trajectory Optimization)等规划算法结合达到提升数据效率的目的。相比而言,Mode-Based更加复杂,在实践中应用较少,在学术研究中使用较多。
  • 本文对Mode-Free系列的方法进行介绍。

Mode-Free DRL算法的分类

  • 按照不同的分类可以分为:Value-Based方法、Policy-Based方法。以及Off-Policy、On-Policy。
  • DQN、DDPG、A3C是三种非常非常经典的方法,也是DRL的研究重点,后续提出的新算法基本都立足于这三种框架。DQN、DDPG、A3C在上述两种分类方式下交叉分类情况如下图。
    请添加图片描述

Mode-Free DRL算法的四个核心(改进方向)

  • Mode-Free DRL算法的核心为:基本原理、探索方式、样本管理、梯度计算。
  • 基本原理:基本原理层面进展缓慢,但是DRL未来大规模应用的关键所在。
  • 探索方式: 探索方式的改进使得DRL算法更加充分地探索环境,以更好地平衡探索和利用,从而有机会学习到更好的策略。
    • 如为了改善DQN的探索,使用噪声网络(Noisy Net)代替默认的 ϵ − G r e e d y \epsilon-Greedy ϵGreedy
  • 样本管理:样本管理的改进,有助于提升DRL算法的样本效率,从而加快收敛速度,提高算法实用性。
    • 如为了提升样本效率,可以将常规经验回放改为优先经验回放(Prioritized Experience Replay,PER)
  • 梯度计算:梯度计算的改进致力于使每一次梯度更新都稳定、无偏和高效。
    • 如为了提高训练稳定性,在计算目标值时由单步Bootstrap改为多步Bootstrap。

DQN

  • 我们以DQN为例子对Mode-Free DRL算法的四个核心进行说明。

基本原理

  • DQN(Deep Q-Networks)继承了Q-Learning的思想,利用贝尔曼公式的Bootstrap特性,根据式子1计算目标值并不断迭代一个状态动作估值函数 Q θ ( s , a ) Q_\theta(s,a) Qθ(s,a),直到收敛。
    J Q ( θ ) = E s , a ∼ D [ 1 2 r ( s , a ) + γ m a x a ′ ∈ A Q θ − ( s ′ , a ′ ) − Q θ ( s , a ) 2 ] J_{Q}(\theta) = E_{s,a \sim D}[\frac{1}{2} r(s,a) + \gamma max_{a' \in A } Q_{\theta ^- } (s',a') - Q_{\theta}(s,a)^2] JQ(θ)=Es,aD[21r(s,a)+γmaxaAQθ(s,a)Qθ(s,a)2]

探索方式

  • DQN使用 ϵ − G r e e d y \epsilon-Greedy ϵGreedy 的探索策略。 ϵ \epsilon ϵ ( 0 , 1 ] (0,1] (0,1]由大到小现行变化,DQN相应地实现从“强探索利用”逐渐过渡到“弱探索利用”。

样本管理

  • DQN使用Off-Policy,即采集样本策略与当前待优化策略不一致的方法。
  • DQN使用Replay Buffer的先入先出堆栈结构存储训练过程中采集的单步转移样本 ( s , a , s ′ , r ′ ) (s,a,s',r') (s,a,s,r) ,并每次从中选择一个Batch进行梯度计算和参数更新。
  • Replay Buffer允许重复利用隶属数据,以Batch为单位进行训练覆盖了更大的状态空间,中和了单个样本计算梯度时的Variance(方差),时DQN训练和提高样本效率的重要措施。

梯度计算

  • 为克服Bootstrap带来的训练不稳定。DQN设置了一个与Q网络完全相同的目标Q网络。目标Q网络专门用于计算下一步的Q值,参数用 θ − \theta^- θ表示。目标网络的参数并不每次都迭代更新,而是每N次迭代后从主Q网络中将参数拷贝过来,这样做可以有效提升DQN的训练稳定性。

A3C

  • DQN和DDPG都属于Off-Policy算法,都利用了贝尔曼公式的Bootstrap特性来更新Q网络。该方法具有运行利用历史数据,带来样本效率提升的同时,导致训练稳定性较差,并且目标值的计算不是无偏的,普遍存在overstimation问题,不利于累积回报的梯度回传。
  • 与Off-Policy算法基于单步转移样本 ( s , a , s ′ , r ) (s,a,s',r) (s,a,s,r)不同,On-Policy算法利用蒙特卡洛方法通过最新策略随机采集多个完整Episode获得当前值函数 V ( s ) V(s) V(s) 的无偏估计,从而提高了训练性能。
  • A3C(Asynchronous Advantage Actor-Critic)是 On-Policy DRL的经典代表。
  • A3C的具体四个核心我们之后文章中会进行分析,敬请关注收藏。

参考文献

  • 深度强化学习落地指南

这篇关于【强化学习-Mode-Free DRL】深度强化学习如何选择合适的算法?DQN、DDPG、A3C等经典算法Mode-Free DRL算法的四个核心改进方向的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/979846

相关文章

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

SpringQuartz定时任务核心组件JobDetail与Trigger配置

《SpringQuartz定时任务核心组件JobDetail与Trigger配置》Spring框架与Quartz调度器的集成提供了强大而灵活的定时任务解决方案,本文主要介绍了SpringQuartz定... 目录引言一、Spring Quartz基础架构1.1 核心组件概述1.2 Spring集成优势二、J

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

浅谈mysql的sql_mode可能会限制你的查询

《浅谈mysql的sql_mode可能会限制你的查询》本文主要介绍了浅谈mysql的sql_mode可能会限制你的查询,这个问题主要说明的是,我们写的sql查询语句违背了聚合函数groupby的规则... 目录场景:问题描述原因分析:解决方案:第一种:修改后,只有当前生效,若是mysql服务重启,就会失效;

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、