狗都能看懂的Actor-Critic强化学习算法讲解

news2024/9/23 9:23:06

Review Policy Gradient

review policy gradient.png

上面的公式是Policy Gradient的更新函数,这个式子是指在 s t s_t st时刻采取了 a t a_t at,计算出对应发生的概率 p θ p_\theta pθ,然后计算在采取了这个 a t a_t at之后,所得到的reward有多大。但这里需要减去一个baseline,不能让reward都大于0,这样会降低没有sample到的action的概率。同时还需要加上衰减因子,保证后期得到的reward不会过大,从而影响了一开始的action概率。最后把所有时刻的reward求和。

我们将画蓝色横线的式子记作 G t n G_t^n Gtn,它虽然没有偏差,但因为方差大,数值波动比较大。波动大的原因也很好理解, G t n G_t^n Gtn从执行了这个action之后到episode结束得到的所有reward总和,由于sample的概率不相同,所以中间会遇到各种不同的state。

如果我们收集数据的数量足够多,这个波动会被平均掉。但实际收集数据是比较耗时,所以也不会有太多数据。如果说能用期望值(平均)替代 G t n G_t^n Gtn,那可以让训练过程更稳定。这里就需要引入Value-Based的方法。

Review Q-Learning

review q-learning.png

Value-Based的方法有两种:

  • V π ( s ) V^{\pi}(s) Vπ(s)输入state,输出可能会得到reward的期望值
  • Q π ( s , a ) Q^{\pi}(s,a) Qπ(s,a)输入state和会采取的action,输出可能会得到reward的期望值

以上两个方法都可以用TD或MC的方法更新,用TD比较稳定,用MC更精确。

Actor Critic

Actor Critic.png

刚刚说到,如果能用期望值(平均)替代 G t n G_t^n Gtn,训练会更加稳定。那 G t n G_t^n Gtn的期望值是什么?它是希望在 s t s_t st时刻,用 π \pi π这个策略得到 a t a_t at,执行了 a t a_t at之后所得到的reward总和的期望值,那这个其实就是 Q π θ ( s t n , a t n ) Q^{\pi_\theta}(s^n_t,a^n_t) Qπθ(stn,atn)的定义。所以有:
E [ G t n ] = Q π θ ( s t n , a t n ) E[G_t^n] = Q^{\pi_\theta}(s^n_t,a^n_t) E[Gtn]=Qπθ(stn,atn)
那么我们用 Q π θ ( s t n , a t n ) Q^{\pi_\theta}(s^n_t,a^n_t) Qπθ(stn,atn)替代 G t n G_t^n Gtn这一项即可。还有一项baseline,正常是自己设置,但这里我们可以用Value Function替代, V ( s ) V(s) V(s)是不包含action的, Q ( s , a ) Q(s,a) Q(s,a)是包含action的, V ( s ) V(s) V(s) Q ( s , a ) Q(s,a) Q(s,a)的期望值,为什么这么说呢?原因是这样的:

  • s t s_t st下,价值函数 V π ( s ) V^\pi(s) Vπ(s)表示从状态 s t s_t st开始,遵循策略 π \pi π的期望回报。
  • 由于策略 π \pi π定义了在 s t s_t st下采取各个action的概率分布,因此,价值函数 V π ( s ) V^\pi(s) Vπ(s)可以看作是动作价值函数 Q ( s , a ) Q(s,a) Q(s,a)在所有可能动作上的加权平均,即期望值。

所以上图红框内的式子就可以被Value-Based的两个方法给替换掉,这样就可以将Actor和Critic的两个方法给结合起来。

Advantage Actor Critic

Advantage Actor-Critic-1.png

这样结合的缺点就是需要训练两个网络,有办法可以只训练一个网络用来预测两个值吗?可以,事实上可以只训练 V ( s ) V(s) V(s),用 V ( s ) V(s) V(s)替代 Q ( s , a ) Q(s,a) Q(s,a)。回到 Q ( s , a ) Q(s,a) Q(s,a)的定义,因为 r t r_t rt本身是一个随机值,只有我们取了期望值之后才是 Q ( s , a ) Q(s,a) Q(s,a)的定义。现在为了简化Actor-Critic的训练,直接将求期望值去掉。这样就可以用 V ( s ) V(s) V(s)替代 Q ( s , a ) Q(s,a) Q(s,a)

但这样做的坏处也显而易见,是引入了一个随机的变量。但不过相较于 G t n G_t^n Gtn来说还好, r t r_t rt只是某一个step会有的随机变量,方差会比 G t n G_t^n Gtn小的多。所以整体上还是能接受的。

Advantage Actor-Critic-2.png

红框里面是原来的Advantage项,已经用Value-Based的方法替代了。那么Advantage Actor-Critic完整流程如上图:

  1. 有一个Policy π \pi π 和环境做互动收集训练数据。(Policy Gradient中是用这些训练数据直接优化Policy)
  2. 用TD或MC优化 V ( s ) V(s) V(s)
  3. 套用上面的公式更新Policy π \pi π
  4. 重复1-3直至收敛

