深度强化学习(四)SARSA

深度强化学习(四)SARSA算法

一.SARSA

假设状态空间 S \mathcal{S} S 和动作空间 A \mathcal{A} A 都是有限集, 即集合中元素数量有限。比如, S \mathcal{S} S 中一共有 3 种状态, A \mathcal{A} A 中一共有 4 种动作。那么动作价值函数 Q π ( s , a ) Q_\pi(s, a) Qπ(s,a) 可以表示为一个 3 × 4 3 \times 4 3×4 的表格。该表格与一个策略函数 π ( a ∣ s ) \pi(a \mid s) π(as) 相关联; 如果 π \pi π 发生变化,表格 Q π Q_\pi Qπ 也会发生变化。

我们用表格 q q q 近似 Q π Q_\pi Qπ 。首先初始化 q q q, 可以让它是全零的表格。然后用表格形式的 SARSA 算法更新 q q q,每次更新表格的一个元素。最终 q q q 收敛到 Q π Q_\pi Qπ

SARSA 算法由下面的贝尔曼方程推导出 :
Q π ( s t , a t ) = E S t + 1 , A t + 1 [ R t + γ ⋅ Q π ( S t + 1 , A t + 1 ) ∣ S t = s t , A t = a t ] Q_\pi\left(s_t, a_t\right)=\mathbb{E}_{S_{t+1}, A_{t+1}}\left[R_t+\gamma \cdot Q_\pi\left(S_{t+1}, A_{t+1}\right) \mid S_t=s_t, A_t=a_t\right] Qπ(st,at)=ESt+1,At+1[Rt+γQπ(St+1,At+1)St=st,At=at]

我们对贝尔曼方程左右两边做近似:

  • 方程左边的 Q π ( s t , a t ) Q_\pi\left(s_t, a_t\right) Qπ(st,at) 可以近似成 q ( s t , a t ) 。 q ( s t , a t ) q\left(s_t, a_t\right) 。 q\left(s_t, a_t\right) q(st,at)q(st,at) 是表格在 t t t 时刻对 Q π ( s t , a t ) Q_\pi\left(s_t, a_t\right) Qπ(st,at)做出的估计。
  • 方程右边的期望是关于下一时刻状态 S t + 1 S_{t+1} St+1 和动作 A t + 1 A_{t+1} At+1 求的。给定当前状态 s t s_t st, 智能体执行动作 a t a_t at, 环境会给出奖励 r t r_t rt 和新的状态 s t + 1 s_{t+1} st+1 。然后基于 s t + 1 s_{t+1} st+1 做随机抽样,得到新的动作
    a ~ t + 1 ∼ π ( ⋅ ∣ s t + 1 ) . \tilde{a}_{t+1} \sim \pi\left(\cdot \mid s_{t+1}\right) . a~t+1π(st+1).

用观测到的 r t 、 s t + 1 r_t 、 s_{t+1} rtst+1 和计算出的 a ~ t + 1 \tilde{a}_{t+1} a~t+1 对期望做蒙特卡洛近似, 得到:
r t + γ ⋅ Q π ( s t + 1 , a ~ t + 1 ) . r_t+\gamma \cdot Q_\pi\left(s_{t+1}, \tilde{a}_{t+1}\right) . rt+γQπ(st+1,a~t+1).

  • 进一步把公式 (5.1) 中的 Q π Q_\pi Qπ 近似成 q q q, 得到
    y ^ t ≜ r t + γ ⋅ q ( s t + 1 , a ~ t + 1 ) . \widehat{y}_t \triangleq r_t+\gamma \cdot q\left(s_{t+1}, \tilde{a}_{t+1}\right) . y trt+γq(st+1,a~t+1).

把它称作 TD 目标。它是表格在 t + 1 t+1 t+1 时刻对 Q π ( s t , a t ) Q_\pi\left(s_t, a_t\right) Qπ(st,at) 做出的估计。
q ( s t , a t ) q\left(s_t, a_t\right) q(st,at) y ^ t \widehat{y}_t y t 都是对动作价值 Q π ( s t , a t ) Q_\pi\left(s_t, a_t\right) Qπ(st,at) 的估计。由于 y ^ t \widehat{y}_t y t 部分基于真实观测到的奖励 r t r_t rt,我们认为 y ^ t \widehat{y}_t y t 是更可靠的估计, 所以鼓励 q ( s t , a t ) q\left(s_t, a_t\right) q(st,at) 趋近 y ^ t \widehat{y}_t y t 。更新表格 ( s t , a t ) \left(s_t, a_t\right) (st,at) 位置上的元素:
q ( s t , a t ) ← ( 1 − α ) ⋅ q ( s t , a t ) + α ⋅ y ^ t . q\left(s_t, a_t\right) \leftarrow(1-\alpha) \cdot q\left(s_t, a_t\right)+\alpha \cdot \widehat{y}_t . q(st,at)(1α)q(st,at)+αy t.

