优势演员-评论家算法 A2C

优势演员-评论家算法 A2C

    • 优势演员-评论家算法 A2C
      • 主要思想
      • 目标函数

 


优势演员-评论家算法 A2C

前置知识:演员-评论家算法:多智能体强化学习核心框架

主要思想

AC 网络结构:

  1. 策略网络 - 演员: 这个网络负责根据当前的状态选择动作。它输出的是给定状态下每个动作的概率。

  2. 价值网络 - 评论家: 用于估计当前策略下,一个状态或状态-动作对的期望回报。

    • Q 网络: 估计在给定状态和动作下的期望回报。
    • V 网络: 估计在给定状态下的期望回报。

演员-评论家算法有 3 个网络(策略网络、价值函数-Q网络和V网络),我们最终目的不是计算 Q网络和V网络 的具体数值,而是差异(也就是优势网络A)。

因为演员-评论家算法用俩个不同的网络(Q网络和V网络)去,估计价值函数,反而会增大误差。

优势函数作用:

  • 优势函数 A(s, a) = Q(s, a) - V(s): 这个函数衡量的是在给定状态下,选择某个特定动作相对于平均动作的相对优势。

优势函数的目的并不是要精确计算 Q 和 V 的具体值,而是要找出哪些动作比平均动作好,哪些比平均动作差。

  • 当使用两个独立的网络来估计 Q 值和 V 值时,确实可能会增加估计的不确定性或误差,因为每个网络都有其独立的误差。
  • 然而,计算优势函数的关键在于找出相对优势。即使 Q 和 V 的绝对估计值不是完美准确的,它们的差值(即 A(s, a))仍然可以有效地指导策略网络进行更好的动作选择。
  • 优势函数的使用有助于减少方差,并且能够更加明确地指示策略网络应该如何改进,从而提高学习的效率和稳定性。

优势演员-评论家算法 通过分离策略和价值估计,并引入优势函数,提供更精细的价值估计,以及减少学习过程中的不稳定性。

就像练习投篮,你只能觉知到自己的投篮是偏左还是偏右了。

但那些高手的觉知更精细,他们会觉知到自己的手指(尤其是食指)的状态。

更别提膝盖、腰、肩膀、手肘等一系列对投篮都有影响的部位了。

你投篮几年了还是很低的命中率,因为你缺乏觉知的意识。

你偶尔怀疑自己为什么偷懒不准也找不到原因,只能感叹手感不好。

其实就是想要觉知而无法施展出来;即使你花时间去练习自己的投篮也往往效果不佳,因为你的觉知不精细。

而那些投篮高手,因为更精细,他们的刻意练习会让他们突飞猛进。

目标函数

  • 演员-评论家算法AC 的目标函数基于价值函数(比如状态价值函数 V)来评估动作。
  • A2C 改进了这个目标函数,引入了优势函数 A ( s , a ) = Q ( s , a ) − V ( s ) A(s, a) = Q(s, a) - V(s) A(s,a)=Q(s,a)V(s),其中 Q 是动作价值函数,V 是状态价值函数。这样的改变减少了方差,提高了学习稳定性。

数学表达:

  • ∇ R θ ˉ ≈ 1 N ∑ n = 1 N ∑ t = 1 T n ( Q π θ ( s t n , a t n ) − V π θ ( s t n ) ) ⏟ A τ θ ( s t n , a t n ) ⋅ ∇ log ⁡ p θ ( a t n ∣ s t n ) \nabla\bar{R_{\theta}}\approx\frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T_{n}}\underbrace{(Q_{\pi_{\theta}}(s_{t}^{n},a_{t}^{n})-V_{\pi_{\theta}}(s_{t}^{n}))}_{A_{\tau_{\theta}}(s_{t}^{n},a_{t}^{n})}\cdot\nabla\log p_{\theta}\left(a_{t}^{n}\mid s_{t}^{n}\right) RθˉN1n=1Nt=1TnAτθ(stn,atn) (Qπθ(stn,atn)Vπθ(stn))logpθ(atnstn)

作者把 Q 变成了 当前的即时奖励 r t n r_{t}^{n} rtn 加上在下一个状态 s t + 1 n s_{t+1}^{n} st+1n 下的预期总奖励。

  • Q π θ ( s t n , a t n ) = r t n + V π θ ( s t + 1 n ) Q_{\pi_{\theta}}(s_{t}^{n},a_{t}^{n})=r_{t}^{n}+V_{\pi_{\theta}}(s_{t+1}^{n}) Qπθ(stn,atn)=rtn+Vπθ(st+1n)

