当前位置: 首页 > news >正文

02强化学习基本概念

强化学习基本概念

    • 前言
    • 1、State、Action、Policy等
      • ① State
      • ② Action
      • ③ State transition
      • ④ State transition probability
      • ⑤ Polity
    • 2、Reward、Return、MDP等
      • ① Reward
      • ② Trajectory and return
      • ③ Discounted return
      • ④ Episode
      • ⑤ MDP
    • 总结:

前言

本文来自西湖大学赵世钰老师的B站视频。本节课主要介绍强化学习的基本概念。

1、State、Action、Policy等

本文中会广泛使用的一个例子是网格世界,有一个机器人在里边走,每一个小的网格有不同的类型,白色的网格是可以进去的,黄色的网格是禁止进入的,target是我们希望它能够进到的网格,此外,这个网格是有边界的,3x3。要求是机器人可以在相邻的两个网格移动,不能斜着移动。这个机器人的任务是找到一个“good way”从Start到target。如下所示:

在这里插入图片描述
下面用这个例子来介绍本节课中的第一个概念:State

① State

在这里插入图片描述
State实际上描述的就是agent相对于环境的状态。(The status of the agent with respect to the environment)
在网格世界这个任务中,state指的就是机器人的位置,则共有s1,s2,…s9个位置,如上图所示。这里每个state用的是一个二维坐标表示,即(x,y),如果对于一些比较复杂的场景,可能还要加上速度和加速度。
状态空间就是所有状态的集合,用S={s1,s2,…s9}。

② Action

Action就是在每个状态可采取的行动。在网格世界任务中,每个状态有五个动作,记作a1,… a5。a1是往上走,a2是往右走,a3是往下走,a4是往左走,a5是原地不动。
在这里插入图片描述
Action space是所有可能的动作的集合,用A(si)={a1,… a5}表示。

③ State transition

当我们采取一个行动的时候,智能体agent就会从一个状态移动到另一个状态,这个过程叫做state transition。举个例子:
当我们在状态s1,采取行动a2,那么下一个状态就会变成s2,如下所示。
在这里插入图片描述
我们可以利用一个表格来描述状态转变,如下图所示:
在这里插入图片描述
表格虽然比较直观,但是在实际中却应用受限,因为它只能表示这种确定性的情况。比如,我们在状态s1,执行动作a4,即向左走,那么机器人会撞到墙弹回来,弹回来仍然为s1,也有可能弹到s4或者s7,这种不确定性无法用表格表示。因此我们更一般的方法是用state transition probability。

④ State transition probability

在这里插入图片描述
用条件概率来表示下一状态发生的可能性。

⑤ Polity

在这里插入图片描述
在这里插入图片描述
上图种圆圈代表原地不动,策略用箭头表示。箭头所表示的情况有限,现实中我们需要能够描述复杂情况的一般化方法:
在这里插入图片描述
用π表示策略(在强化学习中,π这个符号统一用来表示策略),π就是一个条件概率,它指定了任何一个状态下,任何一个action的概率,是一个不确定的概率。
在这里插入图片描述
策略可以用表格的形式表示:
在这里插入图片描述
每一行都对应了一个动作,每一列都对应一个状态。比如,在状态s1下,有50%的概率往右走,50%的概率往下走,那么在编程中如何实现呢?即使创建一个0到1之间的均匀分布,然后从中随机取一个数x,当x属于0~ 0.5时,就采取a2,x属于0.5~1时采取a1。

2、Reward、Return、MDP等

① Reward

reward是强化学习中非常独特的概念。Reward是采取一个动作之后得到的一个实数(标量)。如果这个实数是正数,代表我们对智能体的这个行为是鼓励的,如果这个实数是负数,代表我们不希望这样的事情发生,是一个惩罚。这里引出两个问题,一个问题是Reward为0,为0代表一定程度的奖励。还有一个问题是我们能不能用正数表示惩罚,负数表示激励,答案是可以,这本质上是数学上的一些技巧,本质上是一样的。对于网格世界,其Reward如下:
在这里插入图片描述
Reward可以理解为human-machine interface,是人类和机器交互的一种手段,通过Reward我们可以引导agent什么可以做,什么不能做。我们也可以用表格对Reward进行表示,如下图:
在这里插入图片描述
表格的形式智能表示一种确定的实例,如果采取一个动作,不确定其奖励,则可以通过数学方法(条件概率)进行表示:

