一文读懂强化学习!

一.了解强化学习

1.1基本概念

强化学习是考虑智能体(Agent)与环境(Environment)的交互问题:智能体处在一个环境中,每个状态为智能体对当前环境的感知;智能体只能通过动作来影响环境,当智能体执行一个动作后,会使得环境按某种概率转移到另一个状态;同时,环境会根据潜在的奖赏函数反馈给智能体一个奖赏。

举个例子:

智能体

机器人

环境

4*3的方格

状态

当前所在位置(初始位置为[1,1])

策略

在当前状态下,我向上走的概率为0.8,向左向右分别是0.1

行为(动作)

向上走一步

奖励

走到绿色方格奖励10,走到红色方格奖励-10,其他方格奖励-1

状态转移概率

采取向上走一步,实际上有0.9的概率到达上面一格,有0.1概率到达右边一格


  • 回报:定义当前时刻后的累积奖赏为回报(Return)

在上述场景下,回报是指机器人从当前位置走到终点(红色或者绿色方格)的奖励之和

针对一些自然场景(比如无人驾驶),到达终端状态的时间很长或者不存在终端状态,提出了折扣因子的概念,γ<1

  • 状态价值函数:智能体处于不同状态时的价值,即在状态s下的期望回报

针对上述场景:机器人处于每个状态下的不同价值,可以看到,当机器人越靠近绿色方格时,机器人的状态价值越大。(状态价值的具体计算方法后面会详细介绍,这里的具体数据无实际意义,仅仅用来参考)

  • 动作价值函数:在当前状态下,执行动作a获得的期望回报

以上图为例,在经过求解动作价值函数以后(假设已经完成了求解),在[1,1]状态,

那么选取向上的行为会比采取向右的行为更有价值。


Q:为什么要引入状态价值函数或者动作价值函数呢?

A:强化学习最根本的目的是为了求策略,但是我们并不知道那个策略是最优,因此需要引入评价函数(状态价值函数或者动作价值函数)来给当前状态(策略)进行打分,然后得到最优策略


下面会详细介绍不同的强化学习方法,但是基本思路都是相似的,求解最优值函数,或者求解最优策略。

二.基于模型的强化学习-Model-base

2.1动态规划方法

  • 马尔可夫性:系统的下一个状态仅与当前状态有关,而与历史状态无关。

在1.1节的状态价值函数和动作价值函数的推导过程已经用到了马尔可夫性

  • 贝尔曼方程:

考虑γ=1,当前时刻的状态价值函数=当前状态的奖励+到达下一状态的价值的期望。

在状态有限的情况下,本质上是解一个方程组,因此贝尔曼方程叫做贝尔曼方程组更加合理!


举例:考虑如下情况,有四个状态,箭头表示状态转移概率

可以列方程组:

例:

可表示为:

因此就求出了每个状态的价值:

有了状态价值,没有策略怎么办?

得到了每个状态的价值,在当前状态(位置)下,你会怎么走呢?按照常规逻辑,朝着价值大的位置走,对,这就是通过状态价值函数得到了策略

这就是本文的第一个强化学习模型,如果你能够理解上述过程,恭喜你,强化学习已经入门了一丢丢!


上述案例中,状态转移函数以及每个状态的奖励是已知的,也就是模型已知(Model-base),在模型已知的情况下,仅仅通过数学推导就可以完成状态价值函数的求解!而不需要智能体去真实的环境中采取数据!

在现实场景中,模型已知对系统要求过高,通常无法实现,而是通过智能体与环境交互,获得每个状态下的奖励(数据),利用采集的数据+强化学习方法,来更新价值函数或者策略函数。

三.无模型强化学习-Model-free

3.1蒙特卡洛方法

在无模型时,采用随机采样的经验平均来估计期望值,此即蒙特卡罗法。其过程可以总结如下:

  • 智能体与环境交互后得到交互序列

  • 通过序列计算出各个时刻的奖赏值

  • 将奖赏值累积到值函数中进行更新

  • 根据更新的值函数来更新策略

举例:仍然以此模型,机器人并不提前知道每个状态的奖励以及状态转移函数,初始给定一个策略以后,让机器人在里面随便跑,到达红色或者绿色的时候停止,收集每个过程的奖励,来更新状态价值函数

G表示从当前状态下出发,到达终点时的奖励,N表示这个过程进行了N次

也可以采用迭代的方法求均值,如下更新策略,本质上和上述过程是一样的。