把 2 式代入 1 式:

  • ∇ R θ ˉ ≈ 1 N ∑ n = 1 N ∑ t = 1 T n ( r t n + V π θ ( s t + 1 n ) − V π θ ( s t n ) ) ⏟ A π θ ( s t n , a t n ) ⋅ ∇ log ⁡ p θ ( a t n ∣ s t n ) \nabla\bar{R_\theta}\approx\frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T_n}\underbrace{\left(r_t^n+V_{\pi_\theta}(s_{t+1}^n)-V_{\pi_\theta}(s_t^n)\right)}_{A_{\pi_\theta}(s_t^n,a_t^n)}\cdot\nabla\log p_\theta\left(a_t^n\mid s_t^n\right) RθˉN1n=1Nt=1TnAπθ(stn,atn) (rtn+Vπθ(st+1n)Vπθ(stn))logpθ(atnstn)

A2C 这个公式突出优势函数的形式,演员的更新不是基于动作价值( Q Q Q),只使用 V 网络,解决了 AC 算法的问题。

 


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LabVIEW在指针式仪表读数中的应用

在LabVIEW环境中,为实现指针式仪表的自动读数,首先进行图像预处理,包括图像缩放、灰度化和二值化,以提高处理速度和减少噪声干扰。利用LabVIEW的图像处理功能,灰度化和二值化操作简化了图像的色彩信息,便于…

Java HashMap 面试题(一)

HashMap 面试题(一) 文章目录 HashMap 面试题(一)3.3 面试题-说一下HashMap的实现原理?面试题-HashMap的put方法的具体流程hashMap常见属性源码分析 3.3 面试题-说一下HashMap的实现原理? HashMap的数据结…

Mongodb删除操作中字符序对结果的影响

本文还是要从删除操作的语法说起。 db.collection.deleteMany(<filter>,{writeConcern: <document>,collation: <document>,hint: <document|string>} ) 删除语法中&#xff0c;可以指定数据写入策略&#xff0c;字符序和使用的索引字段。 字符序&a…

2024--Django平台开发-Web框架和Django基础(二)

day02 Web框架和Django基础 今日概要&#xff1a; 网络底层引入&#xff0c;到底什么是web框架&#xff1f;常见web框架对比django快速上手&#xff08;创建网站&#xff09;常见操作&#xff1a;虚拟环境、django项目、多app应用、纯净版逐点剖析&#xff1a;路由、视图、模…

mysql的分页查询

我们来看下一段查询&#xff1a; select * from sys_role; 如果我们要进行分页查询&#xff0c;例如每页显示两条数据&#xff0c;我们可以利用 limit 关键字&#xff1a; select * from sys_role limit 0,2; select * from sys_role limit 2,2; 假设我们当前页面为 n&#xf…

机器学习--ROC AUC

参考 机器学习-ROC曲线 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/347470776一文看懂ROC、AUC - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/81202617 在了解之前&#xff0c;我们先来认识一下以下的概念 针对一个二分类问题&#xff0c;将实例分成正类(postive)或…

java基于SSM的游戏商城的设计与实现论文

基于SSM的游戏商城的设计与实现 摘 要 当下&#xff0c;正处于信息化的时代&#xff0c;许多行业顺应时代的变化&#xff0c;结合使用计算机技术向数字化、信息化建设迈进。以前相关行业对于游戏信息的管理和控制&#xff0c;采用人工登记的方式保存相关数据&#xff0c;这种以…

系统及应用安全

引导语 系统安全及应用是现代信息系统的核心组成部分&#xff0c;它不仅关乎信息安全&#xff0c;更直接影响到企业的运营效率、财务状况乃至品牌信誉。通过不断改进和强化系统的安全性&#xff0c;可以为企业创造一个更加可靠、高效的信息化环境。 一、账号安全的基本措施 …

狮子目标检测数据集VOC格式300张

狮子&#xff0c;作为“丛林之王”&#xff0c;以其威武雄壮的身姿和卓越的狩猎能力闻名于世。 狮子的体型健硕&#xff0c;毛发浓密&#xff0c;通常是金黄色或浅褐色&#xff0c;腹部和腿部的毛发相对较浅。狮子的头部特别大&#xff0c;长有一对威风凛凛的鬃毛&#xff0c;…

玩转Mysql 四(MySQL逻辑架构与数据引擎)

