【强化学习】01—— 强化学习简介

news2024/11/27 9:38:13

文章目录

  • 两种机器学习类型
  • 强化学习定义
  • 强化学习交互过程
  • 强化学习系统要素
    • 历史(History)
    • 状态(State)
    • 策略(Policy)
    • 奖励(Reward)
    • 价值函数(Value Function)
    • 模型(Model)
    • 迷宫例子
  • 强化学习智能体分类
  • 参考

两种机器学习类型

在这里插入图片描述

监督学习/无监督学习/强化学习/机器学习之间的关系
  • 预测
    • 根据数据预测所需输出(有监督学习) P ( y ∣ x ) P(y|x) P(yx)
    • 生成数据实例(无监督学习) P ( x , y ) P(x,y) P(x,y)
  • 决策
    • 在动态环境中采取行动(强化学习)
      • 转变到新的状态
      • 获得即时奖励
      • 随着时间的推移最大化累计奖励

预测和决策的区别:行动是否会使得环境发生改变。

强化学习与其他机器学习的区别

  • 无监督,只有奖励信号;
  • 反馈延迟;
  • 时间序列,不同数据之间存在相关性或依赖关系(Non i.i.d data);
  • agents的行动会影响到接受到的数据序列。

在强化学习中,数据是在智能体与环境交互的过程中得到的。如果智能体不采取某个决策动作,那么该动作对应的数据就永远无法被观测到,所以当前智能体的训练数据来自之前智能体的决策结果。因此,智能体的策略不同,与环境交互所产生的数据分布就不同。

在这里插入图片描述

强化学习中有一个关于数据分布的概念,叫作占用度量(occupancy measure),归一化的占用度量用于衡量在一个智能体决策与一个动态环境的交互过程中,采样到一个具体的状态动作对(state-action pair)的概率分布。

占用度量有一个很重要的性质:给定两个策略及其与一个动态环境交互得到的两个占用度量,那么当且仅当这两个占用度量相同时,这两个策略相同。也就是说,如果一个智能体的策略有所改变,那么它和环境交互得到的占用度量也会相应改变。

强化学习定义

强化学习用智能体(agent)这个概念来表示做决策的机器。相比于有监督学习中的“模型”,强化学习中的“智能体”强调机器不但可以感知周围的环境信息,还可以通过做决策来直接改变这个环境,而不只是给出一些预测信号。

在这里插入图片描述
强化学习:通过从交互学习中实现目标的计算方法

  • 感知:在某种程度上感知周围环境
  • 行动:采取行动来影响状态或者达到目标
  • 目标:随着时间的推移,最大化奖励

强化学习交互过程

在这里插入图片描述

Agent的每一步 t t t:

  • 获取观测 O t O_t Ot
  • 获得奖励 R t R_t Rt
  • 执行行动 A t A_t At

环境的每一步 t t t:

  • 获得行动 A t A_t At
  • 给出观测 O t + 1 O_{t+1} Ot+1
  • 给出奖励 R t + 1 R_{t+1} Rt+1

在环境这一步 t = t + 1 t=t+1 t=t+1

强化学习系统要素

历史(History)

过去 O i , R i , A i O_i,R_i,A_i Oi,Ri,Ai的序列
H t = O 1 , R 1 , A 1 , . . . , A t − 1 , O t , R t H_t = O_1, R_1, A_1, ..., A_{t−1}, O_t, R_t Ht=O1,R1,A1,...,At1,Ot,Rt

  • 一直到 t t t时刻所有的可观测变量
  • 根据历史决定下一步:(Agent: A i A_i Ai; Env: O i + 1 , R i + 1 O_{i+1},R_{i+1} Oi+1,Ri+1)

状态(State)

用于确定接下来会发生的事情( O , R , A O,R,A O,R,A)

  • 是一个关于历史的函数 S t = f ( H t ) S_t = f (H_t) St=f(Ht) f ( H t ) f(H_t) f(Ht)在部分情况下难以直接得到(POMDP)

策略(Policy)

  • 智能体的行为,从状态到动作的映射
  • 确定性策略(Deterministic policy): a = π ( s ) a=\pi(s) a=π(s)
  • 随机策略(Stochastic policy): π ( a ∣ s ) = P [ A t = a ∣ S t = s ] π(a|s) = \mathbb P[A_t = a|S_t = s] π(as)=P[At=aSt=s]

奖励(Reward)

  • 定义强化学习目标的标量,评价状态好坏

价值函数(Value Function)

  • 对于未来累计奖励的预测
  • 用于评估在给定的策略下,状态的好坏
    v π ( s ) = E π [ R t + 1 + γ R t + 2 + γ 2 R t + 3 + . . . ∣ S t = s ] v_\pi(s)=\mathbb{E}_\pi\left[R_{t+1}+\gamma R_{t+2}+\gamma^2R_{t+3}+...\mid S_t=s\right] vπ(s)=Eπ[Rt+1+γRt+2+γ2Rt+3+...St=s]