这样可以使得 q ( s t , a t ) q\left(s_t, a_t\right) q(st,at) 更接近 y ^ t \widehat{y}_t y t 。 SARSA 算法用到了这个五元组: ( s t , a t , r t , s t + 1 , a ~ t + 1 ) \left(s_t, a_t, r_t, s_{t+1}, \tilde{a}_{t+1}\right) (st,at,rt,st+1,a~t+1) 。SARSA 算法学到的 q q q 依赖于策略 π \pi π, 这是因为五元组中的 a ~ t + 1 \tilde{a}_{t+1} a~t+1 是根据 π ( ⋅ ∣ s t + 1 ) \pi\left(\cdot \mid s_{t+1}\right) π(st+1) 抽样得到的。

训练流程:设当前表格为 q now  q_{\text {now }} qnow , 当前策略为 π now  \pi_{\text {now }} πnow  每一轮更新表格中的一个元素,把更新之后的表格记作 q new  q_{\text {new }} qnew 

  1. 观测到当前状态 s t s_t st, 根据当前策略做抽样: a t ∼ π now  ( ⋅ ∣ s t ) a_t \sim \pi_{\text {now }}\left(\cdot \mid s_t\right) atπnow (st)
  2. 把表格 q now  q_{\text {now }} qnow  中第 ( s t , a t ) \left(s_t, a_t\right) (st,at) 位置上的元素记作:
    q ^ t = q now  ( s t , a t ) . \widehat{q}_t=q_{\text {now }}\left(s_t, a_t\right) . q t=qnow (st,at).
  3. 智能体执行动作 a t a_t at 之后, 观测到奖励 r t r_t rt 和新的状态 s t + 1 s_{t+1} st+1
  4. 根据当前策略做抽样: a ~ t + 1 ∼ π now  ( ⋅ ∣ s t + 1 ) \tilde{a}_{t+1} \sim \pi_{\text {now }}\left(\cdot \mid s_{t+1}\right) a~t+1πnow (st+1) 。注意, a ~ t + 1 \tilde{a}_{t+1} a~t+1 只是假想的动作, 智能体不予执行。
  5. 把表格 q now  q_{\text {now }} qnow  中第 ( s t + 1 , a ~ t + 1 ) \left(s_{t+1}, \tilde{a}_{t+1}\right) (st+1,a~t+1) 位置上的元素记作:
    q ^ t + 1 = q now  ( s t + 1 , a ~ t + 1 ) . \widehat{q}_{t+1}=q_{\text {now }}\left(s_{t+1}, \tilde{a}_{t+1}\right) . q t+1=qnow (st+1,a~t+1).
  6. 计算 TD 目标和 TD 误差:
    y ^ t = r t + γ ⋅ q ^ t + 1 , δ t = q ^ t − y ^ t . \widehat{y}_t=r_t+\gamma \cdot \widehat{q}_{t+1}, \quad \delta_t=\widehat{q}_t-\widehat{y}_t . y t=rt+γq t+1,δt=q ty t.
  7. 更新表格中 ( s t , a t ) \left(s_t, a_t\right) (st,at) 位置上的元素:
    q new  ( s t , a t ) ← q now  ( s t , a t ) − α ⋅ δ t . q_{\text {new }}\left(s_t, a_t\right) \leftarrow q_{\text {now }}\left(s_t, a_t\right)-\alpha \cdot \delta_t . qnew (st,at)qnow (st,at)αδt.
  8. 用某种算法更新策略函数。该算法与 SARSA 算法无关。

二.神经网络形式的SARSA

