强化学习的学习笔记

什么是强化学习?

强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。

与其他机器学习方法的区别

监督学习是机器学习领域研究最多的方法,已经十分成熟,在监督学习的训练集中,每一个样本都含有一个标签,在理想情况下,这个标签通常指代正确的结果。监督学习的任务即是让系统在训练集上按照每个样本所对应的标签推断出应有的反馈机制,进而在未知标签的样本上能够计算出一个尽可能正确的结果,例如我们熟悉的分类与回归问题。在强化学习中的交互问题中却并不存在这样一个普适正确的“标签”,智能体只能从自身的经验中去学习。

但是强化学习与同样没有标签的无监督学习也不太一样,无监督学习是从无标签的数据集中发现隐藏的结构,典型的例子就是聚类问题。但是强化学习的目标是最大化奖励而非寻找隐藏的数据集结构,尽管用无监督学习的方法寻找数据内在结构可以对强化学习任务起到帮助,但并未从根本上解决最大化奖励的问题。

当然还有让学习器不依赖外界交互、自动地利用未标记样本来提升学习性能的半监督学习,它与强化学习也有着本质的差别。

因此,强化学习是除了监督学习和无监督学习之外的第三种机器学习范式。

 强化学习的特点

1、没有监督者,只有一个奖励信号

2、反馈是延迟而非即时

3、具有时间序列性质

4、智能体的行为会影响后续的数据

目标

1、获取更多的累计奖励

2、获得更可靠的估计

强化学习的要素与架构

四个基本要素

强化学习系统一般包括四个要素:策略(policy),奖励(reward),价值(value)以及环境或者说是模型(model)。接下来我们对这四个要素分别进行介绍。

策略(Policy)

策略定义了智能体对于给定状态所做出的行为,换句话说,就是一个从状态到行为的映射,事实上状态包括了环境状态和智能体状态,这里我们是从智能体出发的,也就是指智能体所感知到的状态。因此我们可以知道策略是强化学习系统的核心,因为我们完全可以通过策略来确定每个状态下的行为。我们将策略的特点总结为以下三点:

1.策略定义智能体的行为

2.它是从状态到行为的映射

3.策略本身可以是具体的映射也可以是随机的分布

奖励(Reward)

奖励信号定义了强化学习问题的目标,在每个时间步骤内,环境向强化学习发出的标量值即为奖励,它能定义智能体表现好坏,类似人类感受到快乐或是痛苦。因此我们可以体会到奖励信号是影响策略的主要因素。我们将奖励的特点总结为以下三点:

1.奖励是一个标量的反馈信号

2.它能表征在某一步智能体的表现如何

3.智能体的任务就是使得一个时段内积累的总奖励值最大

价值(Value)

接下来说说价值,或者说价值函数,这是强化学习中非常重要的概念,与奖励的即时性不同,价值函数是对长期收益的衡量。我们常常会说“既要脚踏实地,也要仰望星空”,对价值函数的评估就是“仰望星空”,从一个长期的角度来评判当前行为的收益,而不仅仅盯着眼前的奖励。结合强化学习的目的,我们能很明确地体会到价值函数的重要性,事实上在很长的一段时间内,强化学习的研究就是集中在对价值的估计。我们将价值函数的特点总结为以下三点:

1.价值函数是对未来奖励的预测

2.它可以评估状态的好坏

3.价值函数的计算需要对状态之间的转移进行分析

环境(模型)

最后说说外界环境,也就是模型(Model),它是对环境的模拟,举个例子来理解,当给出了状态与行为后,有了模型我们就可以预测接下来的状态和对应的奖励。但我们要注意的一点是并非所有的强化学习系统都需要有一个模型,因此会有基于模型(Model-based)、不基于模型(Model-free)两种不同的方法,不基于模型的方法主要是通过对策略和价值函数分析进行学习。我们将模型的特点总结为以下两点:

1.模型可以预测环境下一步的表现

2.表现具体可由预测的状态和奖励来反映

强化学习的架构

我们用这样一幅图来理解一下强化学习的基本架构,大脑指代智能体agent,地球指代环境environment,从当前状态出发,在做出一个行为之后,对环境产生了一些影响,它首先给agent反馈了一个奖励信号,接下来agent可以从中发现一些信息,进而进入下一个状态,再做出新的行为,形成一个循环。

 强化学习求解方法

1.动态规划方法

动态规划方法通常用于求解马尔可夫决策过程(Markov Decision Process,简称MDP)的最优策略。具体来说,动态规划方法可以通过反复迭代更新每个状态的价值函数或Q函数,从而得到最优的策略。动态规划方法通常有以下两种形式:

值迭代(Value Iteration):值迭代算法通过反复迭代更新每个状态的价值函数,直到收敛为止。具体来说,每次迭代都将每个状态的价值函数更新为其可能的后继状态的最大值加上当前状态的即时奖励。

策略迭代(Policy Iteration):策略迭代算法首先通过随机初始化一个策略,然后反复迭代更新策略和价值函数,直到收敛为止。具体来说,每次迭代都先根据当前策略计算每个状态的价值函数,然后根据价值函数更新策略。