总结:动态规划与蒙特卡洛的区别:动态规划是有模型的强化学习方法,并不需要智能体与环境进行作用,而蒙特卡洛方法无模型,通过智能体在环境中收集数据进行学习

  • 动态规划:

  • 蒙特卡洛:

3.2时序差分方法

蒙特卡洛方法需要获取完整的轨迹,效率较低,时序差分法结合了动态规划和蒙特卡罗,即模拟一段轨迹(一步或者几步),然后利用贝尔曼方程进行自迭代更新,如下图所示:

举个例子,假设γ=1,假如你想获取北京到上海的距离V(St),你从北京开车到了天津测量距离为Rt+1=100,并且知道天津到上海的距离为V(St+1)=700,那么你就获取了北京到上海的距离800。

如果你本来就有北京到上海的距离V(St)=790,那么采用上述方法就舍弃了原来的数据,显得过于激进,因此可以采用如下更新方法:

zh

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

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

相关文章

空间信息智能应用团队研究成果介绍及人才引进

目录1、多平台移动测量技术1.1 车载移动测量系统1.2 机载移动测量系统2、数据处理与应用技术研究2.1 点云与影像融合2.2 点云配准与拼接2.3 点云滤波与分类2.4 道路矢量地图提取2.5 道路三维自动建模2.6 道路路面三维病害分析2.7 多期点云三维变形分析2.8 地表覆盖遥感监测分析…

ChatGPT在安全研究领域的应用实践

引言ChatGPT是一个人工智能技术驱动的自然语言处理工具&#xff0c;它能够通过理解和学习人类的语言来进行对话&#xff0c;并能进行连续对话。目前ChatGPT已经官方已经更新模型到4.0版本&#xff0c;宣称它是“最先进的系统&#xff0c;能生产更安全和更有用的回复”。当前使用…

wandb:可视化和超参数寻优

参考博客&#xff1a;https://zhuanlan.zhihu.com/p/591047340 1、注册账号 首先&#xff0c;去wandb官网注册一个账号&#xff0c;选择个人使用即可&#xff08;根据个人需要&#xff09; 然后&#xff0c;登录得到一个API key 2、wandb使用 &#xff08;1&#xff09;命令…

Spring框架学习--xml和Annotation方式实现IOC

AnnotationXml的spring-IOC和全Annotation的spring-IOC 文章目录AnnotationXml的spring-IOC和全Annotation的spring-IOC学习目标第二章 基于AnnotationXml的spring-IOC【重点】1、annotationxml【入门案例】(5)【1】目标【2】实现【2.1】创建项目【2.3】改写AccountDaoImpl【2.…

刷题记录(2023.3.14 - 2023.3.18)

[第五空间 2021]EasyCleanup 临时文件包含考点 分析源码&#xff0c;两个特殊的点&#xff0c;一个是 eval&#xff0c;另一个是 include eval 经过了 strlen filter checkNums 三个函数 include 经过了 strlen filter 两个函数 filter 检测是否包含特定的关键字或字符 fun…

【数据结构与算法】用栈实现队列

文章目录&#x1f63b;前言如何用栈实现队列&#xff1f;用栈实现队列整体的实现代码&#x1f63c;写在最后&#x1f63b;前言 &#x1f61d;上一章我们用队列实现了一个栈&#xff08;-> 传送门 <-&#xff09;&#xff0c;而这一章就带大家用栈实现一个队列。 &#x1…

< 每日算法:在排序数组中查找元素的第一个和最后一个位置 >

每日算法 - JavaScript解析&#xff1a;在排序数组中查找元素的第一个和最后一个位置 一、任务描述&#xff1a;> 示例 1> 示例 2> 示例 3二、题意解析三、解决方案&#xff1a;往期内容 &#x1f4a8;一、任务描述&#xff1a; 给你一个按照非递减顺序排列的整数数组…

C++基础算法③——排序算法(选择、冒泡附完整代码)

排序算法 1、选择排序 2、冒泡排序 1、选择排序 基本思想&#xff1a;从头至尾扫描序列&#xff0c;每一趟从待排序元素中找出最小(最大)的一个元素值&#xff0c;然后与第一个元素交换值&#xff0c;接着从剩下的元素中继续这种选择和交换方式&#xff0c;最终得到一个有序…

冲击蓝桥杯-时间问题(必考)

目录 前言&#xff1a; 一、时间问题 二、使用步骤 1、考察小时&#xff0c;分以及秒的使用、 2、判断日期是否合法 3、遍历日期 4、推算星期几 总结 前言&#xff1a; 时间问题可以说是蓝桥杯&#xff0c;最喜欢考的问题了,因为时间问题不涉及到算法和一些复杂的知识&#xf…