在这里插入图片描述

② Trajectory and return

在这里插入图片描述
return就是把所有的reward加起来的总和。

③ Discounted return

在这里插入图片描述
从状态s1到状态s9,到了s9之后,策略还在进行,这导致了return为无穷大。为了避免这一情况,通过引入discount rate来解决:
在这里插入图片描述
如果减少γ,它就会更加注意最近的一些reward,如果增加γ,它就会更加注意长远的reward。

④ Episode

在这里插入图片描述
episode实际上就是状态s1到s9,状态s9称为terminal states,在terminal states之后就停止了,不在进行了,这就叫episode。
但有些任务没有terminal states,这意味着agent和环境的交互会永远交互下去,这样的任务称为continuing tasks。
在这里插入图片描述

⑤ MDP

Markov decision process(MDP),是马尔可夫过程。MDP有很多要素,第一个要素是它包含了很多集合Sets,包括State、Action、Reward。第二个要素是Probability distribution,第三个要素是Polity,第四个要素是Markov property:memoryless property,与历史无关,这是MDP本身的性质。详见如下:
在这里插入图片描述
可以用Markov decision process这三个词来描述马尔可夫过程,首先Markov对应Markov property,decision对应Policy,是一个策略,process是从一个状态跳到另一个状态,采取什么样的action等等,这些都由Sets(State、Action、Reward)和Probability distribution描述。那么网格世界就可以用Markov process来描述:
在这里插入图片描述
上图右图描述的是Markov process,如果policy是给定的话,就变成了Markov decision process。

总结:

在这里插入图片描述
下节介绍贝尔曼公式。

相关文章:

02强化学习基本概念

强化学习基本概念 前言1、State、Action、Policy等① State② Action③ State transition④ State transition probability⑤ Polity 2、Reward、Return、MDP等① Reward② Trajectory and return③ Discounted return④ Episode⑤ MDP 总结: 前言 本文来自西湖大学…...

笔记2.2:网络应用基本原理

