第16章——西瓜书强化学习

        在强化学习中,智能体通过与环境的交互来学习如何做出决策。在每个时间步,智能体观察当前的环境状态,并根据其策略选择一个动作。环境会对智能体的动作做出响应,并给出一个奖励信号(reward),该信号反映了智能体当前动作的好坏。智能体的目标是通过学习找到一种策略,使得在长期的交互过程中获得的累计奖励最大化。

1.K摇臂赌博机

        在K摇臂赌博机问题中,每个“摇臂”代表一个可能的动作,拉动摇臂会获得一个与这个动作相关联的奖励。奖励可能是固定的,也可能是随机的。智能体的目标是通过多次尝试来找到哪个摇臂(动作)平均而言能够产生最大的奖励,即找到最优的动作。 

(1)ε-贪婪策略

        ε-贪婪策略的核心思想是在强化学习中实现探索和利用之间的平衡。它确保智能体在寻找最优策略的过程中,既不会完全依赖于当前已知的最佳信息(利用),也不会完全随机地选择动作(探索),而是结合两者,以一定的概率进行探索和利用。        

        具体来说,该策略以一定的概率ε进行探索,即随机选择一个动作,而以1-ε的概率进行利用,即选择当前已知的最优动作。通过这种方式,智能体可以在探索新动作以获取更多信息的同时,也能利用已有知识选择当前最优的动作,从而实现探索和利用的平衡。

        在实际应用中,ε的值通常会根据时间步长逐渐减小,以便在初期更多地探索新动作,而在后期则更多地利用已知的最优动作。这种策略简单而有效,被广泛应用于各种强化学习任务中。

(2)SoftMax策略

        SoftMax策略的核心思想是根据每个动作可能带来的收益,为其分配一个选择概率,从而实现探索和利用之间的平衡。与ε-贪婪策略相比,Softmax策略在选择动作时考虑了所有可能动作的价值,并以一种更平滑的方式进行了探索和利用的权衡。

具体操作如下:

  • 对于每一个时间步,智能体需要根据当前的状态来选择一个动作。在Softmax策略中,每个动作a都被赋予一个选择概率p(a),这个概率是由该动作的价值Q(a)(或者称为动作的优势、期望收益等)通过一个Softmax函数计算得到的。

      其中T是一个称为“温度”的参数,它控制着概率分布的形态。当T较大时,概率分布较为均匀,智能体更倾向于进行探索;当T较小时,概率分布则更为集中,智能体更倾向于利用当前价值较高的动作。

  • 智能体根据这些概率随机地选择一个动作执行。这样,即使某个动作的价值明显高于其他动作,智能体也不会总是确定地选择它,而是有一定的概率尝试其他动作,从而实现了探索。

  • 在执行动作并接收到环境的反馈(即奖励信号)后,智能体会更新其对动作价值的估计。这通常是通过一些强化学习算法(如Q-learning、SARSA等)来完成的。

  • 随着时间的推移和智能体对环境了解的加深,动作的价值估计将越来越准确。同时,可以通过逐渐降低温度参数T来使智能体从初期的广泛探索逐渐过渡到后期的精确利用。

        想象你站在一个有很多条路的交叉路口,每条路都可能导致不同的结果,但你不知道哪条路是最好的。这时,你就面临一个探索和利用的问题:你应该尝试新的路(探索),还是选择你已经知道比较好的那条路(利用)?

        ε-贪婪策略就是一种解决这个问题的方法。它告诉你,大部分时间(比如95%的时间,如果ε设为0.05)你应该选择那条你已经知道比较好的路(利用),但是偶尔(比如剩下的5%的时间)你也应该尝试一下新的路(探索),说不定你会发现更好的路。

        而Softmax策略则是另一种方法。它不像ε-贪婪策略那样直接选择已知最好的路或者完全随机选择一条路,而是根据每条路可能的好处(或者叫“价值”)来决定选择每条路的概率。如果一条路的好处远远大于其他路,那么选择这条路的概率就会非常高;如果所有路的好处都差不多,那么选择每条路的概率就会比较平均。

2.有模型学习

        有模型学习与之前提到的无模型学习(如ε-贪婪策略和Softmax策略)在强化学习中的主要区别在于是否对环境进行建模。有模型学习的核心思想是构建一个表示环境行为的模型,并利用这个模型来优化智能体的决策过程。