价值网络:如果状态空间 S \mathcal{S} S 是无限集, 那么我们无法用一张表格表示 Q π Q_\pi Qπ, 否则表格的行数是无穷。一种可行的方案是用一个神经网络 q ( s , a ; w ) q(s, a ; \boldsymbol{w}) q(s,a;w) 来近似 Q π ( s , a ) Q_\pi(s, a) Qπ(s,a); 理想情况下,
q ( s , a ; w ) = Q π ( s , a ) , ∀ s ∈ S , a ∈ A q(s, a ; \boldsymbol{w})=Q_\pi(s, a), \quad \forall s \in \mathcal{S}, a \in \mathcal{A} q(s,a;w)=Qπ(s,a),sS,aA
训练流程 : 设当前价值网络的参数为 w n o w \boldsymbol{w}_{\mathrm{now}} wnow, 当前策略为 π n o w \pi_{\mathrm{now}} πnow 每一轮训练用五元组 ( s t , a t , r t , s t + 1 , a ~ t + 1 ) \left(s_t, a_t, r_t, s_{t+1}, \tilde{a}_{t+1}\right) (st,at,rt,st+1,a~t+1) 对价值网络参数做一次更新。

  1. 观测到当前状态 s t s_t st, 根据当前策略做抽样: a t ∼ π now  ( ⋅ ∣ s t ) a_t \sim \pi_{\text {now }}\left(\cdot \mid s_t\right) atπnow (st)

  2. 用价值网络计算 ( s t , a t ) \left(s_t, a_t\right) (st,at) 的价值:
    q ^ t = q ( s t , a t ; w now  ) . \widehat{q}_t=q\left(s_t, a_t ; \boldsymbol{w}_{\text {now }}\right) . q t=q(st,at;wnow ).

  3. 智能体执行动作 a t a_t at 之后, 观测到奖励 r t r_t rt 和新的状态 s t + 1 s_{t+1} st+1

  4. 根据当前策略做抽样: a ~ t + 1 ∼ π n o w ( ⋅ ∣ s t + 1 ) \tilde{a}_{t+1} \sim \pi_{\mathrm{now}}\left(\cdot \mid s_{t+1}\right) a~t+1πnow(st+1) 。注意, a ~ t + 1 \tilde{a}_{t+1} a~t+1 只是假想的动作, 智能体不予执行。

  5. 用价值网络计算 ( s t + 1 , a ~ t + 1 ) \left(s_{t+1}, \tilde{a}_{t+1}\right) (st+1,a~t+1) 的价值:
    q ^ t + 1 = q ( s t + 1 , a ~ t + 1 ; w now  ) . \widehat{q}_{t+1}=q\left(s_{t+1}, \tilde{a}_{t+1} ; \boldsymbol{w}_{\text {now }}\right) . q t+1=q(st+1,a~t+1;wnow ).

  6. 计算 TD 目标和 TD 误差:
    y ^ t = r t + γ ⋅ q ^ t + 1 , δ t = q ^ t − y ^ t . \widehat{y}_t=r_t+\gamma \cdot \widehat{q}_{t+1}, \quad \delta_t=\widehat{q}_t-\widehat{y}_t . y t=rt+γq t+1,δt=q ty t.

  7. 对价值网络 q q q 做反向传播, 计算 q q q 关于 w \boldsymbol{w} w 的梯度: ∇ w q ( s t , a t ; w now  ) \nabla_{\boldsymbol{w}} q\left(s_t, a_t ; \boldsymbol{w}_{\text {now }}\right) wq(st,at;wnow )

  8. 更新价值网络参数:
    w new  ← w now  − α ⋅ δ t ⋅ ∇ w q ( s t , a t ; w now  ) . \boldsymbol{w}_{\text {new }} \leftarrow \boldsymbol{w}_{\text {now }}-\alpha \cdot \delta_t \cdot \nabla_{\boldsymbol{w}} q\left(s_t, a_t ; \boldsymbol{w}_{\text {now }}\right) . wnew wnow αδtwq(st,at;wnow ).

  9. 用某种算法更新策略函数。该算法与 SARSA 算法无关。

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

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

相关文章

ida pro 查看简易 Android .so 文件伪代码

参考: IDA Pro 反汇编器使用详解,适合逆向新人和老人的权威指南(一)-CSDN博客 注意,这篇只是我的简单记录,要学习详细使用,请参考其他大佬的。 让我们打开神器 IDA 直接把需要的文件拖到 IDA …

3.1_2 覆盖与交换

3.1_2 覆盖与交换 (一)覆盖技术 早期的计算机内存很小,比如IBM 推出的第一台PC机最大只支持1MB大小的内存。因此经常会出现内存大小不够的情况。 后来人们引入了覆盖技术,用来解决“程序大小超过物理内存总和”的问题。 覆盖技术的…

工业智能网关的网关模式和交换机模式有哪些区别

工业智能网关主要用以实现工业物联网络中不同设备和系统之间的通信,工业智能网关常见的两种工作模式是网关模式和交换机模式,在功能和应用场景上存在显著差异,本篇就为大家简单介绍一下两者之间的主要区别: 1、网关模式 工业智能…

String 底层为什么使用 final 修饰?

1、典型回答 对于这个问题,Java之父詹姆斯 高斯林(James Gosling) 是这样回答的: I would use an immutable whenever I can 翻译为中文:只要允许,我就会使用不可变对象 而作为普通人的我们来说&#xff0…

有一说一,CSPM真的是垃圾证书吗?

CSPM是什么? CSPM——项目管理专业人员能力评价,是中国人自己的一套项目管理专业人士的评价指南,符合中国国情且符合中国未来发展的一套项目刊专业人员能力评价的标准。 PMP项目管理专业人士资格认证,由美国项目管理协会——PMI…

根到叶路径问题:遍历框架 + 前中后序位置 + 路径记录 + 叶子节点处理