一路走来&#xff0c;所有遇到的人&#xff0c;帮助过我的、伤害过我的都是朋友&#xff0c;没有一个是敌人。 一、MySQL逻辑架构 1、从Oracle收购MySQL后&#xff0c;MySQL逻辑架构受Oracle影响&#xff0c;MySQL8版本中逻辑架构受Oracle的影响逐步完善查询缓存&#xff0c;O…

多线程高级面试题

1. 什么是 ThreadLocal&#xff1f; 参考答案 ThreadLocal 叫做本地线程变量&#xff0c;意思是说&#xff0c;ThreadLocal 中填充的的是当前线程的变量&#xff0c;该变量对其他线程而言是封闭且隔离的&#xff0c;ThreadLocal 为变量在每个线程中创建了一个副本&#xff0c;…

2023年12月 C/C++(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 第1题:数的输入和输出 输入一个整数和双精度浮点数,先将浮点数保留2位小数输出,然后输出整数。 时间限制:1000 内存限制:65536 输入 一行两个数,分别为整数N(不超过整型范围),双精度浮点数F,以一个空格分开。 输出 一行两个数,分…

关于“Python”的核心知识点整理大全65

目录 20.2.19 设置 SECRET_KEY 20.2.20 将项目从 Heroku 删除 注意 20.3 小结 附录 A 安装Python A.1.1 确定已安装的版本 A.1.2 在 Linux 系统中安装 Python 3 A.2 在 OS X 系统中安装 Python A.2.1 确定已安装的版本 A.2.2 使用 Homebrew 来安装 Python 3 注意 …

[技术杂谈]使用VLC将视频转成一个可循环rtsp流

通过vlc播放器&#xff0c;将一个视频转成rtsp流&#xff0c;搭建一个rtsp服务器。rtsp客户端可访问这个视频的rtsp流。 1. 打开vlc播放器&#xff0c;使用的版本如下 2. 菜单&#xff1a;媒体 ---> 流 3. 添加视频文件&#xff0c;点击添加一个mp4 文件 4. 选择串流&…

【软件测试】学习笔记-测试覆盖率

测试覆盖率通常被用来衡量测试的充分性和完整性&#xff0c;从广义的角度来讲&#xff0c;测试覆盖率主要分为两大类&#xff0c;一类是面向项目的需求覆盖率&#xff0c;另一类是更偏向技术的代码覆盖率。 需求覆盖率 需求覆盖率是指测试对需求的覆盖程度&#xff0c;通常的做…

LeetCode 每日一题 Day 3334(hard)35 ||二进制枚举/单调栈/链表遍历

2397. 被列覆盖的最多行数 给你一个下标从 0 开始、大小为 m x n 的二进制矩阵 matrix &#xff1b;另给你一个整数 numSelect&#xff0c;表示你必须从 matrix 中选择的 不同 列的数量。 如果一行中所有的 1 都被你选中的列所覆盖&#xff0c;则认为这一行被 覆盖 了。 形式…

【CANopen】关于STM32中CanFestival的pdo应用

系列文章目录 文章目录 系列文章目录一、发送1、同步传输2、异步传输 二、接收 使用STM32F407单片机 pdo属于过程数据用来传输实时数据&#xff0c;即单向传输&#xff0c;无需接收节点回应。 一、发送 分为同步传输和异步传输。 1、同步传输 分为循环传输&#xff08;周期…

【Flink精讲】双流Join之Regular Join(即普通Join)

Regular Join 普通Join 通过条件关联两条实时数据流&#xff1a;动态表Join动态表支持Inner Join、Left Join、Right Join、Full Join。 1. Inner Join(Join)&#xff1a;只有两边数据流都关联上才输出[L,R] 2. Left Join(Left Outer Join)&#xff1a;只要左流有数据即输出[…

我的创作纪念日三年收获和感悟

机缘 我刚开始接触创作也是最近几年开始&#xff0c;当初就是希望自己的收获分享给大家&#xff0c;不仅使自己成长&#xff0c;也可以带着大家一起成长&#xff0c;独乐乐不如众乐乐&#xff0c;人都是自私的以前我都是看到好的知识文章都是自己藏起来&#xff0c;发现收获的…

python类的初始化

问题描述 存在这样的两个类&#xff0c;都在同一个模块a.py内 class YamlGlobal:with open(get_project_path() "/cfg/global.yaml", r, encodingutf-8) as f:glVar yaml.load(f, Loaderyaml.SafeLoader)......class DatabaseGlobal:itd InstanceDao(SQLAlchemy…