【强化学习】Q-learning,DQN,SARSA算法介绍

news2025/3/12 19:31:20

【强化学习】Q-learning,DQN,SARSA算法介绍

  • 强化学习算法分类
    • 基于价值的方法
    • 基于策略的方法
    • Actor-Critic方法
  • Q-learning算法
  • DQN算法
    • 强化学习训练数据存在的问题
    • 经验回放机制
    • 备份网络机制
  • Sarsa算法
  • 总结

强化学习算法分类

按学习目标进行分类 可分为基于价值、基于策略、以及Actor-Critic方法

基于价值的方法

  • 基于价值的方法:输出动作的价值,选择价值最高的动作
  • Q-learning,DQN, SARSA均是基于价值的方法

基于策略的方法

  • 基于策略的方法: 学习策略,直接输出下一步动作的概率,根据概率来选取动作(不一定概率最高就会选择该动作,会从整体进行考虑,需要探索其他动作,以便更好地了解环境并找到更优的策略)
    REINFORCE算法是基于策略的方法

Actor-Critic方法

  • Actor根据概率做出动作,Critic根据动作给出价值,是一类结合了策略评估(Critic)和策略改进(Actor)的强化学习算法。它们通过同时学习一个策略函数(Actor)和一个值函数(Critic),从而可以更有效地学习到优秀的策略。
    A2C (Advantage Actor-Critic)、A3C (Asynchronous Advantage Actor-Critic)、DDPG (Deep Deterministic Policy Gradient)、TD3 (Twin Delayed Deep Deterministic Policy Gradient)、PPO (Proximal Policy Optimization)等算法均是Actor-Critic方法

在这里插入图片描述

  • 强化学习的问题定义:给定马尔科夫决策过程𝑀𝐷𝑃 = {𝑆, 𝐴, 𝑃, 𝑅},寻找一个最优策略 π ∗ \pi^* π对任意𝒔 ∈ 𝑺使得𝑽𝝅∗(𝒔)值最大
  • 强化学习求解:在策略优化(策略提升)和策略评估的交替迭代中优化参数

在这里插入图片描述

时序差分(Temporal Difference,TD)方法可以基于策略或价值进行学习,具体取决于所使用的算法和问题设置。
基于策略的时序差分方法: 基于策略的时序差分方法主要关注于学习和优化当前执行的策略。
SARSA(State-Action-Reward-State-Action)是一个经典的基于策略的时序差分学习算法,它通过估计和更新Q值函数来学习一个策略,并在策略改变时进行更新。
SARSA算法根据当前策略选择的动作来更新Q值,从而使得Q值逐步逼近最优Q值(最优策略对应的Q值)。
基于价值的时序差分方法:基于价值的时序差分方法主要关注于学习和估计状态值或动作值函数(价值函数),而不是直接关注策略。
Q-learning是一个经典的基于价值的时序差分学习算法,它通过估计和更新状态-动作值函数Q来学习最优策略,而不需要显式地估计和更新策略。
Q-learning算法根据当前策略选择的最优动作来更新Q值,从而使得Q值逐步逼近最优Q值(最优策略对应的Q值)。

Q-learning算法

在这里插入图片描述

  • 强调一下:Q-learning算法 是model-free方法 ,是基于价值的方法
  • Q-learning算法的过程是学习Q表,各个状态和各个动作对应的Q(s,a),一旦矩阵Q足够接近于收敛状态,智能体便学习到了转移至目标状态的最佳路径
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
【注】:表格式的Q-learning算法通常适用于离散状态空间和离散动作空间的情况
在这里插入图片描述

  • 假如拥有了完美的𝑄(𝑠, 𝑎)表,那么在时刻𝑡时,就可以查出表中𝑄(𝑠𝑡,⋅)值所对应的最优动作,进而得出单个轨迹下最优的动作序列
  • 在实际应用中,Q表随着智能体与环境的交互不断更新和优化,直到达到收敛或者训练结束。训练完成后,智能体可以根据学习到的Q表来选择最优的动作序列,从而执行最优策略以获得最大的长期累积奖励。
  • 需要注意的是,Q表在状态和动作空间均较小且均离散的情况下(表格式Q学习算法)适用,对于大规模、连续状态空间的问题,通常需要借助函数逼近方法来近似Q值函数(DQN)。
    在这里插入图片描述

DQN算法

  • 以f函数拟合𝑄(𝑠,a)即 𝑄(𝑠,a) ≈ f(𝑠,a, ω),ω是该函数的参数
  • DQN可处理状态连续,动作离散的情况,输入是状态
  • 通过函数表示,无论𝒔的维度有多大,最后都可以通过矩阵运算(神经网络)降维输出为单值的𝑸值
  • DQN算法需要预先收集transition数据 ( s t , a t , r t , s t + 1 ) (s_t, a_t, r_t, s_{t+1}) (st,at,rt,st+1)来进行训练,是off-policy方法

