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

强化学习蘑菇书笔记

绪论

强化学习就是一个智能体在一个不确定的环境中最大化它的奖励。智能体在一个环境中获取某个状态后,做一个动作,也称为决策,在环境中执行这个决策以后,会有一个奖励。尽可能多地获得更多的奖励。

强化学习概述

强化学习与监督学习

比如对于分类问题,就是有监督的学习。假设样本都是独立同分布的,假设我们已经知道了正确的标签是什么。

强化学习和监督学习的区别如下。

  • 强化学习输入的样本是序列数据,而不像监督学习里面样本都是独立的。
  • 学习器并没有告诉我们每一步正确的动作应该是什么,学习器需要自己去发现哪些动作可以带来最多的奖励,只能通过不停地尝试来发现最有利的动作。
  • 智能体获得自己能力的过程,其实是不断地试错探索(trial-and-error exploration)的过程。探索(exploration)和利用(exploitation)是强化学习里面非常核心的问题。其中,探索指尝试一些新的动作,这些新的动作有可能会使我们得到更多的奖励,也有可能使我们“一无所有”;利用指采取已知的可以获得最多奖励的动作,重复执行这个动作,因为我们知道这样做可以获得一定的奖励。因此,我们需要在探索和利用之间进行权衡,这也是在监督学习里面没有的情况。
  • 在强化学习过程中,没有非常强的监督者(supervisor),只有奖励信号(reward signal) ,并且奖励信号是延迟的,即环境会在很久以后告诉我们之前我们采取的动作到底是不是有效的。因为我们没有得到即时反馈,所以智能体使用强化学习来学习就非常困难。当我们采取一个动作后,如果我们使用监督学习,我们就可以立刻获得一个指导,比如,我们现在采取了一个错误的动作,正确的动作应该是什么。而在强化学习里面,环境可能会告诉我们这个动作是错误的,但是它并没有告诉我们正确的动作是什么。而且更困难的是,它可能是在一两分钟过后告诉我们这个动作是错误的。所以这也是强化学习和监督学习不同的地方。

强化学习的例子

  • 在自然界中,羚羊其实也在做强化学习。它刚刚出生的时候,可能都不知道怎么站立,然后它通过试错,一段时间后就可以跑得很快,可以适应环境。
  • 我们也可以把股票交易看成强化学习的过程。我们可以不断地买卖股票,然后根据市场给出的反馈来学会怎么去买卖可以让我们的奖励最大化。
  • 玩雅达利游戏或者其他电脑游戏,也是一个强化学习的过程,我们可以通过不断试错来知道怎么玩才可以通关。

强化学习的历史

强化学习是有一定的历史的,早期的强化学习,我们称其为标准强化学习。最近业界把强化学习与深度学习结合起来,就形成了深度强化学习(deep reinforcemet learning) ,因此,深度强化学习= 深度学习+ 强化学习。

强化学习的应用

为什么强化学习在这几年有很多的应用,比如玩游戏以及机器人的一些应用,并且可以击败人类的顶尖棋手呢?这有如下几点原因。首先,我们有了更多的算力(computation power),有了更多的GPU,可以更快地做更多的试错尝试。其次,通过不同尝试,智能体在环境里面获得了很多信息,然后可以在环境里面取得很大的奖励。最后,我们通过端到端训练把特征提取和价值估计或者决策一起优化,这样就可以得到一个更强的决策网络。

序列决策sequential decision making

状态是对世界的完整描述,不会隐藏世界的信息。观测是对状态的部分描述,可能会遗漏一些信息。

环境有自己的函数 s t e = f e ( H t ) s_t^{e} = f^e (H_t) ste=fe(Ht) 来更新状态,在智能体的内部也有一个函数 s t a = f a ( H t ) s_t^{a} = f^a (H_t) sta=fa(Ht) 来更新状态。当智能体的状态与环境的状态等价的时候,即当智能体能够观察到环境的所有状态时,我们称这个环境是完全可观测的(fully observed)。在这种情况下面,强化学习通常被建模成一个马尔可夫决策过程(Markov decision process,MDP)的问题。在马尔可夫决策过程中,$o_t = s_t^e= s_t^{a} $。

但是有一种情况是智能体得到的观测并不能包含环境运作的所有状态,因为在强化学习的设定里面,环境的状态才是真正的所有状态。比如智能体在玩black jack 游戏,它能看到的其实是牌面上的牌。或者在玩雅达利游戏的时候,观测到的只是当前电视上面这一帧的信息,我们并没有得到游戏内部里面所有的运作状态。也就是当智能体只能看到部分的观测,我们就称这个环境是部分可观测的(partially observed)。在这种情况下,强化学习通常被建模成部分可观测马尔可夫决策过程(partially observable Markovdecision process, POMDP)的问题。部分可观测马尔可夫决策过程是马尔可夫决策过程的一种泛化。部分可观测马尔可夫决策过程依然具有马尔可夫性质,但是假设智能体无法感知环境的状态,只能知道部分观测值。比如在自动驾驶中,智能体只能感知传感器采集的有限的环境信息。

