基于时序差分的无模型强化学习:Q-learning 算法详解

news2024/11/15 8:46:39

目录

  • 一、无模型强化学习中的时序差分方法与Q-learning
    • 1.1 时序差分法
    • 1.2 Q-learning算法
        • 状态-动作值函数(Q函数)
        • Q-learning 的更新公式
        • Q-learning 算法流程
        • Q-learning 的特点
    • 1.3 总结

一、无模型强化学习中的时序差分方法与Q-learning

在这里插入图片描述

  动态规划算法依赖于已知的马尔可夫决策过程(MDP),在环境的状态转移概率和奖励函数完全明确的情况下,智能体无需与环境进行实际交互,即可通过解析方法计算出最优策略或价值函数。然而,现实中的大多数强化学习问题通常无法明确环境的状态转移模型或奖励函数,这使得动态规划在许多复杂场景下难以应用。为了应对这一局限,无模型强化学习(model-free reinforcement learning)应运而生,智能体通过与环境的交互采样数据,并依据采样结果进行学习,从而实现策略优化。无模型强化学习不依赖于对环境的精确建模,这使其在复杂的物理环境或电子游戏等应用场景中具有更广泛的适用性。

  在无模型强化学习中,基于时序差分(temporal difference, TD)的方法得到了广泛的应用,代表性算法包括 Sarsa 和 Q-learning。它们通过在实际交互过程中逐步更新策略与价值函数,具备在线和离线策略学习的能力。在线策略学习依赖于当前策略的样本更新,而离线策略学习则通过经验回放池反复利用历史样本,减少采样的复杂度并提高学习效率。Q-learning 是其中最具代表性的算法之一,其核心思想是通过最大化状态-动作值函数(Q函数),逐步逼近最优策略,即使在策略不断变化的情况下,仍能有效地收敛至最优策略。

1.1 时序差分法

  时序差分方法是一种用于估计策略价值函数的有效技术,它结合了蒙特卡洛(Monte Carlo)方法和动态规划(Dynamic Programming)思想的优势。时序差分方法与蒙特卡洛方法的相似之处在于,它能够从与环境的交互数据中学习,而不需要事先知道环境的状态转移模型。与动态规划方法的相似之处则在于,它通过贝尔曼方程的思想,利用后续状态的价值估计来更新当前状态的价值估计。

  蒙特卡洛方法对价值函数的增量更新可以表示为:

V ( S t ) ⟵ V ( S t ) + α ( G t − V ( S t ) ) V(S_{t})\longleftarrow V(S_{t})+\alpha (G_{t}-V(S_{t})) V(St)V(St)+α(GtV(St))

  其中, G t G_{t} Gt是在时间步 t t t时的实际回报, α \alpha α是步长(或学习率)。在蒙特卡洛方法中,更新只能在整个序列结束之后进行,因为 G t G_{t} Gt只有在序列终止时才能计算。

  然而,时序差分方法不需要等到整个序列结束,而是可以在每个时间步后立即更新。时序差分算法根据当前状态 S t S_{t} St和下一状态 S t + 1 S_{t+1} St+1的价值估计来更新当前状态的价值估计,其增量更新公式为:

V ( S t ) ⟵ V ( S t ) + α ( R t + 1 + γ V ( S t + 1 ) − V ( S t ) ) V(S_{t})\longleftarrow V(S_{t})+\alpha (R_{t+1}+\gamma V(S_{t+1})-V(S_{t})) V(St)V(St)+α(Rt+1+γV(St+1)V(St))

  其中, R t + 1 R_{t+1} Rt+1是在时间步 t + 1 t+1 t+1时获得的即时奖励, γ \gamma γ是折扣因子,且 V ( S t + 1 ) V(S_{t+1}) V(St+1)是下一状态 S t + 1 S_{t+1} St+1的价值估计。公式中的