模型(Model)

  • 用于预测环境下一步会做什么
  • 预测下一步状态 P s s ′ a = P [ S t + 1 = s ′ ∣ S t = s , A t = a ] \mathcal{P}_{ss^{\prime}}^a=\mathbb{P}[S_{t+1}=s^{\prime}\mid S_t=s,A_t=a] Pssa=P[St+1=sSt=s,At=a]
  • 预测下一步的(即时)奖励 R s a = E [ R t + 1 ∣ S t = s , A t = a ] \mathcal{R}_s^a=\mathbb{E}\left[R_{t+1}\mid S_t=s,A_t=a\right] Rsa=E[Rt+1St=s,At=a]

迷宫例子

找到最短路径
在这里插入图片描述

  • 奖励 R R R: 每一步为-1;
  • 动作 A A A: N, E, S, W;
  • 状态 S S S: Agent的位置;
  • 箭头代表了每一步状态的策略 π ( s ) π(s) π(s);
  • 数字代表了每一步的价值 v π ( s ) v_\pi(s) vπ(s)(距离Goal的格数);

强化学习智能体分类

  • 基于模型的强化学习
    • 策略(和/或)价值函数
    • 环境模型
    • Example:迷宫、围棋
  • 模型无关的强化学习(通常情况下我们没法准确知道环境的模型)
    • 策略(和/或)价值函数
    • 没有环境模型
    • Atari Example

Atari Example
在这里插入图片描述

  • 规则未知
  • 从交互中进行学习(环境是一个黑箱)
  • 在操作杆上选择行动并查看分数和像素画面

其他类型

  • 基于价值

    • 没有策略(隐含)
    • 价值函数
  • 基于策略

    • 策略
    • 没有价值函数
  • Actor-Critic

    • 策略
    • 价值函数

在这里插入图片描述

各类型之间的关系

强化学习本质的思维方式

强化学习的策略在训练中会不断更新,其对应的数据分布(即占用度量)也会相应地改变。因此,强化学习的一大难点就在于,智能体看到的数据分布是随着智能体的学习而不断发生改变的。

由于奖励建立在状态动作对之上,一个策略对应的价值其实就是一个占用度量下对应的奖励的期望,因此寻找最优策略对应着寻找最优占用度量。

强化学习关注寻找一个智能体策略,使其在与动态环境交互的过程中产生最优的数据分布,即最大化该分布下一个给定奖励函数的期望。

参考

[1] 伯禹AI
[2] https://www.deepmind.com/learning-resources/introduction-to-reinforcement-learning-with-david-silver
[3] 动手学强化学习

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

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

相关文章

React的高阶函数

