【强化学习】Actor-Critic算法

最近读论文看到了强化学习中的Actor-Critic算法。因此了解一下这方面的知识,并记录下来,以防忘记。文章中部分内容也借鉴了其他优秀的博主。

文章目录

  • 一、简介
  • 二、策略梯度法(Policy Gradient)
  • 三、Q-Learning
  • 四、Actor-Critic 算法


一、简介

Actor-Critic 算法是一种综合了策略迭代和价值迭代的集成算法。Actor是利用策略梯度算法实现,Critic使用时序差分实现。Actor-Critic 算法的组成部分为:

  • Actor(策略网络):Actor是策略函数 π θ ( s ) π_θ(s) πθ(s),是一个神经网络,它负责在给定状态下选择动作,输出每个动作的概率分布。该网络的训练目标是最大化累计回报的期望。

    Critic(价值网络):Critic是值函数 V π ( s ) V_π(s) Vπ(s),也是一个神经网络,它估计给定状态的价值(状态值)或某个特定动作的价值(动作值)。

二、策略梯度法(Policy Gradient)

策略梯度方法的核心思想是直接优化策略,而不是通过估计价值函数间接优化策略。
具体推导可参考这篇文章:【详解+推导!!】Policy Gradient 策略梯度法

策略梯度法的主要过程是:

  1. 初始化一个策略网络 θ θ θ
  2. 用这个策略网络进行 N N N次游戏,产生 N N N τ τ τ
    在这里插入图片描述
  3. 利用这 N N N τ τ τ进行梯度上升,调整策略网络的参数:
    在这里插入图片描述在这里插入图片描述
  4. 再如此重复2、3步。

三、Q-Learning

Q-learning 是一种无模型的、基于价值的强化学习算法,旨在通过学习 Q 值函数来找到最优策略。Q-learning 不需要环境的模型(即不知道状态转移概率),它通过与环境交互获得奖励信息来进行学习。

具体推导可参考这篇文章:Q Learning概念、更新、代码实现,文章讲得很直白易懂。

大致过程如下:
在这里插入图片描述

四、Actor-Critic 算法

具体可以看这篇文章,我认为比较好懂:【深度强化学习】(4) Actor-Critic 模型解析,附Pytorch完整代码

Actor网络的优化目标如下:
L a c t o r = 1 N ∑ i N l o g π ∗ ( s t , a t ) ( G t − V ( s t ) ) L_{actor} = \frac{1}{N}\sum_{i}^Nlogπ_*(s_t,a_t)(G_t-V(s_t)) Lactor=N1iNlogπ(st,at)(GtV(st))
我的理解:
(1) π ∗ π_* π代表最优策略, π ∗ ( s t , a t ) π_*(s_t,a_t) π(st,at)表示在状态 s t s_t st选择动作 a t a_t at的概率.
(2) G t G_t Gt表示从时间步𝑡开始的 实际累积回报(Return), V ( s t ) V(s_t) V(st)状态值函数,即从状态 s t s_t st出发按照当前策略 𝜋 所能期望获得的未来累积奖励的估计值。它通常通过一个神经网络来估计,即价值网络(Critic)。
(3) G t − V ( s t ) G_t-V(s_t) GtV(st)反映了当前策略与目标策略之间的差异,是一个 优势函数(Advantage Function) 的估计,即 当前实际获得的回报与模型估计的回报之间的差异。当这个差值大于0时,说明实际回报高于预期,表明选择了一个好的动作;反之,当这个差值小于0时,说明实际回报低于预期,表明选择了一个较差的动作。
(4)在实际代码实现中,很难直接获得真正的实际累积回报 G t G_t Gt(特别是在长期任务或持续任务中,因为需要积累未来所有的奖励)。因此,通常会使用 时序差分(TD)误差作为 G t − V ( s t ) G_t-V(s_t) GtV(st)的近似替代来估计优势函数。时序差分误差的定义:
在这里插入图片描述

Critic网络的优化目标如下:
Critic 网络的损失函数计算公式采用均方误差损失函数,即 TD 误差值的累计平方值的均值
L c r i t i c = 1 N ∑ i N ( G t − V ( s t ) ) L_{critic} = \frac{1}{N}\sum_{i}^N(G_t-V(s_t)) Lcritic=N1iN(GtV(st))

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【c语言】运算符汇总(万字解析)

🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:C语言 目录 前言 一、c语言运算符的分类 二、各运算符的功能及使用 1. 算数运算符 - * / % 2. 位运算符 二进制和进制转换 二进制转十进制 十进制…

【Spring】Cookie与Session

💐个人主页:初晴~ 📚相关专栏:计算机网络那些事 一、Cookie是什么? Cookie的存在主要是为了解决HTTP协议的无状态性问题,即协议本身无法记住用户之前的操作。 "⽆状态" 的含义指的是: 默认情况…

c++习题36-奇数单增序列

目录 一,题目 二,思路 三,代码 一,题目 给定一个长度为N(不大于500)的正整数序列,请将其中的所有奇数取出,并按升序输出。 输入描述 第1行为 N; 第2行为 N 个正整…

java中Scanner的nextLine和next方法

思考&#xff0c;输入1 2 3 4 5加上enter&#xff0c;输出什么 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int[][] m new int[2][2];for (int i 0; i < 2; i) {for (int j 0; j < 2;…

Spring Boot技术中小企业设备管理系统设计与实践

6系统测试 6.1概念和意义 测试的定义&#xff1a;程序测试是为了发现错误而执行程序的过程。测试(Testing)的任务与目的可以描述为&#xff1a; 目的&#xff1a;发现程序的错误&#xff1b; 任务&#xff1a;通过在计算机上执行程序&#xff0c;暴露程序中潜在的错误。 另一个…