动态规划方法的优点是可以保证得到全局最优解,而且收敛速度较快。但是,动态规划方法的缺点是需要完整的环境模型,即需要知道每个状态的转移概率和即时奖励,这在实际问题中往往是难以满足的。

2.蒙特卡洛方法

上面的动态规划方法,是一种较为理想的状态,即所有的参数都提前知道,比如状态转移概率,及奖励等等。然而显示情况是未知的,这时候有一种手段是采用蒙特卡洛采样,基于大数定律,基于统计计算出转移概率值;比如当你抛硬币的次数足够多,那么正面和反面的概率将会越来越接近真实情况。

蒙特卡洛方法是一种基于随机采样的数值计算方法,常用于求解复杂的数学问题。蒙特卡洛方法的基本思想是通过随机采样的方式来估计一个函数的值或求解一个概率分布的特征。

在强化学习中,蒙特卡洛方法通常用于评估一个策略的质量,即在给定策略下,智能体能够获得的期望累积奖励。具体来说,蒙特卡洛方法会通过与环境的交互来生成一条轨迹,然后根据轨迹中的奖励值来估计该策略的价值。重复进行多次采样后,可以得到该策略的平均累积奖励,从而评估该策略的质量。

蒙特卡洛方法的优点是可以处理高维、复杂的问题,而且不需要对问题的结构和特点做出太多的假设。但是,蒙特卡洛方法的缺点是随机性较强,需要进行大量的采样才能得到准确的结果,计算效率较低

3.时间差分方法

基于动态规划和蒙特卡洛

时间差分(Temporal Difference,简称TD)方法是一种基于样本的强化学习方法,它可以在不需要完整的环境模型的情况下学习最优策略。

时间差分方法的基本思想是通过不断更新每个状态的价值函数或Q函数,从而逼近最优策略的价值函数或Q函数。具体来说,时间差分方法会在每个时间步根据当前状态、采取的动作、获得的即时奖励和下一个状态的估计价值函数或Q函数来更新当前状态的价值函数或Q函数,这个估计值就是时间差分误差(Temporal Difference Error,简称TDE)

时间差分方法的优点是可以处理高维、复杂的问题,而且不需要完整的环境模型。此外,时间差分方法可以在线更新价值函数或Q函数,即在每个时间步都可以进行更新,可以更好地适应动态环境。时间差分方法的缺点是容易受到初始值和采样噪声的影响,需要进行调参和采样优化。

强化学习算法分类

分类一

基于理不理解所处环境来进行分类:

Model-free:环境给了我们什么就是什么. 我们就把这种方法叫做 model-free, 这里的 model 就是用模型来表示环境

Model-based:那理解了环境也就是学会了用一个模型来代表环境, 所以这种就是 model-based 方法

分类二

一类是直接输出各个动作概率,另一个是输出每个动作的价值;前者适用于连续动作情况,后者无法表示连续动作的价值。

分类三

强化学习还能用另外一种方式分类, 回合更新和单步更新, 想象强化学习就是在玩游戏, 游戏回合有开始和结束. 回合更新指的是游戏开始后, 我们要等待游戏结束, 然后再总结这一回合中的所有转折点, 再更新我们的行为准则. 而单步更新则是在游戏进行中每一步都在更新, 不用等待游戏的结束, 这样我们就能边玩边学习了。

分类四

判断on-policy和off-policy的关键在于,你所估计的policy或者value-function和你生成样本时所采用的policy是不是一样。如果一样,那就是on-policy的,否则是off-policy的。

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

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

相关文章

Leetcode42-环形链表

题目 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使…

ElasticSearch 简介

一、什么是 ElastcSearch? ElasticSearch 是基于 Lucene 的 Restful 的分布式实时全文搜索引擎。 1.1 ElasticSearh 的基本术语概念 index 索引 索引类似与 mysql 中的数据库,ES 中的索引是存储数据的地方,包含了一堆有相似结构的文档数据…

【学习笔记】桌面浏览器的视口

概念:设备像素和CSS像素 设备像素:设备物理屏幕的像素分辨率,使用screen.width/height获取 这里有四个像素100%缩放,CSS像素完全覆盖设备像素 缩小后,CSS像素开始缩小,意味着一个设备像素覆盖多个CSS像素…

嵌入式软考学习笔记(1)超详细!!!

目录 第一章计算机系统基础知识 1、逻辑运算 2、数的表示 3、总线系统 5、流水线 6、存储器 7、可靠性、校验码 第一章计算机系统基础知识 1、逻辑运算 与:有0则0,全1才1 或:有1则1,全0才0 异或:相同为0…

FFmpeg功能使用

步骤:1,安装FFmpeg Download FFmpeg 在这里点击->Windows builds from gyan.dev;如下图 会跳到另外的下载界面: 在里面下拉选择点击ffmpeg-7.1-essentials_build.zip: 即可下载到FFmpeg; 使用&#…

接口开发笔记-WebApi