第十四届蓝桥杯三月真题刷题训练——第 18 天

目录 第 1 题&#xff1a;排列字母 问题描述 运行限制 代码&#xff1a; 第 2 题&#xff1a;GCD_数论 问题描述 输入格式 输出格式 样例输入 样例输出 评测用例规模与约定 运行限制 第 3 题&#xff1a;选数异或 第 4 题&#xff1a;背包与魔法 第 1 题&#x…

1649_Excel中删除重复的数据

全部学习汇总&#xff1a; GreyZhang/windows_skills: some skills when using windows system. (github.com) 长久时间的开发工作性质导致我对Windows生态下的很多工具没有一个深度的掌握。有时候&#xff0c;别说深度&#xff0c;可能最为浅显的操作都是不熟悉的。这个不仅仅…

JVM学习.02 内存分配和回收策略

1、前言《JVM学习.01 内存模型》篇讲述了JVM的内存布局&#xff0c;其中每个区域是作用&#xff0c;以及创建实例对象的时候内存区域的工作流程。上文还讲到了关于对象存货后&#xff0c;会被回收清理的过程。今天这里就着重讲一下对象实例是如何被清理回收的&#xff0c;以及清…

5.方法(最全C#方法攻略)

目录 5.1 方法的结构 5.2 方法体内部的代码执行 5.3.1 类型推断和Var关键字 5.3.2 嵌套块中的本地变量 5.4 本地常量 5.5 控制流 5.6 方法调用 5.7 返回值 5.8 返回语句和void 方法 5.9 参数 5.9.1 形参 5.9.2 实参 位置参数示例 5.10 值参数 5.11 引用参数 5.12…

【vm虚拟机】vmware虚拟机下载安装

vmware虚拟机下载安装&#x1f6a9; vmware虚拟机下载&#x1f6a9; 安装虚拟机程序&#x1f6a9; 创建一个CentOS虚拟机&#x1f6a9; 异常情况&#x1f6a9; vmware虚拟机下载 vmware官网下载地址 &#x1f6a9; 安装虚拟机程序 双击安装包exe程序&#xff0c;无脑下一步即…

来到CSDN的一些感想

之所以会写下今天这篇博客&#xff0c;是因为心中实在是有很多话想说&#xff01;&#xff01;&#xff01; 认识我的人应该都知道&#xff0c;我是才来CSDN不久的&#xff0c;也可以很清楚地看见我的码龄&#xff0c;直到今天&#xff1a;清清楚楚地写着&#xff1a;134天&…

完美日记母公司再度携手中国妇基会,以“创美人生”助力女性成长

撰稿 | 多客 来源 | 贝多财经 当春时节&#xff0c;梦想花开。和煦的三月暖阳&#xff0c;唤醒的不止是满城春意&#xff0c;更有逸仙电商“创美人生”公益项目播撒的一份希望。 3月8日“国际妇女节”当日&#xff0c;为积极响应我国促进共同富裕的政策倡导&#xff0c;助力相…

C语言--自定义类型详解

目录结构体结构体的声明特殊的声明结构的自引用typedef的使用结构体变量的定义和初始化结构体的内存对齐为什么存在内存对齐&#xff1f;修改默认对齐数结构体传参位段位段的内存分配位段的跨平台问题枚举联合联合类型的定义联合在内存中开辟空间联合大小的计算结构体 结构体的…

Linux之磁盘分区、挂载

文章目录一、Linux分区●原理介绍●硬盘说明查看所有设备挂载情况挂载的经典案例二、磁盘情况查询基本语法应用实例磁盘情况-工作实用指令一、Linux分区 ●原理介绍 Linux来说无论有几个分区&#xff0c;分给哪一目录使用&#xff0c;它归根结底就只有一个根目录&#xff0c;…

可编程线性直流电源的特性有哪些?

可编程线性直流电源是一种高性能、高精度的电源设备&#xff0c;其主要特性包括以下几点&#xff1a;1、高稳定性&#xff1a;可编程线性直流电源具有极高的输出稳定性&#xff0c;能够保证输出电压、电流和功率的精度和稳定性。通常来说&#xff0c;稳定性能够达到0.01%或更高…

Linux的诞生过程

个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每天分享网络运维知识与技能。座右铭&#xff1a;海不辞水&#xff0c;故能成其大&#xff1b;山不辞石&#xff0c;故能成其高。个人主页&#xff1a;小李会科技的…
最新文章