δ t = R t + 1 + γ V ( S t + 1 ) − V ( S t ) \delta_{t} = R_{t+1}+\gamma V(S_{t+1})-V(S_{t}) δt=Rt+1+γV(St+1)V(St)

  被称为时序差分误差(temporal difference error, TD error),它反映了当前价值估计与通过后续状态推断的修正之间的差异。时序差分算法将这一误差乘以步长 α \alpha α后, 作为更新当前状态价值的增量。

  可以用下一状态的价值估计 V ( S t + 1 ) V(S_{t+1}) V(St+1)) 来代替真实的回报 G t G_{t} Gt,这一点与蒙特卡洛方法的区别在于:蒙特卡洛方法需要使用整个序列的回报来更新价值,而时序差分方法则利用近似的未来价值估计来更新。

  因此,时序差分方法在每一步与环境的交互中,即可通过上述公式进行状态价值估计的更新。尽管时序差分方法依赖于当前状态的估计值,但在适当的条件下可以证明其收敛性,即它能够收敛到当前策略下的真实价值函数,尽管具体的证明在此不作展开。

1.2 Q-learning算法

  Q-learning 是一种无模型(model-free)的强化学习算法,旨在通过学习状态-动作值函数(Q函数),找到在给定环境中执行任务的最优策略。它的核心思想是通过直接迭代近似贝尔曼最优方程,从而逐步学习最优的动作选择策略。Q-learning 属于离线策略(off-policy)方法,这意味着在学习的过程中,它所使用的更新策略可以与实际执行过程中所采用的行为策略不同。Q-learning 不需要对环境的状态转移概率或奖励函数有任何先验知识,它仅仅通过与环境交互、采样到的经验进行学习。这个特性使得 Q-learning 适用于复杂环境中的学习任务,如游戏中的智能体控制或机器人导航等场景。

状态-动作值函数(Q函数)

  在 Q-learning 中,目标是学习一个状态-动作值函数 Q ( s , a ) Q(s,a) Q(s,a),它表示在状态 s s s下选择动作 a a a后所能获得的预期累积奖励。该累计奖励考虑了未来的所有可能回报,折扣因子 γ \gamma γ用来平衡即时奖励和未来奖励:

Q ( s , a ) = E [ R t + γ R t + 1 + γ 2 R t + 2 + . . . ] Q(s,a)= \mathbb{E}[R_{t}+\gamma R_{t+1}+\gamma^{2}R_{t+2}+...] Q(s,a)=E[Rt+γRt+1+γ2Rt+2+...]

  通过学习 Q ( s , a ) Q(s,a) Q(s,a),智能体能够确定每个状态下的最优动作,并以此找到最优策略。

Q-learning 的更新公式

  Q-learning 的更新基于贝尔曼最优方程,该方程指出,对于任意状态 s s s和动作 a a a,该状态-动作值应当等于在当前状态执行该动作后所得到的即时奖励,加上进入下一状态后所能获得的最大未来奖励的折扣值。其更新公式为:

Q ( s t , a t ) ⟵ Q ( s t , a t ) + α ( R t + 1 + γ m a x a ′ Q ( s t + 1 , a ′ ) − Q ( s t , a t ) ) Q(s_{t},a_{t})\longleftarrow Q(s_{t},a_{t})+\alpha (R_{t+1}+\gamma \underset{a^{'}}{max} Q(s_{t+1},a^{'})-Q(s_{t},a_{t})) Q(st,at)Q(st,at)+α(Rt+1+γamaxQ(st+1,a)Q(st,at))

  在该公式中:

  • Q ( s t , a t ) Q(s_{t},a_{t}) Q(st,at)表示当前状态 s t s_{t} st和动作 a t a_{t} at Q Q Q值。
  • R t + 1 R_{t+1} Rt+1是智能体在执行动作 a t a_{t} at后得到的即时奖励。
  • γ \gamma γ是折扣因子,范围在[0,1]之间,表示对未来奖励的重视程度。
  • α \alpha α是学习率,控制更新的步幅大小,范围在[0,1]之间。
  • m a x a ′ Q ( s t + 1 , a ′ ) \underset{a^{'}}{max} Q(s_{t+1},a^{'}) amaxQ(st+1,a)表示智能体在下一状态 s t + 1 s_{t+1} st+1所能获得的最大未来奖励。

  这个公式表示,Q-learning 使用当前的奖励和下一步的最优 Q 值来更新当前状态-动作对的估计值。通过反复应用这一更新,Q-learning 最终能够逼近最优的 Q 函数。

