当前位置: 首页 > news >正文

强化学习鱼书(10)——更多深度强化学习的算法

在这里插入图片描述
:是否使用环境模型(状态迁移函数P(s’|s,a)和奖
励函数r(s,a,V))。不使用环境模型的方法叫作无模型(model-free)的方法,使用环境模型的方法叫作有模型(model-based)的方法。
模型的方法可以分为两种,一种是提供了环境模型的方法,另一种是训练环境模型的方法。

  • 如果提供了环境模型,那么智能代理可以通过规划(planning)来解决问题,而不采取任何行动。
  • 如果没有提供环境模型,则可以考虑根据从环境中获得的经验来训练环境模型(行动-奖励-策略/价值优化)。训练的环境模型除了可以用于规划之外,还可以用于评估和改进策略。

策略梯度法的改进算法

A3C

A3C是 Asynchronous Advantage Actor-Critic 的缩写。
在这里插入图片描述
本地网络在各自的环境中独立进行训练。然后它们会将作为训练结果的梯度发送到全局网络。全局网络使用来自多个本地网络的梯度异步更新权重参数。这样,在更新全局网络的权重参数的同时,可以定期同步全局网络和本地网络的权重参数。
多个智能代理的并行运行,可以不依赖于经验回放而减少数据的相关性。
另外,A3C的Actor-Critic将共享神经网络的权重。(需要多个环境并行同时运行)

A2C是同步更新参数的方法,它不采取异步更新参数的方式。(多了采样过程)
在这里插入图片描述

更详细的说明
https://zhuanlan.zhihu.com/p/65068744

DDPG

DDPG 是 Deep Deterministic Policy Gradient (深度确定性策略梯度法)的缩写。从名字就能想到它的含义,它是针对连续行动空间问题而设计的算法。神经网络可以将行动作为连续值直接输出

回顾DQN:

  1. 经验回放:取出一个batch的数据
  2. 目标网络:一个表示Q函数的原始网络(这个网络叫作qnet),再准备了一个具有相同结构的网络计算TD目标的值(这个网络叫作qnet_target),定期与qnet的权重同步,在其余的时间里保持权重参数固定。

DDPG:
在这里插入图片描述在这里插入图片描述
(1)中输出的行动a是连续值,该值可直接作为Q的输入。这样就能通过两个神经网络进行反向传播了。通过反向传播可以求梯度▽q(这里的是Q函数的输出)。这样就能使用梯度▽q更新参数了。
(2)是在DQN中进行的Q学习

更详细的说明
https://zhuanlan.zhihu.com/p/111257402

TRPO 和 PPO

https://zhuanlan.zhihu.com/p/111049450

DQN的改进算法

分类 DQN

DQN在Q学习中要训练的是由Q函数这个期望值所表示
的值。进一步扩展这个思路,不要训练Q函数这个期望值,而要训练“分布”。这个思路叫:分布强化学习(distributional reinforcement learning)。分布强化学习将训练收益Zpai(s,a)的概率分布。

Noisy Network

DQN根据s-greedy算法选择行动。也就是说,DQN会以e的概率随机选择行动,以1-e的概率选择贪婪的行动(函数值最大的行动)。在实践中,我们常常要进行“调度设置” (schedule setting),即随着回合的发展,逐渐降低e的值

代替e:Noisy Network:
在输出侧的全连接层中使用有噪声的全连接层。在有噪声的全连接层中,权重会被建模为正态分布的均值和方差,并在每次前向传播时从正态分布对权重进行采样。

Rainbow

Ape-X/R2D2/NGU

在多个运行环境中进行训练的做法也被称为“分布式强化学习”

http://www.lqws.cn/news/101287.html

相关文章:

  • 前端与后端
  • uniapp+vue2+uView项目学习知识点记录
  • HertzBeat的安装和使用教程
  • Manus AI与多语言手写识别的创新革命:从技术突破到行业赋能
  • Python与数据分析期末复习笔记
  • 【C/C++】template 入门到高阶简单大纲
  • 【Python进阶】装饰器
  • Python 训练营打卡 Day 34-GPU训练及类的call方法
  • 如何爬取google应用商店的应用分类呢?
  • 深入解析Playwright for Python:浏览器功能与代码实例详解
  • Python数据可视化科技图表绘制系列教程(一)
  • 用python制作一个消消乐游戏(限时关卡挑战版)
  • 机器学习——聚类算法
  • Dify:用Celery构建高性能异步任务处理系统
  • 力扣刷题Day 69:搜索二维矩阵(74)
  • LabelMe安装踩坑
  • Numpy入门1——创建、数据类型、属性、和列表的差异
  • Rust 学习笔记:使用自定义命令扩展 Cargo
  • 转战海外 Web3 远程工作指南
  • ARM GIC V3概述
  • 无人机论文感想
  • React进阶:状态管理选择题
  • python学习(一)
  • 提升系统稳定性和可靠性的特殊线程(看门狗线程)
  • git管理github上的repository
  • STM32外部中断(EXTI)以及旋转编码器的简介
  • iOS 电子书听书功能的实现
  • Java中并发修改异常如何处理
  • React 第五十二节 Router中 useResolvedPath使用详解和注意事项示例
  • 高效易用的 MAC 版 SVN 客户端:macSvn 使用体验