马尔可夫决策过程

本章将介绍马尔可夫决策过程。在介绍马尔可夫决策过程之前,我们先介绍它的简化版本:马尔可夫过程(Markov process,MP)以及马尔可夫奖励过程(Markov reward process,MRP)。通过与这两种过程的比较,我们可以更容易理解马尔可夫决策过程。

马尔可夫过程

马尔可夫性质

马尔可夫性质也可以描述为给定当前状态时,将来的状态与过去状态是条件独立的[1]。如果某一个过程满足马尔可夫性质,那么未来的转移与过去的是独立的,它只取决于现在。马尔可夫性质是所有马尔可夫过程的基础。

马尔可夫链

马尔可夫过程是一组具有马尔可夫性质的随机变量序列 s 1 , … , s t s_1,\dots, s_t s1,,st,其中下一个时刻的状态 s t + 1 s_{t+1} st+1 只取决于当前状态 s t s_t st。我们设状态的历史为 h t = { s 1 , s 2 , s 3 , … , s t } h_t = \{s_1, s_2, s_3,\dots , s_t\} ht={s1,s2,s3,,st} h t h_t ht 包含了之前的所有状态),则马尔可夫过程满足条件: p ( s t + 1 ∣ h t ) = p ( s t + 1 ∣ s t ) p(s_{t+1}\mid h_t)=p(s_{t+1}\mid s_t) p(st+1ht)=p(st+1st).

离散时间的马尔可夫过程也称为马尔可夫链(Markov chain).

马尔可夫决策过程