Tips

Advantage Actor-Critic-3.png

backbone shared

和很多CV任务一样,前面的特征提取都是可以共享的。然后预测action和预测value分成两个分支,这部分和Dueling DQN很像,只是最后没有合并成一个 Q ( s , a ) Q(s,a) Q(s,a)

large entropy

我们可以设置一些限制,使得action的entropy会大一点,不同的action被采用的概率平均一些,才会有几率探索更多state,得到比较好的结果。

asynchronous

强化学习通常花时间都是在收集训练数据过程中。开多个线程与环境做互动收集数据可以有效缩短训练时间。

Asynchronous Advantage Actor-Critic

Asynchronous.png

Asynchronous Advantage Actor-Critic简称为A3C,具体如何实现?

首先有一个初始的global network

  1. 复制N个network
  2. 让它们都和环境做互动,收集数据
  3. 计算梯度
  4. 更新模型

这里值得注意的是,所有的actor都是并行去收集,训练,更新的。可能有人问,如果复制出来的参数是 θ 1 \theta^1 θ1,但是要更新的时候已经被别覆盖成 θ 2 \theta^2 θ2了呢?这个没关系,直接覆盖就行。

Pathwise Derivative Policy Gradient

Pathwise Derivative Policy Gradient.png

之前说到Q-Learning在连续的问题上表现不好。我们完全可以利用Actor预测action的能力,为 Q π Q^\pi Qπ提供action,使得 Q π Q^\pi Qπ的值越大越好。在训练的时候会直接将两个网络连起来,并且freeze Q π Q^\pi Qπ的参数,只训练Actor,这个思路和CV任务里的GAN很像,用生成器生成一个图片,用判别器去判断是好是坏。

Pathwise Derivative Policy Gradient-2.png

算法的流程也很简单,有一个 π \pi π去和环境交互,收集数据,训练 Q π Q^\pi Qπ,然后将 Q π Q^\pi Qπ固定,只训练actor使得 Q π Q^\pi Qπ输出的值越大越好。在Q-Learning中能用到的trick,这里也能用上,比如replay buffer等。

Algorithm.png

相较于之前的Q-Learning算法,改动四个地方就行:

  1. 之前使用 Q π Q^\pi Qπ决定用什么action,现在改用 π \pi π来预测action
  2. π ^ \hat{\pi} π^预测的action代入到 Q π Q^\pi Qπ中,不再解 a r g max ⁡ a   Q π ( s , a ) arg \max\limits_{a} \ Q^\pi(s,a) argamax Qπ(s,a)(会有两个 π \pi π,其中一个是固定的,和训练DQN是一样的)
  3. 训练 π \pi π(其优化目标是让 Q π Q^\pi Qπ越大越好)
  4. 更新 π \pi π的参数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1950570.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【运维笔记】数据库无法启动,数据库炸后备份恢复数据

事情起因 在做docker作业的时候,把卷映射到了宿主机原来的mysql数据库目录上,宿主机原来的mysql版本为8.0,docker容器版本为5.6,导致翻车。 具体操作 备份目录 将/var/lib/mysql备份到~/mysql_backup:cp /var/lib/…

沃尔玛1P账号智能宠物用品市场的商机与策略——WAYLI威利跨境助力商家

近年来,随着人们生活水平的提高和对宠物陪伴需求的增长,宠物经济正在全球范围内蓬勃发展。其中,智能宠物用品市场作为新兴赛道,蕴藏着巨大的商机。对于拥有沃尔玛1P账号的卖家而言,这是一个不容错过的蓝海市场。 智能宠…

工作流 Flowable

