【强化学习-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中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Java MCP 的鉴权深度解析

《JavaMCP的鉴权深度解析》文章介绍JavaMCP鉴权的实现方式,指出客户端可通过queryString、header或env传递鉴权信息,服务器端支持工具单独鉴权、过滤器集中鉴权及启动时鉴权... 目录一、MCP Client 侧(负责传递,比较简单)(1)常见的 mcpServers json 配置

Maven中生命周期深度解析与实战指南

《Maven中生命周期深度解析与实战指南》这篇文章主要为大家详细介绍了Maven生命周期实战指南,包含核心概念、阶段详解、SpringBoot特化场景及企业级实践建议,希望对大家有一定的帮助... 目录一、Maven 生命周期哲学二、default生命周期核心阶段详解(高频使用)三、clean生命周期核心阶

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python进阶之列表推导式的10个核心技巧

《Python进阶之列表推导式的10个核心技巧》在Python编程中,列表推导式(ListComprehension)是提升代码效率的瑞士军刀,本文将通过真实场景案例,揭示列表推导式的进阶用法,希望对... 目录一、基础语法重构:理解推导式的底层逻辑二、嵌套循环:破解多维数据处理难题三、条件表达式:实现分支

深度解析Python yfinance的核心功能和高级用法

《深度解析Pythonyfinance的核心功能和高级用法》yfinance是一个功能强大且易于使用的Python库,用于从YahooFinance获取金融数据,本教程将深入探讨yfinance的核... 目录yfinance 深度解析教程 (python)1. 简介与安装1.1 什么是 yfinance?

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

深度解析Spring Security 中的 SecurityFilterChain核心功能

《深度解析SpringSecurity中的SecurityFilterChain核心功能》SecurityFilterChain通过组件化配置、类型安全路径匹配、多链协同三大特性,重构了Spri... 目录Spring Security 中的SecurityFilterChain深度解析一、Security