对于许多状态连续,动作离散的问题,输入的状态基本都是高维度的,而动作输出可以是低维度的
在这里插入图片描述

在这里插入图片描述

疑问:为什么DQN的输入仅需要状态而不需要动作?
答:
1)Q值函数的学习目标:DQN的目标是学习状态-动作对的价值函数Q(s, a),即在给定状态s下采取动作a的价值。因此,DQN的网络结构被设计为接收状态作为输入,并输出每个动作的Q值,而不需要直接输入动作。
2)动作空间的离散性:
在很多强化学习问题中,动作空间是离散的,可能包含大量的动作选项。将动作作为网络输入会使网络的复杂度急剧增加,不利于训练和收敛。相反,通过仅输入状态,网络可以更专注地学习状态与价值之间的关系,而不必考虑如何直接处理动作空间的复杂性。

DQN算法的框架
在这里插入图片描述

  • 目标值 r + γ max ⁡ a ′ ∈ A Q ( s ′ , a ′ ) r + \gamma \max_{a' \in A}Q(s',a') r+γmaxaAQ(s,a),以其作为真实值 y y y
  • 估计值 y ^ \hat{y} y^,这是DQN主网络对当前状态和所采取动作的Q值的预测

计算参数w关于损失函数的梯度
在这里插入图片描述
在这里插入图片描述

在DQN(Deep Q-Network)算法的损失函数中使用期望值的主要原因是因为训练数据是从经验回放缓冲区中随机采样得到的,这些采样的transition数据是从Agent与环境交互过程中收集得到的,是一种随机采样的过程。因此,我们需要使用期望值来表示损失函数,以期望损失函数能够代表整体的训练数据。

强化学习训练数据存在的问题

  • 经常需要从稀疏、嘈杂和延迟的奖励信号中学习
  • 通常会遇到高度相关的状态序列
  • 数据分布不断随算法学习到的新行为而变化

经验回放机制

DQN解决数据高度相关和数据分布非平稳的问题的两个重要机制:①经验回放机制 + ②随机采样
在这里插入图片描述

  • 经验回放可以避免数据之间的相关性影响到模型的训练
    在这里插入图片描述

备份网络机制

  • DQN算法最终更新的目标是让 Q ω ( s , a ) Q_\omega(s,a) Qω(s,a)逼近 r + γ max ⁡ a ′ ∈ A Q ( s ′ , a ′ ) r + \gamma \max_{a' \in A}Q(s',a') r+γmaxaAQ(s,a)
  • 由于 TD 误差 = r + γ max ⁡ a ′ ∈ A Q ω ( s ′ , a ′ ) − Q ω ( s , a ) = r + \gamma \max_{a' \in A}Q_\omega(s',a') -Q_\omega(s,a) =r+γmaxaAQω(s,a)Qω(s,a),该目标本身就包含神经网络的输出 Q ω ( s ′ , a ′ ) , Q ω ( s , a ) Q_\omega(s',a'),Q_\omega(s,a) Qω(s,a),Qω(s,a)因此在更新网络参数的同时目标也在不断地改变,目标Q网络动态变化,这非常容易造成神经网络训练的不稳定性

在这里插入图片描述

  • 固定目标Q网络(Fixed Target Q-Network): DQN引入了两个神经网络,一个是主要的Q网络用于产生当前状态下的Q值估计,另一个是目标Q网络用于生成目标Q值。

  • 目标Q网络的参数是由主要Q网络的参数定期拷贝得来,但这些参数不会在训练中被更新,而是固定一段时间后再进行更新。这个机制的作用是减少训练中的价值估计偏差,有利于提高训练的稳定性和收敛速度。通过固定目标Q网络,可以减少因为目标Q值的变化而引起的训练不稳定性,从而更好地学习到最优的Q值函数。
    在这里插入图片描述
    DQN算法具体流程:
    在这里插入图片描述
    在这里插入图片描述

Sarsa算法

  • Sarsa算法相较于Q-learning,使用实际采取的动作来更新Q值,而不是使用最佳动作
  • 在学习的过程中只存在一种策略(on-policy), Sarsa算法用这种策略去选取动作,也用这种策略去优化动作
  • 更新公式如下所示:
    Q ( S t , A t ) ← Q ( S t , A t ) + α [ R t + 1 + γ Q ( S t + 1 , A t + 1 ) − Q ( S t , A t ) ] \begin{aligned}Q(S_{t},A_{t})\leftarrow Q(S_{t},A_{t})+\alpha[R_{t+1}+\gamma Q(S_{t+1},A_{t+1})-Q(S_{t},A_{t})]\end{aligned} Q(St,At)Q(St,At)+α[Rt+1+γQ(St+1,At+1)Q(St,At)]
  • Sarsa属于单步更新算法,也就是说每执行一个动作,就会更新一次价值和策略。如果不进行单步更新,而是采取n步更新或者回合更新,即在执行n步之后再来更新价值和策略,这样就得到了n步Sarsa(n-step Sarsa)。
    在这里插入图片描述

在这里插入图片描述

  • Sarsa与Q-learning均为model-free方法,且均为时序差分的方法
  • Sarsa 是典型的在线策略算法,而 Q-learning 是典型的离线策略算法
  • 判断二者类别的一个重要手段是看计算时序差分的价值目标的数据是否来自当前的策略

在这里插入图片描述

总结

  • Q-learning更新方式: Q ( s t , a t ) ← Q ( s t , a t ) + α [ r t + γ max ⁡ a Q ( s t + 1 , a ) − Q ( s t , a t ) ] Q(s_t,a_t) \larr Q(s_t,a_t) + \alpha[r_t + \gamma \max_{a} Q(s_{t+1},a) - Q(s_t,a_t)] Q(st,at)Q(st,at)+α[rt+γmaxaQ(st+1,a)Q(st,at)]
  • 单步Sarsa更新方式: Q ( s t , a t ) ← Q ( s t , a t ) + α [ r t + γ Q ( s t + 1 , a t + 1 ) − Q ( s t , a t ) ] Q(s_t,a_t) \larr Q(s_t,a_t) + \alpha[r_t + \gamma Q(s_{t+1},a_{t+1}) - Q(s_t,a_t)] Q(st,at)Q(st,at)+α[rt+γQ(st+1,at+1)Q(st,at)]
  • 多步Sarsa更新方式: Q ( s t , a t ) ← Q ( s t , a t ) + α [ r t + γ r t + 1 + … + γ n Q ( s t + n , a t + n ) − Q ( s t , a t ) ] Q(s_t,a_t) \larr Q(s_t,a_t) + \alpha[r_t +\gamma r_{t+1}+\ldots + \gamma^n Q(s_{t+n},a_{t+n}) - Q(s_t,a_t)] Q(st,at)Q(st,at)+α[rt+γrt+1++γnQ(st+n,at+n)Q(st,at)]
  • DQN的Loss计算方式: L ( w ) = E s [ ( r + γ m a x a ′ Q ( s ′ , a ′ , w ) − Q ( s , a , w ) ) 2 ] L(w)=\mathbb{E}_{s}\left[(\mathrm{r}+\gamma max_{a'}Q(s^{\prime},a^{\prime},w)-Q(s,a,w))^{2}\right] L(w)=Es[(r+γmaxaQ(s,a,w)Q(s,a,w))2]

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

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

相关文章

信息化赋能:干部监督工作的创新与实践

随着信息技术的迅猛发展,信息化手段在干部监督工作中的应用越来越广泛,为提升监督工作的效率和精准度提供了有力支持。以下是如何利用信息化手段扎实推进干部监督工作的几点建议: 一、搭建信息化平台,实现数据统一管理 要扎实推…

【unity小技巧】unity读excel配置表操作,excel转txt文本,并读取txt文本内容,实例说明

文章目录 前言下载资源库导入资源库excel转txt文本读取txt内容 读取配置表所有的数据,并使用结束语 前言 关于unity读excel配置表操作,其实之前就有用过,这里只是单独整理出这部分知识,后续好使用。 感兴趣可以去看看&#xff1a…

【408精华知识】时钟周期、机器周期、总线周期、指令周期、存取周期还傻傻分不清?

在做题时,我们经常能遇到关于“周期”的表述,比如时钟周期、机器周期、总线周期、指令周期、存取周期,类似的表述让我们很容易迷茫,那么接下来我们就看看它们到底是什么、有什么区别? 周期特点时钟周期也称为CPU时钟周…

太速科技-基于FPGA Spartan6 的双路光纤PCIe采集卡(2路光纤卡)

基于FPGA Spartan6 的双路光纤PCIe采集卡(2路光纤卡) 1、板卡概述   板卡采用xilinx Spartan6系列芯片,支持 PCI Express Base Specification 1.1 x1。内含丰富的逻辑资源和存储单元,板卡FPGA外接双片32M*16bit DDR2缓存器,支持乒乓操作。…

【Linux进程篇】父子进程fork函数||进程生死轮回状态||僵尸进程与孤儿进程

W...Y的主页 😊 代码仓库分享💕 前言:上篇文章中我们认识了进程,可执行程序在内存中加载运行被称作进程,而操作系统是通过给每一个可执行程序创建一个PCB来管理进程的。并且学习了一些查看进程的指令,认识…

利用机器非学习进行后门攻击

信息安全是一个古老的计算机领域。许多 80 后还记得自己小时候经常听到的瑞星杀毒和江民杀毒软件。这些 90 年代火遍大江南北的信息安全工具,至今仍然影响着使用互联网和信息技术的千家万户。随着人工智能的兴起和普及,有越来越多的商业软件使用了人工智…

5.2网安学习第五阶段第二周回顾(个人学习记录使用)

本周重点 ①HIDS的基本应用(suricata) ②Suricata的基本应用 ③Suricata的流量检测 ④Suricata的https流量检测 ⑤利用Elastic整合Suricata日志 ⑥利用Wazuh对Suricata主动响应 本周主要内容 ①HIDS的基本应用(suricata) 1、NIDS 1、定义:网络入侵检测系统…

【软件设计师】——6.程序设计语言与语言处理程序

目录 6.1基本概念 6.2编译与解释 6.3文法 6.4有限自动机 6.5正规式 6.6 表达式 6.7 传值与引用 6.8 数据类型与程序控制结构 6.9 程序语言特点 6.10 Java程序设计 6.11 C 6.12 python 6.1基本概念 语句:高级程序设计语言中描述程序的运算步骤、控制结构、…

vue3父组件改变 子组件不改变(uniapp)

项目中遇到了这么个问题 场景:封装select组件,通过子组件选中后传递值给父组件,父组件需要回显这个值(这里使用 defineProps和defineEmits就可以实现,或者直接使用defineModel也可以实现,但是uniapp目前不…

语音深度鉴伪识别项目实战:基于深度学习的语音深度鉴伪识别算法模型(一)音频数据编码与预处理

前言 深度学习技术在当今技术市场上面尚有余力和开发空间的,主流落地领域主要有:视觉,听觉,AIGC这三大板块。目前视觉板块的框架和主流技术在我上一篇基于Yolov7-LPRNet的动态车牌目标识别算法模型已有较为详细的解说。与AIGC相关…

vue3父子组件通信,子组件修改父组件传过来的值

一、第一种,通过props方式传值: 父组件: 父组件调用子组件Child1时通过 :msg2 "msg2"把msg2的数据传给子组件,并且通过自定义事件接收子组件的emit通知,用来修改父组件的msg2数据。 源码: &l…

借助 CloudFlare 增强站点内容保护防采集

今天在一位站长的帮助下实测了 CloudFlare 增强站点内容保护实现防采集的功能,效果那是杠杠的,如果您的站点原创内容比较多的话,明月强烈建议试试 CloudFlare 这个内容保护,无论是 WordPress 、Typecho 都有非常好的效果,并且几乎没有任何误伤,搜索引擎爬虫蜘蛛更是不会影…

制作ARM架构 docker镜像

docker简介 docker客户端 Docker 客户端有两种替代选项:名为 docker 的命令行应用程序或名为 Docker Desktop 的基于图形用户界面 (GUI) 的应用程序。 CLI 和 Docker Desktop 均与 Docker 服务器交互。 来自 CLI 或 Docker Desktop 的 docker 命令使用 Docker REST API 将指…

Java与Gradle 的版本兼容性矩阵验证

1.下面这个表格显示了java和gradle的版本兼容性情况 2.根据上面这份表格理解,是不是java17就需要gradle 7.3之后来支持。用android studio 来试验一下: jdk选择: build成功: 说明JDK17并不是一定需要Gradle 7.3之后版本 3.使用JDK1.8、JDK11验证一下Grade 7.2是否可…

如何解决SEO排名上升后遭遇的攻击问题

随着搜索引擎优化(SEO)策略的成功实施,网站排名的提升往往会引来更多的流量与关注,但同时也可能成为恶意攻击的目标,包括DDoS攻击、SQL注入、XSS攻击等。这些攻击不仅影响用户体验,还可能导致网站降权甚至被…

报名倒计时!「飞天技术沙龙-CentOS 迁移替换专场」参会指南

为帮助广大用户诊断 CentOS 迁移替换过程中的疑难杂症,「飞天技术沙龙-CentOS 迁移替换专场」将于 5 月 29 日(周三)在北京举办,将围绕如何在确保服务的连续性和稳定性的前提下实现平滑迁移及如何最大限度地利用现有资源前提下确保…

沃飞携AE200真机亮相澳门,全方位赋能城市低空出行

5月22日-25日,第四届BEYOND国际科技创新博览会(BEYOND Expo 2024)在澳门盛大举行。吉利沃飞长空携旗下全自研产品AE200真机亮相,吸引了现场众多领导嘉宾以及媒体、观众的关注。 作为亚洲顶尖的年度科技盛会,本届BEYOND…

【C++】:vector容器的基本使用

目录 🍒1,vector的介绍🍒2,vector的使用🐯2.1 vector的构造🦁2.2 vector iterator 的使用🌽2.3 vector 空间增长问题🍓2.4 vector 增删查改🐯2.5 vector 访问及遍历&…