(1) 策略评估 (Policy Evaluation)

        在有模型学习中,策略评估的目的是估计给定策略下的状态值函数或状态-动作值函数。这意味着对于每个状态(或在状态-动作对中),我们想要知道遵循当前策略时能获得多少预期回报。这通常通过求解模型的贝尔曼方程来完成,可以使用动态规划方法,如高斯-赛德尔迭代。

 

(2)策略改进 (Policy Improvement)

        一旦我们有了策略的值函数评估,我们就可以尝试改进它。策略改进的目标是找到一个新的策略,它在所有状态下都不比原策略差,并且至少在一个状态上比原策略更好。这通常是通过贪心选择动作来实现的,即在每个状态下选择使状态-动作值函数最大的动作。

(3)策略迭代 (Policy Iteration)

        策略迭代是结合了策略评估和策略改进的一种方法。它交替进行策略评估和策略改进,直到找到最优策略为止。具体来说,我们从一个初始策略开始,评估它,然后找到一个改进的策略,再评估新策略,如此往复。每次迭代后,策略都会变得更好,直到收敛到最优策略。

(4)值迭代 (Value Iteration)

        值迭代是另一种找到最优策略的方法。与策略迭代不同,值迭代并不显式地维护一个策略。相反,它直接对最优值函数进行迭代更新。在每次迭代中,它使用贝尔曼最优方程来更新每个状态的最优值,直到值函数收敛。一旦最优值函数被找到,就可以通过贪心选择动作来得到最优策略。

3.免模型学习

        免模型学习(Model-Free Learning)是强化学习中的一种方法,与有模型学习相对。在免模型学习中,智能体不尝试对环境进行建模,而是直接通过与环境的交互来学习如何最大化累积奖励。这意味着智能体不依赖于对环境行为的预测,而是根据实际观察到的奖励和状态转移来优化其策略。 

        免模型学习的核心思想是通过试错(trial-and-error)的方式来学习最优策略。智能体在环境中执行动作,观察结果,并根据观察到的奖励来调整其策略。这种方法不依赖于对环境的内部工作机制的理解,而是直接关注于智能体的行为和结果。     

(1)蒙特卡罗强化学习

        蒙特卡罗强化学习的核心思想是通过采样来估计状态的真实价值。它直接从经历过的完整状态序列中学习,而不依赖于环境模型。每个状态的价值被估计为在多个状态序列中以该状态算得到的所有收获的平均值。这种方法不依赖于状态转移概率,因此被称为免模型方法。蒙特卡罗强化学习使用广义策略迭代框架,通过策略评估和策略改进两个步骤交互进行,直至获得最优策略。

(2)时序差分强化学习:

        时序差分强化学习的核心思想是结合动态规划和蒙特卡罗方法的思想,利用经验来解决强化学习问题。与蒙特卡罗方法相似,时序差分方法也是从采样中学习,不需要知道完整的环境模型。但是,时序差分方法不需要等到完整的状态序列结束后再进行更新,而是可以在每个步骤之后立即更新估计值。这是通过结合当前步骤的奖励和下一个状态的估计值来实现的。时序差分方法可以在不完整的样本序列上进行学习,因此具有更高的学习效率。此外,它还可以在连续的任务中进行在线学习,而不需要等待任务结束。

4.值函数近似

        在实际应用中,许多问题的状态空间或动作空间可能非常大,甚至无限,这使得传统的表格型强化学习方法(如Q-Learning、SARSA等)无法有效地处理。为了解决这个问题,值函数近似方法被引入到强化学习中。

        值函数近似的核心思想是使用一个参数化的函数来近似表示状态值函数或状态-动作值函数。这个参数化的函数可以是一个线性函数、神经网络、决策树、最近邻方法等。通过调整函数的参数,我们可以拟合真实的状态值函数或状态-动作值函数,从而实现对大规模状态空间或动作空间的有效处理。

        在实际应用中,值函数近似方法通常需要与一些强化学习算法结合使用,如梯度下降法、策略梯度法等。这些算法可以根据值函数近似的结果来更新策略或调整函数的参数,以实现更好的学习效果。

5.模仿学习

        模仿学习(Imitation Learning)是一种通过观察专家行为来学习策略的方法,它属于强化学习的一个子领域。在模仿学习中,智能体通过观察专家的行为示例来学习,旨在将专家的经验知识转化为自身的行为策略,以实现快速且高效的学习。