Q-learning 算法流程
  1. 初始化

    • 对每个状态 s s s和动作 a a a,初始化 Q ( s , a ) Q(s,a) Q(s,a)为任意值(通常为0或小随机值)。
    • 设定学习率 α \alpha α、折扣因子 γ \gamma γ,以及探索率 ϵ \epsilon ϵ(用于 ϵ − \epsilon- ϵ贪婪策略)。
  2. 算法主循环

    • for 每一轮(episode):

      1. 初始化起始状态 s 0 s_{0} s0

      2. for 每个时间步 t t t

        • 根据 ϵ − \epsilon- ϵ贪婪策略选择动作 a t a_{t} at,即以概率 ϵ \epsilon ϵ随机选择动作,以概率 1 − ϵ 1-\epsilon 1ϵ选择当前最优动作 a = a r g m a x a ′ Q ( s t , a ′ ) a=arg\underset{a^{'}}{max} Q(s_{t},a^{'}) a=argamaxQ(st,a)
        • 执行动作 a t a_{t} at,从环境获得即时奖励 R t + 1 R_{t+1} Rt+1并进入下一个状态 s t + 1 s_{t+1} st+1
        • 使用Q-learning更新公式更新Q值:
          Q ( s t , a t ) ⟵ Q ( s t , a t ) + α ( R t + 1 + γ m a x a ′ Q ( s t + 1 , a ′ ) − Q ( s t , a t ) ) Q(s_{t},a_{t})\longleftarrow Q(s_{t},a_{t})+\alpha (R_{t+1}+\gamma \underset{a^{'}}{max} Q(s_{t+1},a^{'})-Q(s_{t},a_{t})) Q(st,at)Q(st,at)+α(Rt+1+γamaxQ(st+1,a)Q(st,at))
        • 将状态更新为 s t + 1 s_{t+1} st+1
      3. 如果达到终止状态(终点或其他设定条件),结束该轮。

  3. 策略改进:

    • 根据学习到的 Q 函数,逐步改进策略。在任意状态 s s s 下,选择动作的策略为:
      π ( s ) = a r g m a x a Q ( s , a ) \pi (s)=arg \underset{a}{max} Q(s,a) π(s)=argamaxQ(s,a)
    • 随着时间的推移,智能体在学习过程中逐渐减少探索(降低 ϵ − \epsilon- ϵ 值),最终逐渐收敛于最优策略。
Q-learning 的特点
  1. 离线策略(Off-policy):Q-learning 的一个显著特征是它不依赖于行为策略来更新 Q 值。它通过最大化未来回报更新 Q 值,而不关心实际执行的动作。这意味着行为策略和目标策略可以不同,从而允许 Q-learning 使用历史数据进行学习,能够更好地重复利用样本。

  2. 探索与利用的平衡:在实际的学习过程中,Q-learning 需要在探索(选择随机动作,获得更多的状态-动作信息)和利用(使用当前学到的最优策略)之间保持平衡。通常通过 ϵ − \epsilon- ϵ贪婪策略来实现,其中 ϵ − \epsilon- ϵ控制探索的概率,并随着学习进程逐渐减少。

  3. 样本复杂度:由于 Q-learning 是离线策略,能够重复利用行为策略下的样本,具有更低的样本复杂度。智能体无需严格依赖当前策略采样的数据,可以有效利用以前的经验数据进行更新。

