16、异步优势演员 - 评论家(A3C)与确定性策略梯度(DPG)算法解析

异步优势演员 - 评论家(A3C)与确定性策略梯度(DPG)算法解析

1. 异步优势演员 - 评论家(A3C)模型代码实现
1.1 项目结构与依赖
  • 环境与工具 :使用基于 Python 3.6.5 的虚拟环境(DRL)和 PyCharm IDE。
  • 额外依赖 :深度学习相关依赖和 OpenAI Gym 环境。使用 TensorFlow 实现的 Keras 包装器(v 1.12.0),Gym 中使用 “CartPole - v0” 环境,也可通过更改 “environment” 参数尝试其他环境。
  • 代码灵感来源 :代码很大程度上受 TensorFlow 官方 GitHub 仓库中 A3C 实现的启发,并在模型架构上进行了增强,使其结构与整体代码流程兼容,提高了代码的清晰度和直观性。
依赖项 详情
虚拟环境 Python 3.6.5 的 DRL
IDE PyCharm
深度学习库 TensorFlow 实现的 Keras(v 1.12.0)
Gym 环境 “CartPole - v0”
1.2 代码组件
  • Actor - Critic 模型类 :定义了 A3C 中主代理和工作代理的通用近似模型。工作代理在模型副本和自己的环境实例上计算所需的梯度更新,然后用计算出的更新更新主模型的梯度,最后复制主模型的参数。
graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A([开始]):::startend --> B(工作代理计算梯度更新):::process
    B --> C(更新主模型梯度):::process
    C --> D(复制主模型参数):::process
    D --> E([结束]):::startend
  • 主类(Master) :是 A3C 实现的入口点。实例化一个 Actor - Critic 模型副本以保留其可训练权重,工作代理有全局权重/网络参数副本进行更新和同步。主类根据本地机器的 CPU 线程数调用相应数量的工作代理。
  • 工作类(Worker) :实现为 “threading.Thread” 类的实例。工作代理不断与自己的环境副本交互并更新本地模型副本,直到完成一个回合或达到强制与主代理同步的最大步数。同步过程中,工作代理计算模型所需的梯度更新,更新全局模型的网络参数,然后复制更新后的状态到本地模型副本并继续与环境交互。
  • 模型架构 :DNN 有两个隐藏层,策略网络和价值网络共享。从最后一个共享隐藏层开始,策略网络和价值网络分叉到各自的专用层。策略网络以 SoftMax 层(或应用 SoftMax 函数的 “Dense” 对数层)结束,提供动作概率以实现随机策略;价值网络以单个神经元层结束,提供价值估计。
  • 内存类 :自定义实现的 Memory 类,这次使用简单的列表代替双端队列。自定义异常类与之前相同。
2. 确定性策略梯度(DPG)与深度确定性策略梯度(DDPG)
2.1 确定性策略梯度(DPG)

在之前基于策略的方法和演员 - 评论家模型的章节中,所涵盖的算法大多属于随机策略梯度方法。这些算法是基于策略的,具有随机动作策略,与典型 Q - 学习算法中的确定性动作策略不同,随机策略梯度模型可以提供给定状态下所有可能动作的动作概率函数。

算法类型 特点
随机策略梯度 动作策略随机,行为策略内置在动作策略中,可提供动作概率函数,有内置探索机制
确定性动作策略(如 Q - 学习) 动作策略仅为当前状态推荐单个(最佳)动作

还有采用 “离策略” 机制的随机策略梯度算法,在复杂问题中,其内置探索能力可能不足,需要外部行为策略确保最佳探索。在随机梯度方法中,通常使用性能函数(J)的梯度来最大化性能函数,但计算随机梯度存在数学上的难解性,通过随机策略梯度定理在一定条件下简化了解决方案。

近年来,确定性策略梯度方法有了很好的发展,由确定性策略梯度定理提供支持。确定性策略梯度本身是随机策略梯度的极限情况,在动作空间中,当概率分布函数仅对一个动作有非零概率时,随机策略就变成了确定性策略;在策略梯度中,当基础策略的方差变为零时,随机策略梯度就等同于确定性策略梯度。

确定性策略梯度算法基于演员 - 评论家模型,有 “在线策略” 和 “离策略” 两种变体。由于动作策略是确定性的,在线策略变体的探索机会不足,需要在策略实现中添加外部变化/噪声以增加探索。因此,在线策略确定性策略梯度类模型中流行的模型或变体不多,大多数有前景的变体来自离策略确定性策略梯度方法。