模仿学习主要有两种方法:直接模仿学习和逆强化学习。

(1)直接模仿学习(Behavior Cloning):

        直接模仿学习,也被称为行为克隆,是一种简单直接的模仿学习方法。它的基本思想是使用一个模型来直接从给定的一组专家数据中学习。这实际上是传统的监督学习方法。具体地说,通过收集专家在不同状态下的行为数据(即状态-动作对),可以利用监督学习算法(如神经网络)来训练一个模型,使其能够根据输入的状态预测出相应的动作。然而,直接模仿学习通常面临数据缺失的问题,即在某些状态下缺乏专家的行为数据,导致模型无法充分学习。

(2)逆强化学习(Inverse Reinforcement Learning):

        逆强化学习是一种更为复杂和灵活的模仿学习方法。与直接模仿学习不同,逆强化学习的目标不仅仅是学习专家的行为,还要推断出专家行为背后的潜在奖励函数。通过找到这个奖励函数,智能体可以使用强化学习的方法来学习策略,即使在没有直接观察到奖励的情况下也能学习。这种方法不仅模仿专家的行为,还理解专家行为背后的动机和目标,因此具有更高的灵活性和泛化能力。然而,逆强化学习的计算复杂度通常较高,需要更多的计算资源和时间。

  

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

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

相关文章

crossover玩不了qq游戏大厅怎么办 仍有五亿人坚持用QQ crossover玩游戏 Mac电脑玩QQ游戏

从1999年2月,QQ首个版本QICQ(OPEN-ICQ)上线。到2024年,靠着5亿月活用户,守住社交领域TOP2位置。你还记得QQ经典的铃声吗? 根据月狐数据2023年12月的统计,QQ月活跃账户数比微博和知乎加在一起还要…

【C++庖丁解牛】STL之vector容器的介绍及使用 | vector迭代器的使用 | vector空间增长问题

📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 目录 1.1 vector的介绍2 v…

创造一款安卓自定义控件(4)——使用Matrix的setPolyToPoly方法实现图像纠正

接上文: 创造一款安卓自定义控件_任意4顶点裁剪框http://t.csdnimg.cn/vu1r5 创造一款安卓自定义控件_任意4顶点裁剪框2_为裁剪框添加放大镜功能http://t.csdnimg.cn/qkngh 创造一款安卓自定义控件_裁剪原理介绍http://t.csdnimg.cn/ORRRL 需求 随着需求修改&#x…

Linux系统部署火狐浏览器结合内网穿透实现公网访问

目录 前言 1. 部署Firefox 2. 本地访问Firefox 3. Linux安装Cpolar 4. 配置Firefox公网地址 5. 远程访问Firefox 6. 固定Firefox公网地址 7. 固定地址访问Firefox 结语 前言 作者简介: 懒大王敲代码,计算机专业应届生 今天给大家聊聊Linux系统…

企业接入SD-WAN组网需要花费多少?

企业数字化转型的不断深入,越来越多的企业开始考虑采用SD-WAN(软件定义广域网)技术来优化其网络架构,提升网络性能和安全性。然而,对于企业来说,接入SD-WAN组网 需要花费多少是一个关键问题。以下是一些影响…

对接钉钉机器人实现点餐提醒,妈妈再也不用担心我错过点餐了

公司的点晚饭时间是11点半到下午3点。忙起来真的很容易忘记,今天话不多说,直接开搞一个机器人提醒我们点饭 ::(笑眼) 。本教程基于centos7版本 “前提要有一个服务器 和一个钉钉群” 要对接钉钉机器人,首先你要有钉钉的群。假设你已经有了钉…

算法——哈希王

242.有效的字母异位词 力扣题目链接(opens new window) 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 示例 1: 输入: s "anagram", t "nagaram" 输出: true 示例 2: 输入: s "rat", t "car&qu…

错误:npm ERR! code CERT_HAS_EXPIRED 解决

问题: 在打开项目用npm install安装依赖时报错:npm ERR! code CERT_HAS_EXPIRED如下图: 原因: 说明正在尝试访问的npm registry 淘宝npm镜像源 的SSL证书已经过期,导致无法建立安全连接。 解决: 配置不…

