强化学习(7):深度确定性策略梯度(Deep Deterministic Policy Gradient, DDPG)

news/2024/5/18 23:44:19 标签: 强化学习, DDPG, 深度确定性策略梯度

本文主要讲解有关 DDPG 算法的有关内容。

DDPG__4">一、DDPG 算法

DDPG 是 Deep Deterministic Policy Gradient 的缩写,其中深度 (Deep) 代表 DQN;确定性(Deterministic)是指不再先生成各个动作的概率然后再选择概率最高的动作,而是直接输出一个确定性的动作;Policy Gradient 就不用解释了吧。

因为在 Actor-Critic 中连续状态中前后状态具有相关性,所以会导致神经网络只能片面的看待问题,甚至导致神经网络学不到东西、收敛慢。为了解决这个问题,DDPG 使用了类似于 DQN 的经验回放池。在实操中,一开始时先由 Actor 随机的采取动作,当经验回放池存储满后,再从里面随机选择 batch 个样本进行网络参数更新。

DDPG 可以看作是 Actor-Critic 算法和 DQN 算法的结合,该算法中还是有 Actor 和 Critic 两个网络。与 Actor-Critic 算法不同的是 Actor 网络直接采用 Critic 网络对自己动作的评估值 TD-error 作为 Actor 网络的损失函数。而两者的 Critic 网络的损失函数是相同的。

因为 DDPG 还结合 DQN 算法,所以 Actor 和 Critic 网络又分别有两个—— target 网络和 eval 网络。与 DQN 一样,eval 网络的参数保持最新,而 target 网络的参数隔一段时间后才会更新。

总结一下,Actor-target 网络和 Critic-target 网络是一对,前者做动作,后者对动作进行评估,然后前者再根据评估值改变自己选择动作的概率。同理 Actor-eval 网络和 Critic-eval 网络是一对,前者做动作,后者对动作进行评估,不同的是,前者没有自己的损失函数,而是靠 Actor-target 来更新自己的参数。而 Actor-target 网络和 Actor-eval 网络是一对,它们的存在是为了打乱观测值前后的相关性。同理 Critic-target 和 Critic-eval 这两个网络也是如此。

由于 Actor-Critic 算法中是先 Critic 更新参数然后再 Actor 更新参数,而 DDPG 与之相反,这使得 DDPG 中获得两个网络的输出和更新两个网络的参数这两个阶段是分离的(先同时得到两个网络的输出,再更新两个网络的参数)。所以说 DDPG 的网络结构写起来是比较蛋疼的,具体情况建议大家根据代码自己理顺两个网络中数据的传递流程。

DDPG__Tricks_18">二、DDPG 中的 Tricks

(1)soft-replacement

在把 eval 网络的参数赋值给 target 网络时,不再是 hard replacement,而是软替换 soft replacement,这样可以避免不收敛的问题。hard replacement 就是每隔一定的步数就将 eval 网络中的参数赋值给 target 网络,而 soft replacement 就是每一步都对 target 网络的参数更新一部分。

(2) 为 action 增加噪声

这样可以增加网络的鲁棒性。

DDPG__28">三、DDPG 算法流程

<a class=DDPG" />


http://www.niftyadmin.cn/n/968497.html

相关文章

发布小工具,无法完成

已发布的小工具&#xff1a; 二月份&#xff1a; 1、输出文件的树形目录&#xff0c;项目和文档辅助小工具 http://download.csdn.net/source/2081484 2、双色球单式无限投单程序&#xff0c;彩票也玩过呵呵 http://download.csdn.net/source/2081536 3、ping一个网段的c…

UML设计:类图说明及一步一步制作UML类图

什么是类图 UML类图是用来描述一个系统的静态结构。它既可以用于一般概念建模也可以用于细节建模。类包含了数据和行为&#xff0c;是面向对象的重要组成部分&#xff0c;它是具有相同属性、操作、关系的对象集合的总称。 UML类图也可以用于数据建模。它可以用来描述应用程序内…

强化学习(8):Asynchronous Advantage Actor-Critic(A3C)算法

本文主要讲解有关 A3C 算法的相关内容。 一、A3C 算法 直接引用莫烦老师的话来介绍 A3C 算法&#xff1a;Google DeepMind 提出的一种解决 Actor-Critic 不收敛问题的算法。它会创建多个并行的环境&#xff0c;让多个拥有副结构的 agent 同时在这些并行环境上更新主结构中的参…

TCP Server《——》TCP Client

#include <stdio.h>#include <winsock2.h>#pragma comment(lib, "WS2_32") // 链接到WS2_32.libclass CInitSock {public:CInitSock(BYTE minorVer 2, BYTE majorVer 2){// 初始化WS2_32.dllWSADATA wsaData;WORD sockVersion MAKEWORD(minorVer, ma…

Cocoapods 版本

查看当前安装的版本 gem list 卸载版本 gem uninstall cocoapods 安装 gem install cocoapods gem install cocoapods -v 1.5.3转载于:https://www.cnblogs.com/willbin/p/10947534.html

强化学习(9):TRPO、PPO以及DPPO算法

本文主要讲解有关 TRPO算法、PPO 算法、PPO2算法以及 DPPO 算法的相关内容。 一、PPO 算法 PPO&#xff08;Proximal Policy Optimization&#xff09; 是一种解决 PG 算法中学习率不好确定的问题的算法&#xff0c;因为如果学习率过大&#xff0c;则学出来的策略不易收敛&…

【论文笔记】U-Net模型-用于医学图像分割的神经网络模型

本文主要是对 U-Net 论文中主要内容的提炼&#xff0c;中间加入了一些自己的理解&#xff0c;有些地方自己不是很懂&#xff0c;所以直接采用了直译的方式。建议大家去阅读原文。 U-Net 的主要优点是可以用更少的训练样本达到更好的效果&#xff0c;并且速度很快&#xff0c;这…

UDP Client《——》UDP Server

#include <stdio.h>#include <winsock2.h>#pragma comment(lib, "WS2_32") // 链接到WS2_32.libclass CInitSock {public:CInitSock(BYTE minorVer 2, BYTE majorVer 2){// 初始化WS2_32.dllWSADATA wsaData;WORD sockVersion MAKEWORD(minorVer, ma…