工作流包括业务流和审批流等业务流程。 在一个流程系统中,任务间往往存在复杂的依赖关系,为保证pipeline的正确执行,就是要解决各任务间依赖的问题,这样DAG结合拓扑排序是解决存在依赖关系的一类问题的利器。DAG ( Directed Acyc…

m4a怎么转mp3?m4a转mp3的几种方法教程

m4a怎么转mp3?M4A音频格式的全称MPEG-4 Audio,是一种音频压缩格式。这种格式以其卓越的音质和相对较小的文件大小而广受欢迎,尤其是在音乐存储、在线流媒体以及音频编辑等领域。M4A格式被广泛应用于苹果公司的产品中,如iPhone、iP…

深度解析离岗识别检测算法在企业管理中的价值

在现代化企业管理中,员工离岗问题是影响工作效率和团队协作的重要因素。传统的员工管理方式主要依靠人工监督和考勤系统,然而,这些方法存在明显的不足,例如耗费人力、难以实时监控等。随着人工智能和视觉分析技术的发展&#xff0…

MySQL练手 --- 1934. 确认率

题目链接:1934. 确认率 思路 由题可知,两个表,一个表为Signups注册表,另一个表为Confirmations信息确认表,表的关联关系为 一对一,且user_id作为两个表的连接条件(匹配字段)&#…

Arthas在线诊断案例实战整理

会一直持续更新。。。 Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时…

Wonder3D 论文学习

论文链接:https://arxiv.org/abs/2310.15008 代码链接:https://github.com/xxlong0/Wonder3D 解决了什么问题? 随着扩散模型的提出,3D 生成领域取得了长足进步。从单张图片重建出 3D 几何是计算机图形学和 3D 视觉的基础任务&am…

【MATLAB APP】建立独立桌面APP

背景:已有MATLAB APP的.mlapp文件,但客户提出需要可以直接使用的exe文件。 要求:点开即用,无需下载MATLAB。使用者无法修改APP的代码。 一、环境配置 APP创建者:安装MATLAB R2023a,配置Application Compile…

【C++笔试强训】day05

游游的you 思路 贪心:优先组成 you,最少的字母决定了you的数量。需要注意:如果oo剩下n个,那么相邻oo的个数是n-1个,而不是n/2个。 例如 oooooo oo oo oooo oo 6个o,两两组合有3对,掐头去尾有…

为什么样本方差(sample variance)的分母是 n-1?

样本均值与样本方差的定义 首先来看一下均值,方差,样本均值与样本方差的定义 总体均值的定义: μ 1 n ∑ i 1 n X i \mu\frac{1}{n}\sum_{i1}^{n} X_i μn1​i1∑n​Xi​ 也就是将总体中所有的样本值加总除以个数,也可以叫做总…

让你的程序有记忆功能。

目录 环境 代码 环境 大语言模型: gpt-40-mini Mem0: Empower your AI applications with long-term memory and personalization OpenAPI-Key: Mem0-Key: 代码 import osfrom dotenv import load_dotenv from openai import OpenAI from m…

UE5.4内容示例(1)- 学习笔记

https://www.unrealengine.com/marketplace/zh-CN/product/content-examples 《内容示例》是学习UE5的基础示例,可以用此示例熟悉一遍UE5的功能 模型与材质部分 StaticMeshes FBX_Import_Options Material_Advanced Material_Decals Material_Instances Material_N…

免费好用!还在用Stable Diffusion生艺术字?阿里AI艺术字生成工具,推荐试试!(附详细教程)

大家好,我是程序员X小鹿,前互联网大厂程序员,自由职业2年,也一名 AIGC 爱好者,持续分享更多前沿的「AI 工具」和「AI副业玩法」,欢迎一起交流~ 曾经那个口口声声对X小鹿说,「自己不太适合写文章…

【VUE】个人记录:父子页面数据传递

1. 父传子 在父页面中&#xff0c;调用子页面的组件位置处&#xff0c;通过“&#xff1a;”进行参数传递 <child-component :childData"parentData"></child-component>parentData对象&#xff0c;需要在父页面的data中进行初始化声明 在子页面中&am…

深入探索PHP框架:Symfony框架全面解析

1. 引言 在现代Web开发领域&#xff0c;PHP作为一种广泛使用的服务器端脚本语言&#xff0c;其框架的选择对于项目的成功至关重要。PHP框架不仅能够提高开发效率&#xff0c;还能确保代码的质量和可维护性。本文将深入探讨Symfony框架&#xff0c;这是一个功能强大且灵活的PHP…

Java 序列流:Java 对象的序列化和反序列化详解

1.概念 序列化是指将一个对象转换为一个字节序列&#xff08;包含对象的数据、对象的类型和对象中存储的属性等信息&#xff09;&#xff0c;它可以将多个InputStream对象串联起来&#xff0c;使得它们可以被当作一个单一的输入流来处理&#xff0c;以便在网络上传输或保存到文…

【反证法】932. 漂亮数组

本文涉及知识点 分治 数学 反证法 LeetCode932. 漂亮数组 如果长度为 n 的数组 nums 满足下述条件&#xff0c;则认为该数组是一个 漂亮数组 &#xff1a; nums 是由范围 [1, n] 的整数组成的一个排列。 对于每个 0 < i < j < n &#xff0c;均不存在下标 k&#x…

ChatGPT的原理和成本

ChatGPT就是人机交互的一个底层系统&#xff0c;某种程度上可以类比于操作系统。在这个操作系统上&#xff0c;人与AI之间的交互用的是人的语言&#xff0c;不再是冷冰冰的机器语言&#xff0c;或者高级机器语言&#xff0c;当然&#xff0c;在未来的十来年内&#xff0c;机器语…

CSRF(Cross-site request forgery)

一、概述 1、CSRF定义 CSRF是一个web安全漏洞&#xff0c;该漏洞通过引诱用户来执行非预期的操作。该漏洞使得攻击者能够绕过同源策略&#xff0c;同源策略是一种用来阻止不同网站相互干扰的一种技术。 CSR跨站请求伪造&#xff0c;攻击者利用服务器对用户的信任&#xff0c…