从内存管理的角度聊聊MMU的那些事

本文从内存管理的发展历程角度层层递进,介绍 MMU 的诞生背景,工作机制。而忽略了具体处理器的具体实现细节,将 MMU 的工作原理从概念上比较清晰的梳理了一遍。 MMU 诞生之前: 在传统的批处理系统如 DOS 系统,应用程序与操作系统在内存中的布…

如何选择海外代理ip?需要注意哪些因素?

选择合适的海外代理ip提供商是确保网络活动安全、高效和顺畅的关键。在众多提供商中做出明智选择需要考虑多个关键因素。 首先,讨论如何选择合适的海外代理ip服务提供商。一个好的服务提供商应该具备良好的市场声誉和客户反馈。在选择前,深入研究并比较…

【Java设计模式】九、桥接模式

文章目录 0、背景1、模式2、案例3、使用场景 0、背景 现要创建不同的图形,图形的形状有圆、长方形、正方形,且它们有不同的颜色 两个维度在变,使用类的继承可以实现,也符合开闭原则,但会类爆炸。 1、模式 将抽象与…

什么是高级编程语言?——跟老吕学Python编程

什么是高级编程语言?——跟老吕学Python编程 高级编程语言简介高级编程语言发展历程高级编程语言特点高级编程语言分类命令式语言函数式语言逻辑式语言面向对象语言 常见的高级编程语言及其特点和应用领域高级编程语言性能分析高级编程语言的工作方式 高级编程语言简…

【框架设计】MVC和MVVM对比图

1. MVC(Model-View-Controller) 单向通信View和Model通过Controller承上启下 2. MVVM(Model-View-ViewModel) 数据绑定M -> VM -> V DOM事件监听 V -> VM -> M 1. MVC是单向的,MVVM是双向的,…

服务器主机云主机在日常维护需要注意的几个点

服务器的日常维护对于确保服务器的稳定运行和安全性非常重要,以下是一些常见的服务器日常维护方面: 定期更新操作系统和软件:确保服务器的操作系统、应用程序以及安全补丁都是最新的,以填补已知的安全漏洞和提高系统性能。监视服务…

Stable Diffusion 详解

整体目标 文本生成图片;文本图片生成图片 网络结构 CLIP的文本编码器和图片生成器组成图像生成器,输入是噪声经过UNet得到图像特征,最后解码得到图像 前向扩散 模型直接预测图片难度比较大,所有让模型预测噪音然后输入-噪音…

MaxEnt模型与R语言结合:物种分布模拟的案例分析

在生态学研究中,物种分布模拟是一项至关重要的任务。它有助于我们理解物种与环境之间的复杂关系,预测物种在气候变化或人类活动影响下的潜在分布变化。近年来,随着计算机技术的不断发展,基于机器学习的物种分布模拟方法逐渐成为研…

用了一个select框出现的问题许多问题差不多搞了一个多小时最后还是百度解决了,百度伟大

问题出现 问题描述 select 多选框里的数据问题,我讲获取的数据信息放入框ref(null) 中,将数据返回到返回框里,一直发现存在问题,不能正常显示,百度里一下,发现没有百度到其他问题,最后换了一种…

【SpringCloud微服务实战02】Ribbon 负载均衡

Ribbon使用 Eureka中已经集成了Ribbon,无需额外引入,通过 @LoadBalanced 注解在请求中使用 Ribbon 负载均衡: @Bean @LoadBalancedpublic RestTemplate restTemplate() {return new RestTemplate(); } Ribbon工作流程图 Ribbon负载均衡策略 修改Ribbon负载均衡策略 方式一…

【python】time库知识整理

简介 python的time库是python内置库,主要负责处理与时间相关的事务。 获取当前时间 函数作用time()获取当前时间戳ctime()获取字符串形式的时间gmtime()调用内部方法,赋予属性,能够被程序调用执行 time返回的是时间戳 ctime是返回的我们…

【网络】数据在同网段和跨网段通信流程

情景一&#xff1a;同一广播域内&#xff0c;两台主机通信过程&#xff1a; 当NO要和N1通信时&#xff0c;假如N0知道N1的IP但却不知道它的MAC地址&#xff0c;那NO就会发送一个ARP的广播请求<1>&#xff08;里面源IP是NO 目标IP是N1 源MAC是N0 目标MAC是12个F&#xff0…