一、基础概念与原理 1、WebAPI的基本概念。 WebAPI是一种基于HTTP协议的网络应用程序接口,它使用JSON或XML格式来传输数据。WebAPI是服务器端应用程序,允许客户端应用程序通过HTTP请求来访问服务器上的数据。WebAPI支持RESTful服务,是构建这…

文件转曲,限制PDF文件编辑的最佳方案!

随着数字化进程的推进,PDF文件凭借其多样化的功能和优越的兼容性已经被广泛使用,成为了现代文档交流和存储的重要工具,满足了不同用户和行业的需求。 虽然PDF格式文件的功能很多,常见的比如阅读、编辑、加密、转换、还可用于印刷…

数据仓库工具箱—读书笔记01(数据仓库、商业智能及维度建模初步)

数据仓库、商业智能及维度建模初步 记录一下读《数据仓库工具箱》时的思考,摘录一些书中关于维度建模比较重要的思想与大家分享🤣🤣🤣 博主在这里先把这本书"变薄"~有时间的小伙伴可以亲自再读一读,感受一下…

分布式 窗口算法 总结

前言 相关系列 《分布式 & 目录》《分布式 & 窗口算法 & 总结》《分布式 & 窗口算法 & 问题》 参考文献 《【算法】令牌桶算法》 固定窗口算法 简介 固定窗口算法是最简单的流量控制算法。固定窗口算法的核心原理是将系统的生命周期划分为一个个…

FireFox火狐浏览器企业策略禁止更新

一直在用火狐浏览器,但是经常提示更新,进入浏览器右上角就弹出提示,比较烦。多方寻找,一直没有找到合适的方案,毕竟官方没有给出禁用检查更新的选项,甚至about:config里都没有。 最终找到了通过企业策略控…

java+springboot+mysql高校社团网

项目介绍: 使用javaspringbootmysql开发的高校社团网,系统包含管理员、学生角色,功能如下: 管理员:登录系统;首页;用户管理;社团分类管理;社团信息管理(社团…

[Maven]构建项目与高级特性

有关于安装配置可以看我的另一篇文章:Maven下载安装配置与简介。 构建项目的生命周期和常用命令 这一节的内容熟记即可,要用了认得出来即可。 在Maven出现之前,项目构建的生命周期就已经存在。对项目进行清理、编译、测试、部署等一系列工作…

多分类交叉熵与稀疏分类交叉熵

总结: 标签为 One-hot 编码的多分类问题,用分类交叉熵对于标签为整数的多分类问题,用稀疏分类交叉熵稀疏分类交叉熵内部会将整数标签转换为 One-hot 编码,而如果标签已经是 One-hot 编码的形式,再使用稀疏分类交叉熵就会多此一举。 算例 假设我们有三个类别:A、B 和 C。…

【学一点儿前端】本地或jenkins打包报错:getaddrinfo ENOTFOUND registry.nlark.com

问题 今天jenkins打包一个项目,发现报错了 error An unexpected error occurred: “https://registry.nlark.com/xxxxxxxxxx.tgz: getaddrinfo ENOTFOUND registry.nlark.com”. 先写解决方案 把yarn.lock文件里面的registry.nlark.com替换为registry.npmmirror.…

前端(模块化)

未使用模块化 定义两个js文件simple1.js和simple2.js let a11; let a11; 两个js文件变量重名 在html测试 传统引入js文件 <script src"./simple1.js"></script> <script src"./simple2.js"></script> 浏览器报错 使用模块…

JAVA入门:文件管理

JAVA入门:文件管理 在学习java之前,首先学习一下java的文件管理,以便后续更好地学习。 创建一个空项目 点击右上角File->New->Module 创建新模块 配置工程环境 点击File->Project Structure 选择project&#

QT:Widgets中的事件

事件的处理 (1)重新实现部件的paintEvent()、mousePressEvent()等事件处理函数。这是最常用的一种方法&#xff0c;不过它只能用来处理特定部件的特定事件。 (2)重新实现notify()函数。这个函数功能强大&#xff0c;提供了完全的控制&#xff0c;可以在事件过滤器得到事件之前…

jvm结构介绍

Java虚拟机&#xff08;JVM&#xff09;是Java平台的核心组件&#xff0c;它负责将Java字节码转换为机器码 1. 类加载子系统&#xff08;Class Loading Subsystem&#xff09;&#xff1a; • 负责将Java类加载到JVM中。这包括从文件系统、网络或其他来源读取.class文件&#x…

uni-app多环境配置动态修改

前言 这篇文章主要介绍uniapp在Hbuilderx 中&#xff0c;通过工程化&#xff0c;区分不同环境、动态修改小程序appid以及自定义条件编译&#xff0c;解决代码发布和运行时手动切换问题。 背景 当我们使用uniapp开发同一个项目发布不同的环境二级路径不同时&#xff0c;这时候…

antdv-<a-button>中属性的使用

UI组件库&#xff08;User Interface Component Library&#xff09;是一种预先构建好的、可重用的用户界面元素集合&#xff0c;旨在帮助开发者更快速、更简便地构建用户界面。这些组件通常包括按钮、表单、导航栏、模态框等&#xff0c;能够提供一致的外观和交互风格&#xf…