1.3 总结

  Q-learning 是一种无模型的强化学习算法,旨在通过迭代估计状态-动作值函数,逐步逼近最优策略。作为离线策略算法,Q-learning 不依赖于当前的行为策略,能够利用最大化未来回报的估计进行更新,具备更高的样本效率和灵活性。通过与环境交互,智能体不断调整 Q 值,使其最终收敛到最优策略。该算法广泛应用于复杂的决策任务中,尤其是在状态和动作空间较大且模型未知的情况下表现优异。

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

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

相关文章

人工智能时代,程序员如何保持竞争优势?

在当前人工智能技术飞速发展的背景下,程序员的工作方式与职业角色正经历着前所未有的深刻变革。随着 ChatGPT、Midjourney、Claude 等 AIGC 技术的迅速崛起,AI 辅助编程工具的应用日益广泛,极大地改变了编程的传统模式。这一趋势不仅提升了编…

moonlight串流配置太复杂?推荐一款无需配置的宝藏串流软件GameViewer远程

moonlight支持将PC游戏实时串流到安卓、iOS、Apple TV、Chromebook、PS Vita甚至Raspberry Pi等设备上,让用户无需携带笨重的游戏设备,即可随时随地进行游戏。 但是moonlight的门槛较高,很多串流新手不懂得如何配置,同时如果没有I…

云计算之云原生(下)

目录 接上文 二、消息队列Kafka 2.1 消息队列 Kafka:企业级大数据消息通道 2.2 系统架构 2.3 更稳定Kafka – 自研双引擎支持 2.4 更高性能Kafka – 秒级分区扩容 2.5 客户端报错及解决方案 三、云原生可观测体系 3.1 可观测性是系统稳定性保障的必要手段 …

计算机毕业设计推荐-基于Java的乡村农家乐管理系统

💖🔥作者主页:毕设木哥 精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻 实战项目 文章目录 实战项目 一、基于Java的乡村农家乐管理系…

算法基础-快速排序

快速排序 i、j不相邻时&#xff0c;指向同一个下标 i、j相邻时&#xff0c;j 比 i 小 不管是否相邻&#xff0c;最后一次循环的if条件一定是 i>j 来退出循环&#xff0c;即最后一次的 if(i<j) 不执行 按照 j 来划分,x a[l r >> 1]&#xff0c;分为 [ l&#xff0…

QGraphicsView、QGraphicsScene和QGraphicsItem图形视图框架(二)疑难杂症

疑难杂症1 1.问题&#xff1a; 设置场景的背景图片时&#xff0c;采用setBackgroundBrush()方法和重写drawBackground()函数得到的结果很不一样&#xff0c;而且通过setSceneRect设置场景原点位置之后得到的结果也有很大区别。 如下图 第一个和第三个中重写了QGraphicsScene…

论文解读:《LAMM: Label Alignment for Multi-Modal Prompt Learning》

系列文章目录 文章目录 系列文章目录LAMM: Label Alignment for Multi-Modal Prompt Learning学习1、论文细节理解1、研究背景2、论文贡献3、方法框架4、研究思路5、实验6、限制 LAMM: Label Alignment for Multi-Modal Prompt Learning学习 1、论文细节理解 VL模型和下游任务…

Python输出多位数

作者制作不易&#xff0c;关注、点赞、收藏一下吧&#xff01; 1.第一种:正常直接用循环 以三位数为例: for i in range(100, 1000):print(i) 运行结果( 展示一部分 ): 图1-1 2.第二种:特定位数 以三位数为例: for i in range(1, 5): # 括号内指定那个位的范围for j in r…

MySQL基础(5)- 运算符

目录 一、算数运算符 1.加法运算符 2.乘除运算符 3.取模运算 二、比较运算符 1. <> <> ! < < > > 2.IS NULL \ IN NOT NULL \ ISNULL 3.LEAST() \ GREATEST() 4.BETWWEEN 条件下界1 AND 条件上界2 5.in (set)\ not in (set) 6.LIKE :模糊查…

96.游戏的启动与多开-窗口多开检测与破解

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;易道云信息技术研究院 上一个内容&#xff1a;95.游戏的启动与多开-信号量多开检测与破解 以 95.游戏的启动与多开-信号量多开检测与破…