2.2 确定性策略梯度的优势
  • 简单性 :确定性策略梯度遵循简单的无模型形式,实际上是动作价值(Q)函数的期望梯度。性能函数的梯度难以找到,而动作价值函数的梯度在之前的价值估计方法中较容易推导。
  • 高效性
    • 由于其简单性,作为动作价值函数的期望梯度,确定性策略梯度比通常的随机策略梯度估计更高效。
    • 算法输出是确定性的,因此不需要对所有状态 - 动作对组合进行策略梯度积分,只需对所有状态进行积分,大大降低了计算复杂度。在高维动作空间问题中,确定性策略梯度的性能明显优于随机策略梯度。
  • 适用性 :在某些情况下,随机策略梯度不可行,但确定性策略梯度仍然适用。例如在机器人领域,一些用例提供可微控制策略,但没有注入噪声的功能,而随机策略梯度(特别是在线策略设置)在复杂问题中需要注入噪声进行最佳探索,此时离策略确定性策略梯度可能是策略梯度下的最佳算法选择。
2.3 确定性策略梯度定理
  • 确定性策略表示 :确定性策略可以表示为 (l_h : S \to A),其中 (l) 是由 (h) 参数化的策略,将状态集 (S) 中的状态映射到动作集 (A) 中的动作。
  • 状态转移概率和折扣状态分布 :分别表示为 (p(s \to s’, t, l)) 和 (q_l(s))。
  • 性能值(J) :在确定性策略 (l) 下,性能值 (J(l_h)) 可表示为所有折扣奖励的期望值,即 (J(l_h) = E[r_{c1}|l]),也可展开为 (J(l_h) = \int_{s} q_l(s)r(s, l_h(s))ds) 或 (J(l_h) = E_{s \sim q_l}[r(s, l_h(s))])。
  • 定理 1 :如果满足一定条件且确定性策略梯度存在,性能值函数的梯度可以表示为 (\nabla_h J(l_h) = \int_{s} q_l(s)\nabla_h l_h(s)\nabla_a Q_l(s, a, h)| {a = l_h(s)}ds) 或 (\nabla_h J(l_h) = E[\nabla_h l_h(s)\nabla_a Q_l(s, a, h)| {a = l_h(s)}])。
  • 定理 2 :在某些极限条件下,当随机策略梯度的方差趋于零时,随机策略梯度等同于确定性策略梯度。

异步优势演员 - 评论家(A3C)与确定性策略梯度(DPG)算法解析

3. 深度确定性策略梯度(DDPG)概述

深度确定性策略梯度(DDPG)算法是 DQN 和 DPG 的结合,为 DPG 算法带来了深度学习的增强。它引领我们走向一种更实用、更现代的方法,用于增强强化学习智能体在连续动作控制方面的能力。

3.1 DDPG 与 DPG 的关系

DDPG 建立在 DPG 的基础之上,利用深度学习的强大表示能力,将 DPG 算法扩展到更复杂的环境中。与 DPG 一样,DDPG 也是基于演员 - 评论家模型,但它引入了深度神经网络来近似策略和价值函数,从而能够处理高维的状态和动作空间。

3.2 DDPG 的优势
  • 处理连续动作空间 :与传统的基于价值的方法(如 DQN)不同,DDPG 能够直接处理连续动作空间,这使得它在许多实际应用中(如机器人控制、自动驾驶等)具有很大的优势。
  • 结合深度网络 :通过使用深度神经网络,DDPG 能够学习到更复杂的策略和价值函数,从而提高智能体的性能。
  • 稳定性 :DDPG 采用了目标网络和经验回放等技术,提高了训练的稳定性和收敛速度。
4. 算法对比与总结
算法名称 策略类型 动作空间 探索机制 适用场景 优势
A3C 随机策略 离散/连续 随机策略自带探索 通用场景 多线程异步训练,提高训练效率
DPG 确定性策略 连续 在线策略需外部噪声,离策略有专门行为策略 连续动作控制,特别是对计算效率和特定场景有要求的情况 简单、高效,适用于部分随机策略不可行的场景
DDPG 确定性策略 连续 动作添加噪声 连续动作控制的复杂场景 结合深度学习,处理高维空间,训练稳定
graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A([开始]):::startend --> B{选择算法}:::process
    B -->|离散动作空间| C(A3C):::process
    B -->|连续动作空间且简单场景| D(DPG):::process
    B -->|连续动作空间且复杂场景| E(DDPG):::process
    C --> F([结束]):::startend
    D --> F
    E --> F
5. 实际应用建议
  • A3C :如果你的问题具有离散或连续的动作空间,且希望通过多线程异步训练提高效率,A3C 是一个不错的选择。在实现时,需要注意线程之间的同步和通信,确保训练的稳定性。
  • DPG :对于连续动作控制问题,特别是在计算效率要求较高或随机策略不适用的场景下,可以考虑使用 DPG。在在线策略的 DPG 中,需要添加适当的噪声来增加探索。
  • DDPG :当面对连续动作控制的复杂场景,如高维状态和动作空间时,DDPG 是一个更合适的选择。在训练过程中,要合理调整目标网络的更新频率和经验回放的参数,以提高训练的稳定性。

总之,不同的算法适用于不同的场景,在选择算法时,需要根据问题的特点和需求进行综合考虑。通过深入理解这些算法的原理和优势,我们可以更好地应用它们来解决实际问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值