重学SpringBoot3-怎样优雅停机

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-怎样优雅停机 1. 什么是优雅停机&#xff1f;2. Spring Boot 3 优雅停机的配置3. Tomcat 和 Reactor Netty 的优雅停机机制3.1 Tomcat 优雅停机3.2 Reac…

使用 Kafka 和 MinIO 实现人工智能数据工作流

MinIO Enterprise Object Store 是用于创建和执行复杂数据工作流的基础组件。此事件驱动功能的核心是使用 Kafka 的 MinIO 存储桶通知。MinIO Enterprise Object Store 为所有 HTTP 请求&#xff08;如 PUT、POST、COPY、DELETE、GET、HEAD 和 CompleteMultipartUpload&#xf…

fpga系列 HDL: 竞争和冒险 02

竞争和冒险 在 Verilog 设计中&#xff0c;竞争&#xff08;race conditions&#xff09;和冒险&#xff08;hazards&#xff09;是数字电路设计中不期望出现的现象&#xff0c;它们会影响电路的正确性。了解并解决竞争和冒险问题对于确保电路稳定运行非常重要。 竞争&#x…

尚硅谷-react教程-求和案例-数据共享(下篇)-完成数据共享-笔记

#1024程序员节&#xff5c;征文# public/index.html <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>redux</title></head><body><div id"root"></div></body> </html&…

MobileNetv2网络详解

背景&#xff1a; MobileNet v1中DW卷积在训练完之后部分卷积核会废掉&#xff0c;大部分参数为“0” MobileNet v2网络是由Google团队在2018年提出的&#xff0c;相比于MobileNet v1网络&#xff0c;准确率更高&#xff0c;模型更小 网络亮点&#xff1a; Inverted Residu…

力扣题86~90

题86&#xff08;中等&#xff09;&#xff1a; python代码 # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def partition(self, head: Optional[Li…

(史上超级清晰带图解)红黑树的实现--C++

文章目录 一、红黑树的概念1、红黑树的规则&#xff1a;2、那红黑树如何确保最长路径不超过最短路径的2倍的&#xff1f;3、红黑树的效率&#xff1a; 二、红黑树的实现1、红黑树的结构2、红黑树的插入2.1、红黑树树插入一个值的大概过程2.2、情况1&#xff1a;变色2.3、情况2&…

大模型低资源部署策略

文章目录 解码效率分析大模型训练后量化方法经验性分析与相关结论由于大模型的参数量巨大,在解码阶段需要占用大量的显存资源,因而在实际应用中的部署代价非常高。在本文中,我们将介绍一种常用的模型压缩方法,即模型量化(ModelQuantization),来减少大模型的显存占用,从…

基于spootboot学生选课系统设计与实现

资料下载 https://download.csdn.net/download/qq_63753925/89888794 https://download.csdn.net/download/qq_63753925/89888793 https://download.csdn.net/download/qq_63753925/89885091 https://download.csdn.net/download/qq_63753925/89882320 摘 要 近年来&#xf…

25届电信保研经验贴(自动化所)

个人背景 学校&#xff1a;中九 专业&#xff1a;电子信息工程 加权&#xff1a;92.89 绩点&#xff1a;3.91/4.0 rank&#xff1a;前五学期rank2/95&#xff0c;综合排名rank1&#xff08;前六学期和综合排名出的晚&#xff0c;实际上只用到了前五学期&#xff09; 科研…

Gateway 统一网关

一、初识 Gateway 1. 为什么需要网关 我们所有的服务可以让任何请求访问&#xff0c;但有些业务不是对外公开的&#xff0c;这就需要用网关来统一替我们筛选请求&#xff0c;它就像是房间的一道门&#xff0c;想进入房间就必须经过门。而请求想要访问微服务&#xff0c;就必须…

STM32主从定时器输出个数、频率可调的脉冲

STM32中发出脉冲一般有两种方式&#xff1a; 1&#xff09;利用定时中断输出脉冲&#xff0c;但是间隔的延时会影响其他主程序的进程&#xff0c;当控制多个电机的时候就非常不可取&#xff1b; 2&#xff09;利用PWM脉宽调制&#xff0c;并通过主从定时器进行设定&#xff0…

微知-Lecroy力科的PCIe协议分析仪型号命名规则(PCIe代,金手指lanes数量)

文章目录 要点主要型号命名规则各代主要产品图片Summit M616 协议分析仪/训练器Summit T516 分析仪Summit T416 分析仪Summit T3-16分析仪Summit T28 分析仪 综述 要点 LeCroy(力科)成立于1964年&#xff0c;是一家专业生产示波器厂家。在美国纽约。一直把重点放在研制改善生产…

安卓14上蓝牙调用SystemProperties.set(),解决找不到SystemProperties.set()的问题

近期遇到一个需求&#xff0c;要在安卓14的蓝牙模块中调用SystemProperties.set()。 安卓14中的蓝牙&#xff0c;和安卓12的版本有较大的不同。它在packages/modules目录下&#xff0c;而安卓12是分散在packages/apps和frameworks/base等目录下&#xff1b;安卓14的蓝牙打包产…

Hash表算法

哈希表 理论知识&#xff08;本文来自于代码随想录摘抄&#xff09;什么是哈希常见的三种哈希结数组&#xff1a;set:map:其他常用方法或者技巧&#xff08;自己总结的&#xff09; 练习题和讲解有效的字母移位词349. 两个数组的交集1. 两数之和454. 四数相加 II15. 三数之和 总…