相对于马尔可夫奖励过程,马尔可夫决策过程多了决策(决策是指动作),其他的定义与马尔可夫奖励过程的是类似的。此外,状态转移也多了一个条件,变成了 p ( s t + 1 = s ′ ∣ s t = s , a t = a ) p (s_{t+1} = s^{'} \mid s_t = s, a_t = a) p(st+1=sst=s,at=a)。未来的状态不
仅依赖于当前的状态,也依赖于在当前状态智能体采取的动作。马尔可夫决策过程满足条件: p ( s t + 1 ∣ h t , a t = a ) = p ( s t + 1 ∣ s t , a t = a ) p(s_{t+1}\mid h_t,a_t = a)=p(s_{t+1}\mid s_t,a_t = a) p(st+1ht,at=a)=p(st+1st,at=a).

相关文章:

强化学习蘑菇书笔记

绪论 强化学习就是一个智能体在一个不确定的环境中最大化它的奖励。智能体在一个环境中获取某个状态后,做一个动作,也称为决策,在环境中执行这个决策以后,会有一个奖励。尽可能多地获得更多的奖励。 强化学习概述 强化学习与监…...

《机器学习》——线性回归模型

文章目录 线性回归模型简介一元线性回归模型多元线性回归模型误差项分析一元线性模型实例完整代码 多元线性模型实例完整代码 线性回归模型简介 线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。 相关关系&…...

Linux(Centos 7.6)网卡信息没有了问题处理

1.问题现象 虚拟机打开后&#xff0c;使用ifconfig查看IP信息&#xff0c;虚拟机默认的网卡名称是ens33&#xff0c;ifconfig没有看到相关问题&#xff0c;远程连接工具Xshell也不能正常访问该虚拟机。 [rootnode1 ~]# ifconfig lo: flags73<UP,LOOPBACK,RUNNING> mtu…...

WEB攻防-通用漏洞-文件上传-js验证-MIME验证-user.ini-语言特征

目录 定义 1.前端验证 2.MIME验证 3.htaccess文件和.user. ini 4.对内容进行了过滤&#xff0c;做了内容检测 5.[ ]符号过滤 6.内容检测php [] {} ; 7.()也被过滤了 8.反引号也被过滤 9.文件头检测 定义 文件上传漏洞是指攻击者上传了一个可执行文件&#xff08;如木马…...

mybatis-plus代码生成器

<!--mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.2</version></dependency><!--mybatis-plus-generator 生成器--><depende…...

12.24-12.28Mysql锁阅读笔记

1.Mysql的锁有哪些种类 全局锁&#xff0c; 通过flush tables with read lock 应用场景是全局备份&#xff0c;备份的时候如果有两个表&#xff0c;备份 先备份了用户表&#xff0c;然后用户了商品&#xff0c;再备份商品表 那么商品表库存减少了&#xff0c;然而用户表的育儿…...

支持最新 mysql9的workbench8.0.39 中文汉化教程来了

之前在 B 站上发布了 mysql8 workbench 汉化教程&#xff0c;一年多来帮助很多初学者解决了不熟悉英文的烦恼。 汉化视频可以访问&#xff1a; 2024最新版mysql8.0.39中文版mysql workbench汉化 中文升级 旧版汉化报错解决_哔哩哔哩_bilibili MySql Workbench汉化_哔哩哔哩_…...

golang连接jenkins构建build

1.安装jenkins依赖 go get github.com/bndr/gojenkins2.代码 import ("context""file/utils/logs""github.com/bndr/gojenkins""github.com/gin-gonic/gin""net/http""time" )// 接收单个静态文件上线参数 type…...

SCAU高程进阶题(自用)

18711 字符串去重 Description 一个完全由小写字母组成的长度为n的字符串&#xff0c;现在要求你去除所有重复的字母&#xff0c;并将剩下的字母按从小到大的次序输出。 如输入baaadccaab&#xff0c;输出abcd。 输入格式 第一行一个整数n&#xff0c;表示字符串长度(0<n&…...

基于STM32F103控制L298N驱动两相四线步进电机

文章目录 前言一、模块参数二、接口说明三、准备工作四、直流电机驱动引脚接线效果展示 五、两相四线步进电机驱动步进电机相关概念拍数驱动时序引脚接线效果展示 六、参考示例 前言 L298N 是一种常见的双 H 桥电机驱动模块&#xff0c;广泛用于驱动直流电机和步进电机。它基于…...

libreoffice在Windows和Linux环境的安装和结合Springboot使用教程

前言&#xff1a; 在公司做开发时&#xff0c;遇到一个需求&#xff0c;要求上传的文件有图片&#xff0c;也有word和pdf。预览信息时&#xff0c;既要求能水印展示出来&#xff0c;又要求能大图水印预览。思索许久&#xff0c;我决定采取全部打水印然后转成图片Base64&#x…...

前端开发 -- 自动回复机器人【附完整源码】

一&#xff1a;效果展示 本项目实现了一个简单的网页聊天界面&#xff0c;用户可以在输入框中输入消息&#xff0c;并点击发送按钮或按下回车键来发送消息。机器人会根据用户发送的消息内容&#xff0c;通过关键字匹配来生成自动回复。 二&#xff1a;源代码分享 <!DOCTYP…...

vue+echarts实现疫情折线图

效果&#xff1a; 代码&#xff1a; <<template><div><div id"left1" style "height:800px;width:100%"></div></div> </template><script> //疫情数据//export default {data() {return {data:{//疫情数据…...

服务器nfs文件共享

1. 配置 NFS 服务器(NFS Server) 在 Ubuntu/Debian 上: sudo apt update sudo apt install nfs-kernel-server在 CentOS/RHEL 上: sudo yum install nfs-utils1.2 创建共享目录 选择一个要共享的目录,并确保该目录的权限正确设置。例如,假设我们要共享 /srv/nfs 目录…...

基于Vue+SSM+SpringCloudAlibaba的科目课程管理系统

功能1&#xff1a;科目列表 功能2&#xff1a;条件查询 功能3&#xff1a;分页查询 功能4&#xff1a;excel批量导入 功能5&#xff1a;修改 功能6&#xff1a;删除...

vue3配置caddy作为静态服务器,在浏览器地址栏刷新出现404

vue3配置caddy作为静态服务器&#xff0c;在浏览器地址栏刷新出现404 1 情况描述2 原因3 配置 1 情况描述 在vue打包之后&#xff0c;形成dist文件&#xff0c;采用caddy作为静态资源服务器。在浏览器中输入域名时可以访问网站&#xff0c;但是&#xff0c;进过路由导航栏内部…...

深入理解委托:C# 编程中的强大工具

在面向对象编程中&#xff0c;委托&#xff08;Delegate&#xff09; 是一个非常强大且灵活的概念&#xff0c;特别是在 C# 编程语言中。它不仅仅是函数指针的替代品&#xff0c;还提供了更高层次的抽象&#xff0c;使得代码更加简洁、灵活和可维护。在这篇博客中&#xff0c;我…...

【Java 数据结构】合并两个有序链表

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 目录 1. 题目 2. 解析 3. 代码实现 4. 小结 1. 题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示…...

基于微信小程序的校园访客登记系统

基于微信小程序的校园访客登记系统 功能列表 用户端功能 注册与登录 &#xff1a;支持用户通过手机号短信验证码注册和登录。个人资料管理 &#xff1a;允许用户编辑和更新个人信息及其密码。站内信消息通知&#xff1a;通知公告。来访预约&#xff1a;提交来访预约支持车牌…...

uniapp 判断多选、选中取消选中的逻辑处理

一、效果展示 二、代码 1.父组件: :id=“this.id” : 给子组件传递参数【id】 @callParentMethod=“takeIndexFun” :给子组件传递方法,这样可以在子组件直接调用父组件的方法 <view @click="$refs.member.open()"...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...