一. 网络应用的体系结构 (1)客户机/服务器结构(Client-Server, C/S) (2)点对点结构(Peer-to-Peer,P2P) (3)混合结构(Hybrid&#x…...

生活垃圾数据集(YOLO版)

文章目录 1、数据集介绍1.1、数据集图片组成2.1、获取数据集方式 2、扩展代码2.1、文件结构树2.2、划分数据集2.3、获取数据集文件名字2.4、文件成功对应检测 3、其他文章 1、数据集介绍 1.1、数据集图片组成 【有害垃圾】:电池(1 号、2 号、5 号&…...

操作系统篇之虚拟内存

虚拟内存是什么? 虚拟内存是计算机操作系统中的一种技术,它将每个进程的内存空间划分成若干个固定大小的页,并通过页面映射技术将这些页与物理内存或磁盘上的页面文件进行交换 虚拟内存能干什么? 扩展了实际物理内存容量:虚拟内存使得每个…...

浅谈SpringMVC的请求流程

目录标题 浅谈SpringMVC的请求流程SpringMVC的介绍SpringMVC的逻辑概念运行图解知识总结 浅谈SpringMVC的请求流程 对于SpringMVC而言重点是了解它的底层运行逻辑,从而可以根据其逻辑来进行实际业务的操作或者是利用原理增强业务的功能性,最终达到项目预…...

2309json.nlohmann数格示例1

参考 示例 下面是一些示例,可让你了解如何使用该类. 除了以下示例之外,你可能还需要: ->检查文档 ->浏览独立示例文件 每个API函数(记录在API文档中)都有相应独立示例文件.如,emplace()函数有一个匹配的emplace.cpp示例文件. 从文件中读取JSON json类提供了操作JSON…...

你知道 delete 删除属性时的一些细节吗?

探究 delete 的一些细节,起源于刚刚做过的一道笔试,原题如下: a 1; const b 2; console.log(delete a); console.log(delete b); // 输出结果是? // 答:true false我可从来没用过 delete 的返回值,但凡…...

Blender入门——快捷键

视角控制 旋转视角:鼠标中键摁住即可旋转平移视角:shift中远近视角:中键滚动 物体控制 移动物体:G旋转物体:R缩放物体:S回复变换:AltG,R,S新建物体:shiftA复制物体:shiftD删除物体&a…...

实例讲解Spring boot动态切换数据源

前言 在公司的系统里,由于数据量较大,所以配置了多个数据源,它会根据用户所在的地区去查询那一个数据库,这样就产生了动态切换数据源的场景。 今天,就模拟一下在主库查询订单信息查询不到的时候,切换数据…...

调整网络时需要注意的事项

这段时间调整网络,涉及的计算机多,Vlan也多,不小心的动作会给自己造成很大的麻烦,因为毕竟我也只是一个网络的初学者,平时虽然是网管,只是作为一项普通的工作。 准备工作做得不细致,可能出现的问…...

OpenCV自学笔记二十二:绘图及交互

一、绘图基础 下面是关于OpenCV绘图基础函数的说明和举例: 1. cv2.line():绘制直线 cv2.line(img, pt1, pt2, color, thickness, lineType) - img: 需要绘制直线的图像。 - pt1: 直线起始点坐标。 - pt2: 直线结束点坐标。 - color: 直线颜色&…...

【自学开发之旅】Flask-会话保持-API授权-注册登录

http - 无状态-无法记录是否已经登陆过 #会话保持 – session cookie session – 保存一些在服务端 cookie – 保存一些数据在客户端 session在单独服务器D上保存,前面数个服务器A,B,C上去取就好了,业务解耦。—》》现在都是基于token的验证。 以上是基…...

数据结构与算法--排序算法复习

目录 1.三种常见的简单排序: 1.1冒泡排序 1.2 选择排序 1.3 插⼊排序 2 常见高级排序算法 2.1 希尔排序 2.2 快速排序 2.3 归并排序 2.4计数排序 先上结论: 1.三种常见的简单排序: 1.1冒泡排序 1.⾸先在未排序数组的⾸位开始&#…...

python随手小练1

题目: 使用python做一个简单的英雄联盟商城登录界面 具体操作: print("英雄联盟商城登录界面") print("~ * "*15 "~") #找其规律 a "1、用户登录" b "2、新用户注册" c "3、退出系统&quo…...

gym_unity学习笔记

最近学了一段时间gym_unity,把一些资料留在这里 实例 实例gym_unity训练RollerBall:https://blog.csdn.net/alibutter/article/details/120908687实例gyn_unity训练3DBall:https://zhuanlan.zhihu.com/p/554927641?utm_id0 源码&#xff1…...

(三十)大数据实战——HBase集成部署安装Phoenix

前言 Phoenix 是一个开源的分布式关系型数据库查询引擎,它基于 Apache HBase构建。它提供了在 Hadoop 生态系统中使用 SQL查询和事务处理的能力。本节内容我们主要介绍一下Hbase如何集成部署安装Phoenix服务工具,并集成hive框架,能够快速、灵…...

【Python基础】S01E03 元组

P01S03 元组 定义元组元组无法修改定义一个元素的元素 修改元组变量方案一:关联新元组方案二:转换为列表 列表是可修改的,对于处理网站的用户列表或游戏中的角色列表至关重要。然而我们有时候需要创建一系列不可修改的元素,元组可…...

【算法-双指针思想】

双指针思想 双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。 定义快慢指针 快指针: 寻找新数组的元素 ,新数组就是不含有目标元素的数组 慢指针: 指向更新 新数组下…...

uni-app实现点击复制按钮 复制内容

注意:uni.setClipboardData({})里面的data参数必须是字符串类型这个是大坑 第一种 <view>{{orderId}}</view> //复制的内容 <button click"copy(orderId)">复制</button>copy(value) {uni.setClipboardData({data: value , // 这里是个坑接…...

Qt5开发及实例V2.0-第十四章-Qt多国语言国际化

Qt5开发及实例V2.0-第十四章-Qt多国语言国际化 第14章 Qt 5多国语言国际化14.1 基本概念14.1.1 国际化支持的实现14.1.2 翻译工作&#xff1a;“*.qm”文件的生成 14.2 【实例】14.2.1 简单测试14.2.2 选择语言翻译文字 本章相关例程源码下载1.Qt5开发及实例_CH1401.rar 下载2.…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...