根到叶路径问题 257. 二叉树的所有路径129. 求根节点到叶节点数字之和112. 路径总和113. 路径总和 II437. 路径总和 III988. 从叶结点开始的最小字符串124. 二叉树中的最大路径和 257. 二叉树的所有路径 问题描述:找出所有从根节点到叶子节点的路径,并以…

ATFX汇市:美国2月CPI数据来袭,高通胀问题或进一步缓解

ATFX汇市:今日20:30,美国劳工部将公布2月未季调核心CPI年率数据,前值为3.9%,预期值3.7%,预期将下降0.2个百分点。历史数据看,美国核心CPI年率处于快速下降状态,去年3月份数据仍高达5.6%&#xf…

社交创新的先锋:探秘Facebook背后的故事与智慧

起源与初创阶段 Facebook的故事始于2004年,由马克扎克伯格(Mark Zuckerberg)、埃迪华索伦(Eduardo Saverin)、安德鲁麦克卡拉姆(Andrew McCollum)、克里斯休斯(Chris Hughes&#x…

prometheus 原理(架构,promql表达式,描点原理)

大家好,我是蓝胖子,提到监控指标,不得不说prometheus,今天这篇文章我会对prometheus 的架构设计,promql表达式原理和监控图表的绘图原理进行详细的解释。来让大家对prometheus的理解更加深刻。 架构设计 先来看看&am…

Vue3全家桶 - Vue3 - 【4】侦听器

侦听器 一、 组合式API: 1.1 watch()函数 创建侦听器: 语法:// 先导入 watch 函数 import { watch } from vue watch(source, callback, options)source: 需要侦听的数据源,可以是 ref(包括计算属性)、一个响应式对…

从监控到稳定性可观测:从问题响应到预防的技术变革

从单体架构到集群架构再到微服务架构,业务越来越庞大,也越来越复杂。每一次架构的升级,在提升了业务吞吐量的同时,必然会带来更大的复杂度。云原生时代背景下,微服务、Service Mesh、 Serverless 等新技术的出现&#…

sql面试题21:营销带货销量分析

题目大概意思: 找出网红带来的订单号和销售额(销售额是该订单的,比如凑单),满足是优惠码是1的,B类商品 数据表两个,分别是订单和品类 CREATE TABLE 订单 (订单号 VARCHAR(512),商品号 VARCH…

LED线性恒流控制芯片两段/三段开关调光/调色:SM2223E

LED线性恒流控制芯片的开关调光/调色功能可以通过以下两种方式实现: LED线性恒流控制芯片的开关调光/调色功能 1. 两段调光/调色:通过开启或关闭电源开关,可以调节LED灯的亮度或色温,从而改变输出电流的大小。这种方式适用于需要…

Redis及其数据类型和常用命令(一)

Redis 非关系型数据库,不需要使用sql语句对数据库进行操作,而是使用命令进行操作,在数据库存储时使用键值对进行存储,应用场景广泛,一般存储访问频率较高的数据。 一般关系型数据库(使用sql语句进行操作的…

ChatGPT引领智能对话:微信小程序的新潮玩法

1.引言 ChatGPT是由OpenAI开发的基于深度学习的自然语言处理模型,它在人工智能领域具有重要的影响力。ChatGPT基于大规模的文本数据进行训练,能够生成高质量的自然语言文本,包括对话、文章等。它的影响力主要体现在以下几个方面:…

系统及其分类

系统定义 系统:指若干相互关联的事物组合而成的具有特定功能的整体。 系统的基本作用:对输入信号进行加工和处理,将其转换为所需要的输出信号。 系统分类 系统的分类错综复杂,主要考虑其数学模型的差异来划分不同类型。主要分为…

【HarmonyOS】鸿蒙开发之工具安装与工程项目简介——第1章

鸿蒙开发工具包下载与使用 鸿蒙开发工具包下载 下载deveco studio开发工具包 系统要求: Windows 操作系统:Windows 10/11 64 位 内存:8GB 及以上 硬盘:100GB 及以上 分辨率:1280*800 像素及以上macOS 操作系统:mac…

leetcode代码记录(有序数组两数之和

目录 1. 题目:2. 我的代码:小结: 1. 题目: 给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。 函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numb…

【办公类-22-13】周计划系列(5-5)“周计划-05 上传周计划png“ (2024年调整版本)

作品展示——将docx 转PDF转png,保留第一张图片 背景需求: 把周计划内容初步替换后,获得了19周的周计划教案的docx 需要把周计划第一页的反思内容删除,,然后把第一页横版截图上传班级主页。 需求:周计划do…

开机一直提示dll文件缺失的修复方法,轻松解决弹窗dll问题

当我们在启动计算机并进入操作系统的过程中,如果遇到了开机即刻弹出窗口提示“dll文件缺失”的情况,这究竟是怎么一回事呢?首先,我们需要理解“dll”是Dynamic Link Library(动态链接库)的缩写,…