流程图符号速查:快速掌握流程图绘制要点

流程图是一种以图形化方式表示算法或过程的步骤和逻辑关系的图表&#xff0c;它通过使用一系列标准的符号和连接线来清晰地展示流程的顺序和决策点。这种表示方法不仅使得复杂的过程更加易于理解&#xff0c;而且也便于跟踪和优化。以下是对流程图的进一步扩写&#xff0c;包括…

智谱AI八月全面升级

智谱系列升级&#xff1a; GLM-4-Flash&#xff1a;免费供应&#xff0c;提供快速响应的对话体验。GLM-4-Long&#xff1a;超长上下文模型&#xff0c;支持高达1百万tokens的上下文&#xff0c;成本为1元/百万tokens。GLM-4-Plus&#xff1a;旗舰版模型&#xff0c;性能升级&am…

Linux平台屏幕|摄像头采集并实现RTMP推送两种技术方案探究

技术背景 随着国产化操作系统的推进&#xff0c;市场对国产化操作系统下的生态构建&#xff0c;需求越来越迫切&#xff0c;特别是音视频这块&#xff0c;今天我们讨论的是如何在linux平台实现屏幕|摄像头采集&#xff0c;并推送至RTMP服务。 我们知道&#xff0c;Linux平台&…

js模块化 --- commonjs规范 原理详解

什么是commonjs规范 commonjs是一种模块化规范&#xff08;nodejs的默认模块化规范&#xff0c;新版的nodejs已经支持es6的模块化&#xff0c;但它默认任然使用的是commonjs&#xff09;&#xff0c;通俗的说它将代码分割成了一个一个的模块&#xff0c;让不同的模块拥有自己独…

使用“天聚数行”藏头诗生成API:轻松创作个性化诗词

在日常生活中&#xff0c;有时我们需要一些创意的方式来表达情感或增加趣味性。“天聚数行”提供的藏头诗生成API就是一个很好的工具&#xff0c;可以帮助我们轻松创作个性化的诗词。以下是关于如何使用这一API的详细介绍。 API概述 “天聚数行”的藏头诗生成API是上海觉克信息…

别给智能猫砂盆花冤枉钱了!这三款好用智能猫砂盆哪个更好用?

节假日回老家&#xff0c;不方便带猫咪怎么办&#xff1f;而且猫咪这么能拉&#xff0c;猫砂盆里拉满了又怎么办&#xff1f;猫砂盆一满&#xff0c;就会变脏&#xff0c;变脏了小猫就会抗拒上厕所&#xff0c;从而在家里找其他干净的地方排泄&#xff0c;那我们要怎么保证不在…

AIOT边缘计算机助力智慧储能,开启能源管理新时代

智慧储能能源管理正成为实现可持续发展和高效能源利用的关键。而 AIOT&#xff08;人工智能物联网&#xff09;边缘计算机的出现&#xff0c;为智慧储能能源管理带来了全新的机遇和突破。 一、AIOT 边缘计算机的特点 强大的计算能力 AIOT 边缘计算机具备高性能的处理器和充足…

widows安装配置mamba_ssm环境

由于现在mamba大火&#xff0c;所以将mamba_ssm在windows中的环境配置进行介绍&#xff0c;如果你想在windows中进行开发&#xff0c;那么这是你最好的选择&#xff01;&#xff01; 安装步骤 1.anaconda下载 官网下载&#xff1a;https://www.anaconda.com/download 下载好…

Java笔试面试题AI答之JDBC(4)

文章目录 19. 解释JDBC的ResultSet是什么 &#xff1f;20. JDBC编程有哪些不足之处&#xff0c;MyBatis是如何解决这些问题的&#xff1f;JDBC编程的不足之处MyBatis如何解决这些问题 21. 简述JDBC 能否处理 Blob 和 Clob &#xff1f;1. JDBC对Blob和Clob的支持2. 处理Blob和C…