1.认识高阶函数 高阶组件 本身不是一个组件,而是一个函数函数的参数是一个组件,返回值也是一个组件 高阶组件的定义 import ThemeContext from "../context/theme_context"function withTheme(OriginComponent) {return (props) > {retur…

反序列化相关

1.序列化serialize() 把一个对象变成可以传输的字符串,目的就是为了方便传输。 2. 反序列化unserialize() 把被序列化的字符串还原为对象 java 将java对象转化为字节序列的过程,反序列化的过程就是 1.创建一个对象输出流 2.通过对象输出流的readobject(…

Blender DreamUV插件使用简明教程

DreamUV 是一个可让你在Blender的 3D 视口中操纵 UV的工具集合。 该工具集设计用于可重复使用的纹理,例如平铺纹理、装饰表和纹理图集。 其目的是让你无需退出 3D 视图即可对几何体进行纹理处理,从而节省时间并提高灵活性。 1、安装DreamUV 首先下载为…

C++新经典 | C++ 查漏补缺(智能指针)

目录 一、动态分配 1.初始化的三种方式 2. 释放内存 (1)悬空指针 3.创建新工程与观察内存泄漏 二、深入了解new/delete关键字 1.new和delete 2.operator new()和operator delete() 3.申请和释放一个数组 三、智能指针 1.shared_ptr &#xff0…

十大排序——2.归并排序

这篇文章我们来讲一下十大排序中的归并排序。 目录 1.概述 2.代码实现 3.总结 1.概述 归并排序主要是运用了归并的思想。 下面具体的来讲一下归并排序的整个流程和思想。 首先,给你一个无序的数组,要求你对它进行归并排序。归并排序首先需要将这个…

开始报名!龙蜥社区走进 Arm MeetUp 议程硬核剧透来了

「龙蜥社区“走进系列”MeetUp」是由龙蜥社区与生态合作伙伴联合主办的系列月度活动,每期走进一家企业,聚焦龙蜥社区和合作伙伴的技术、产品和创新动态,展示硬核技术,共建繁荣生态。 《聚焦 Arm 性能提升,助力龙蜥生态…

修炼k8s+flink+hdfs+dlink(一:安装hdfs)

一:安装jdk,并配置环境变量。 在对应的所有的节点上进行安装。 mkdir /opt/app/java cd /opt/app/java wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24http%3A%2F%2Fwww.oracle.com% 2F; oraclelicenseaccept-securebackup…

为什么手动采购管理会危及你的工作流程?

你是否经常在找到一张发票后,却被告知该发票未经财务批准?多少次因为关键文件放错位置或处理不当而丢失订单? 如果答案是 “经常”,那么你还在采用的传统手动采购策略是时候彻底改变了。 2023年了,仍旧依赖手动采购管…

STL排序、拷贝和替换算法

目录 常用排序算法sort 常用排序算法random_shuffle 常用排序算法merge 常用排序算法reverse 常用拷贝和替换算法copy 常用拷贝和替换算法replace 常用拷贝和替换算法replace_if 常用拷贝和替换算法swap 常用排序算法sort sort(iterator begp iterator end,_Pred); //…

羧基荧光素-氨基.盐酸盐,FAM-NH2.HCl,138589-19-2

产品简介:5-FAM-NH2.HCl(羧基荧光素-氨基.盐酸盐)其中异硫氰酸荧光素(FITC)具有比较高的活性,通常来说,在固相合成过程中引 入该种荧光基团相对于其他荧光素要更容易,并且反应过程中不需要加入活化试剂。可以用来修饰蛋白质、多肽以及其他活性基团材料或者小分子。 …

【LeetCode热题100】--54.螺旋矩阵

54.螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 按层遍历 可以将矩阵看成若干层,首先输出最外层的元素,其次输出次外层的元素,直到输出最内层的元素。 对于每层&…

视频汇聚/安防监控平台EasyCVR指定到新的硬盘进行存储录像,如何自动挂载该磁盘?

TSINGSEE青犀视频监控汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力&…

在Pyppeteer中实现反爬虫策略和数据保护

爬虫是我们获取互联网数据的神奇工具,但是面对越来越严格的反爬虫措施,我们需要一些我们获取数据的利器来克服这些障碍。本文将带您一起探索如何使用Pyppeteer库来应对这些挑战。 Pyppeteer是一个基于Python的无头浏览器控制库,它提供了与Chr…

Godot信号教程(使用C#语言)| 创建自定义信号 | 发出自定义信号 | 使用代码监听信号

文章目录 信号是什么连接信号使用编辑器连接信号使用代码连接信号Lambda 自定义信号声明信号发射信号带参数的信号 其他文章 信号是什么 在Godot游戏引擎中,信号是一种用于对象之间通信的重要机制。它允许一个对象发出信号,而其他对象可以连接到这个信号…

K8S:pod控制器详解

文章目录 一.pod控制器的基础1.pod概念及分类2.什么是Pod控制器及其功用3.pod控制器有多种类型(1)ReplicaSet(2)Deployment(3)DaemonSet(4)Statef…

视频截取gif动画怎么操作?轻松一键快速视频转gif

如何截取视频中的一段制作gif动画?当我们看到电影、电视剧等短视频中的某一个片段截取出来做成gif动画,应该如何操作呢?这时候,只需要使用gif制作(https://www.gif.cn/)工具,不用下载软件&#…

解决typescript报错:不能将类型xxx分配给类型xxx

现象: 这种情况是因为组件传参时: 等号左右两边的数据类型不能严格匹配一致造成的 等号左边data, 查看一下被传参的子组件ProductList的内部data属性: 可以看到data的类型是 : Product[] 而右边的shoppingCartItems来自于: redu…

配置pytorchGPU虚拟环境-python3.7

cuda版本的pytorch包下载地址戳这里 winR->输入cmd->输nvcc -V回车 cuda 11.0 输入以下命令来查找 CUDA 的安装路径: Windows: where nvcc 输入以下命令来查找 cuDNN 的版本号: Windows: where cudnn* cuDNN 8.0 本机安装的是cuda 11.0&…

JS前端树形Tree数据结构使用

前端开发中会经常用到树形结构数据,如多级菜单、商品的多级分类等。数据库的设计和存储都是扁平结构,就会用到各种Tree树结构的转换操作,本文就尝试全面总结一下。 如下示例数据,关键字段id为唯一标识,pid为父级id&am…

稳压器【TPS6283810YFPR 3A】汽车类、TPS629203QDRLRQ1,TPS74550PQWDRVRQ1采用小型6 引脚 WSON 封装。

一、TPS6283810、采用 1.2mm x 0.8mm WCSP 封装的 2.4V-5.5V 输入、6 引脚 3A 微型降压转换器 TPS6283810YFPR是一款高频同步降压转换器,经优化具有小解决方案尺寸和高效率等特性。该器件的输入电压范围为2.4V 至 5.5V,支持常用电池技术。该转换器在中等…