强化学习(6):Actor-Critic(演员评论家)算法

news/2024/5/19 2:07:28 标签: 强化学习, AC算法, actor-critic, 演员-评论家

本文主要讲解有关 Actor-Critic 算法的有关知识。

一、Actor Critic 算法

Actor-Critic 算法合并了以策略为基础的 Policy Gradient和以值为基础的 Q-Learning 两类强化学习算法,该算法中将前者当作 Actor,用来基于概率选择行为。将后者当作 Critic,用来评判 Actor 的行为得分,然后 Actor 又会根据 Critic 的评分修改行为的概率。这使得它既可以在有效的处理连续动作的选取,又可以进行单步更新(PG算法的回合更新降低了学习效率)。

下面分别介绍一下 Actor 网络和 Critic 网络这个两个部分。

二、Actor 网络

Actor 网络采用的是基于策略的 Policy-Gradient 算法。PG 算法的损失函数可以表示为: l o s s = − E [ log ⁡ [ π ( a ∣ s ) ] ⋅ ψ ] loss=-E[\log{[\pi(a|s)]}\cdot \psi] loss=E[log[π(as)]ψ],其中 ψ \psi ψ 是对某个轨迹的评分, 在 AC 算法中它可以有多种表示方式:

  1. 状态价值函数:V(s)
  2. 动作价值函数:Q(s,a)
  3. TD-error: r + γ ⋅ Q ( s t + 1 , a t + 1 ) − Q ( s t , a t ) r+\gamma\cdot Q(s_{t+1},a_{t+1})-Q(s_t,a_t) r+γQ(st+1,at+1)Q(st,at)
  4. 优势函数:V(s,a)
  5. 总回报: ∑ r t \sum r_t rt
  6. 加入基线的总回报: ∑ r t − b \sum r_t-b rtb

在实际编写代码的时候,使用的是 TD-error 来作为评价,同时为了鼓励探索(exploration),所以损失函数中还加入了交叉熵损失。

三、Critic 网络

Critic 网络采用的是基于值函数的 Q-Learning 算法,采用的是 l o s s = ( T D _ e r r o r ) 2 loss=(TD\_{error})^2 loss=(TD_error)2 作为 Critic 网络的损失函数。

整个 Actor Critic 算法可以用下图表示:

<a class=actor-critic" />

四、AC 算法的缺点

AC 取决于 Critic 的价值判断, 但是 Critic 难收敛, 再加上 Actor 的更新, 就更难收敛,为了解决该问题又提出了 DDPG 算法和 A3C 算法。


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

相关文章

输出文件的树形目录,项目和文档辅助小工具

我们知道windows下有输出文件夹下的所有文件到制定目录的命令TREE C:/WINDOWS /F>D:/list.txt但是当我在做项目时&#xff0c;发现有时我想知道整个项目中的每个文件的创建日期和文件大小&#xff08;文件日期可以知道我们哪些文件是现做的&#xff0c;哪些是后来做的&#…

U盘文件删除怎么恢复?教你一个小妙招

U盘文件删除怎么恢复&#xff1f;在对U盘进行各种操作的时候&#xff0c;用户最担心的就是文件的误删或者丢失情况&#xff0c;因为U盘删除文件的话是不会经过回收站这个程序的&#xff0c;所以也无法通过回收站方式找回的&#xff0c;那么U盘文件删除要怎么恢复呢&#xff1f;…

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

本文主要讲解有关 DDPG 算法的有关内容。 一、DDPG 算法 DDPG 是 Deep Deterministic Policy Gradient 的缩写&#xff0c;其中深度 &#xff08;Deep&#xff09; 代表 DQN&#xff1b;确定性&#xff08;Deterministic&#xff09;是指不再先生成各个动作的概率然后再选择概…

发布小工具,无法完成

已发布的小工具&#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