【SARL】单智能体强化学习(Single-Agent Reinforcement Learning)《纲要》
📢本篇文章是博主强化学习(RL)领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对相关等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅解。文章分类在👉强化学习专栏:
【强化学习】- 【单智能体强化学习】(1)---《单智能体强化学习《纲要》》
单智能体强化学习(Single-Agent Reinforcement Learning)《纲要》
目录
0.什么是强化学习?
1. 举个简单例子
2. 强化学习的基本元素
3. 如何学习:试错法
4.单智能体强化学习
【SARL】单智能体强化学习系列文章:
【MADRL】多智能体深度强化学习《纲要》
5. 强化学习的应用实例
6. 总结
0.什么是强化学习?
强化学习(Reinforcement Learning,简称 RL)是一种让机器“通过尝试和错误学习”的方法。它模拟了人类和动物通过经验积累来学会做决策的过程,目的是让机器或智能体能够在复杂的环境中选择最优的行为,从而获得最大的奖励。
1. 举个简单例子
想象一下你是一个小孩,在一个游乐场里,你需要做出一些选择:玩蹦床、滑滑梯,还是去玩旋转木马上?每次你做出选择后,游乐场会给你一些奖励,比如玩蹦床后你感觉非常开心(给你奖励),滑滑梯后你感到害怕(没有奖励)。你不知道这些奖励会如何,但随着时间的推移,你学会了什么行为能带来更好的感觉。
这个过程类似于强化学习中的“学习过程”。智能体(你)通过尝试不同的行为(选择玩不同的设施)来获得奖励,然后根据这些奖励来调整自己的行为,最终找出最好的选择。
2. 强化学习的基本元素
在强化学习中,系统主要包括以下几个部分:
- 智能体(Agent):做决策的主体,像上面例子中的小孩,或者是一个机器人。
- 环境(Environment):智能体所在的世界或场所,游乐场就是一个环境,智能体在这个环境中做出决策。
- 状态(State):环境在某一时刻的具体情况,像游乐场里可能的状态就是“你现在站在哪个设施旁边”。
- 动作(Action):智能体在某个状态下可以选择的行为,像“去玩蹦床”、“去滑滑梯”。
- 奖励(Reward):智能体选择某个动作后,环境给予的反馈,可能是正向奖励(玩得开心)或负向奖励(感到害怕)。
3. 如何学习:试错法
强化学习的核心是“试错学习”。智能体通过与环境的互动,不断做出决策并获得反馈。通过这种方式,智能体学会了哪些行为会带来更多的奖励,哪些行为是无效的。
举个例子:
假设你是一个游戏玩家,游戏中的目标是找到宝藏。游戏中的每个步骤都充满了未知。你可以走左边、走右边、爬山、挖洞等。你不知道哪个动作能带来宝藏,但你可以尝试:
- 第一次走右边,发现掉进了陷阱,得到了负奖励。
- 第二次走左边,发现了一些金币,得到了正奖励。
- 第三次走左边,发现了宝藏,得到了更高的奖励。
通过这些尝试,智能体逐渐知道走左边会更有可能获得奖励,最后学会了最佳的路径。
4.单智能体强化学习
我们从强化学习的研究出发,最开始便是针对单智能体强化学习开展研究,然后再过渡到多智能体强化学习。单智能体强化学习(Single-Agent Reinforcement Learning,SARL)是强化学习的基础研究。
单智能体强化学习涉及一个智能体在环境中学习和决策,目标是最大化该智能体的回报。与多智能体强化学习(Multi-Agent Reinforcement Learning, MARL)相比,单智能体强化学习(Single-Agent Reinforcement Learning, SARL)的主要区别在于:
- 学习和决策的主体:SARL只有一个智能体在环境中学习和做决策,而MARL有多个智能体同时学习和决策1。
- 交互性:SARL中智能体只与环境交互,不与其他智能体交互;而MARL中智能体不仅与环境交互,还与其他智能体交互,增加了问题的复杂性1。
- 状态和动作空间:SARL的状态和动作空间相对简单,通常是固定的和可预测的;而MARL的状态和动作空间更为复杂,因为它们依赖于所有智能体的动作和状态1。
- 优化目标:SARL优化单个智能体的回报;而MARL可能需要优化所有智能体的集体回报,或者在智能体之间达成某种均衡1。
- 学习策略:SARL的学习策略相对直接,只需考虑单个智能体的学习;而MARL的学习策略更为复杂,需要考虑多智能体之间的协调和竞争。
【SARL】单智能体强化学习系列文章:
SARL系列主要针对单智能体强化学习相关算法进行介绍,并给出相关Python代码和可移植程序,SARL系列文章纲要如下:(持续更新中)
1.【强化学习】单智能体强化学习《纲要》
2.【强化学习】Q-Learning算法
3.【强化学习】Sarsa算法
4.【强化学习】DQN算法
5.【强化学习】PG算法
6.【强化学习】REINFORCE算法
7.【强化学习】Actor-Critic算法
8.【强化学习】A2C算法
9.【强化学习】DDPG算法
10.【强化学习】PPO算法
项目代码我已经放入GitCode里面,可以通过下面链接跳转:🔥
【强化学习】算法项目
后续相关单智能体强化学习算法也会不断在【强化学习】项目里更新,如果该项目对你有所帮助,请帮我点一个星星✨✨✨✨✨,鼓励分享,十分感谢!!!
若是下面代码复现困难或者有问题,也欢迎评论区留言。
如果你想了解多智能体强化学习【MARL】可以移步下面这篇文章:
【MADRL】多智能体深度强化学习《纲要》
或者专栏:
多智能体强化学习【MARL】专栏
5. 强化学习的应用实例
强化学习不仅仅适用于游戏,它已经被广泛应用于很多现实世界的问题中,以下是一些经典的例子:
1. 游戏中的AI
强化学习最著名的一个应用例子是 AlphaGo。AlphaGo是由DeepMind开发的人工智能,它通过强化学习击败了围棋世界冠军李世石。它的训练过程就是通过与自己对弈,不断调整自己的策略,最终掌握了围棋的高超技巧。
2. 自动驾驶
自动驾驶汽车也是强化学习的一大应用领域。在自动驾驶中,智能体(即汽车)通过在真实世界或模拟环境中进行试验和错误,学习如何做出正确的决策——比如如何加速、减速、变道,甚至如何避免碰撞。通过不断试错,汽车能够学会在各种不同的路况中选择最安全、最合适的操作。
3. 机器人控制
在机器人领域,强化学习也得到了广泛的应用。例如,一个机器人可能需要学会如何抓取物体,如何移动或走路。通过不断地“试”抓不同的物体,机器人的“抓取策略”会不断改进,最终学会了如何以最有效的方式抓取物体。
6. 总结
强化学习就是让智能体通过与环境的互动,不断学习、调整自己的行为,以获得更多的奖励。它像是一个不断“试错”的过程,智能体通过尝试各种动作,从失败和成功中学习,最终找到最优的行为策略。
博客都是给自己看的笔记,如有误导深表抱歉。文章若有不当和不正确之处,还望理解与指出。由于部分文字、图片等来源于互联网,无法核实真实出处,如涉及相关争议,请联系博主删除。如有错误、疑问和侵权,欢迎评论留言联系作者,或者添加VX:Rainbook_2,联系作者。✨
相关文章:
【SARL】单智能体强化学习(Single-Agent Reinforcement Learning)《纲要》
📢本篇文章是博主强化学习(RL)领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对相关等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅…...
Linux 权限管理:用户分类、权限解读与常见问题剖析
🌟 快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。🌟 🚩用通俗易懂且不失专业性的文字,讲解计算机领域那些看似枯燥的知识点🚩 目录 💯L…...
Windows通过指令查看已安装的驱动
Windows通过指令查看已安装的驱动 在 Windows 操作系统中,有几种命令可以用来查看已安装的驱动程序。以下是常见的几种方法: 1. 使用 pnputil 查看已安装驱动程序 pnputil 是一个 Windows 内置工具,可以列出所有已安装的驱动程序包。 命令…...
Springboot(五十一)SpringBoot3整合Sentinel-nacos持久化策略
上文中我记录了在Springboot项目中链接sentinel-dashboard使用限流规则的全过程。 但是呢,有一个小小的问题,我重启了一下我本地的sentinel-dashboard服务,然后,我之前创建的所有的流控规则都没了…… 这……好像有点不合理啊,咱就不能找地儿存储一下?你这一重启就没了,…...
Scala的正则表达式
package hfdobject Test35_3 {def main(args: Array[String]): Unit {println("a\tb")//定义一个规则 正则表达式//1. .表示除了换行之外的其他的任意单个字符//2. \d等于[0-9] 匹配一个数字//3. \D除了\d之外的其他的任意字符,表示非数字//4. \w等价于[…...
cuda12.1版本的pytorch环境安装记录,并添加到jupyter和pycharm中
文章目录 前置准备使用anaconda prompt创建虚拟环境创建虚拟环境激活pytorch虚拟环境把pytorch下载到本地使用pip把安装包安装到pytorch环境中进入python环境检验是否安装成功将环境添加到jupyter在pycharm中使用该环境: 前置准备 安装anaconda,我的版本…...
牛客linux
1、 统计文件的行数 # 方法 1 wc -l ./nowcoder.txt | awk {print $1} # 方法 2 ,awk 可以打印所有行的行号, 或者只打印最后一行 awk {print NR} ./nowcoder.txt |tail -n 1 awk END{print NR} ./nowcoder.txt # 方法 3 grep -c 、-n等等 grep -c "" ./…...
通过HTML Canvas 在图片上绘制文字
目录 前言 一、HTML Canvas 简介 二、准备工作 三、绘制图片 四、绘制文字 五、完整代码 效果演示: 前言 HTML canvas 为我们提供了无限的创意可能性。今天,我们就来探索一下如何通过 HTML canvas 将图片和文字绘制到图片上,创造出独特…...
【C#】ListBox中找到多个image中的其中一个并重置赋值以便清理占用内存
1.ListBox中定义多个image 定义ListBox前台代码及Image控件的赋值 <ListBox Background"{DynamicResource BackgroundBrush}" ItemsSource"{Binding ElementNameDRFinish,PathImages}" Style"{x:Null}" Name"ImageList"ItemConta…...
Apache Commons工具类库使用整理
文章目录 Apache Commons工具类库分类- commons-lang3字符串工具:StringUtils日期工具:DateUtils数值工具:NumberUtils对象工具:ObjectUtils数组工具:ArrayUtils异常工具:ExceptionUtils枚举工具࿱…...
npm 设置镜像
要在npm中设置镜像,你可以使用npm config命令。以下是设置npm镜像的步骤: 临时使用淘宝镜像: npm --registry https://registry.npmmirror.com install package-name 永久设置镜像: npm config set registry https://registry…...
数据结构自测5
第6章 树和二叉树 自测卷解答 一、下面是有关二叉树的叙述,请判断正误(每小题1分,共10分) ( √ )1. 若二叉树用二叉链表作存贮结构,则在n个结点的二叉树链表中只有n—1个非空指针域。 ÿ…...
【后端面试总结】缓存策略选择
一般来说我们常见的缓存策略有三种,他们各自的优劣势和实现逻辑分别如下 Cache Aside(旁路缓存) 特点: 灵活性高:应用程序直接与缓存和数据库交互,具有高度的灵活性,可以根据业务需求自定义缓…...
40分钟学 Go 语言高并发:RPC服务开发实战
RPC服务开发实战 一、RPC服务基础概览 开发阶段关键点重要程度考虑因素接口设计API定义、协议选择、版本控制⭐⭐⭐⭐⭐可扩展性、兼容性服务实现业务逻辑、并发处理、资源管理⭐⭐⭐⭐⭐性能、可靠性错误处理异常捕获、错误码、故障恢复⭐⭐⭐⭐稳定性、可维护性性能测试负载…...
Linux 无界面模式下使用 selenium
文章目录 前言什么是无界面模式?具体步骤安装谷歌浏览器查看安装的谷歌浏览器的版本下载对应版本驱动并安装Python 测试代码 总结个人简介 前言 在 Linux 服务器上运行自动化测试或网页爬虫时,常常需要使用 Selenium 来驱动浏览器进行操作。然而&#x…...
算法第一弹-----双指针
目录 1.移动零 2.复写零 3.快乐数 4.盛水最多的容器 5.有效三角形的个数 6.查找总价值为目标值的两个商品 7.三数之和 8.四数之和 双指针通常是指在解决问题时,同时使用两个指针(变量,常用来指向数组、链表等数据结构中的元素位置&am…...
学习如何解决“区间划分”问题(一般方法论+实例应用讲解)
文章目录 解决“区间划分”问题的一般方法论方法论:解决区间划分问题的四步法1. 问题分析与建模2. 动态规划状态的定义3. 状态转移方程4. 初始条件与边界 方法论应用:最小和最大石子合并得分问题描述步骤 1:问题分析与建模步骤 2:…...
消息中间件-Kafka2-3.9.0源码构建
消息中间件-Kafka2-3.9.0源码构建 1、软件环境 JDK Version 1.8Scala Version 2.12.0Kafka-3.9.0 源码包 下载地址:https://downloads.apache.org/kafka/3.9.0/kafka-3.9.0-src.tgzGradle Version > 8.8Apache Zookeeper 3.7.0 2、源码编译 打开源码根目录修改…...
达梦归档文件名与实例对应关系
默认的,达梦归档文件名比较难以看懂,且多实例下不好区分 靠它就行 select upper(to_char((select DB_MAGIC), xxxxxxxxxx)) mag_id; 这样就对上号了。...
STL算法之sort
STL所提供的各式各样算法中,sort()是最复杂最庞大的一个。这个算法接受两个RandomAccessIterators(随机存取迭代器),然后将区间内的所有元素以渐增方式由小到大重新排列。还有一个版本则是允许用户指定一个仿函数代替operator<作为排序标准。STL的所有…...
elementui table滚动分页加载
文章目录 概要 简化的实现示例: 小结 概要 在使用 Element UI 的 Table 组件时,如果需要实现滚动分页加载的功能,可以通过监听 Table 的滚动事件来动态加载更多数据。 简化的实现示例: <template><el-table ref"…...
【MySQL 进阶之路】索引的使用
5.索引的使用规则 在数据库管理系统(DBMS)中,索引是提高查询效率的关键机制之一。MySQL索引优化是指通过设计、调整和选择合适的索引策略,以提高数据库的查询性能和降低资源消耗。以下是一些关键的索引使用规则: 1. …...
FPGA中所有tile介绍
FPGA中包含的tile类型,以xinlinx 7k为例,可以通过f4pga项目中的原语文件夹查看,主要包含以下这些: 以下是您提到的 Xilinx 7 系列 FPGA 中各种模块的含义及用途: 1. BRAM (Block RAM) BRAM 是 FPGA 中的块存储资源&…...
理解 Python PIL库中的 convert(‘RGB‘) 方法:为何及如何将图像转换为RGB模式
理解 Python PIL库中的 convert(RGB) 方法:为何及如何将图像转换为RGB模式 在图像处理中,保持图像数据的一致性和可操作性是至关重要的。Python的Pillow库(继承自PIL, Python Imaging Library)提供了强大的工具和方法来处理图像&…...
LVS默认的工作模式支持哪些负载均衡算法?
LVS默认的工作模式支持哪些负载均衡算法? LVS(Linux Virtual Server)默认支持多种负载均衡算法,这些算法在不同的场景下具有各自的优势。以下是 LVS 默认支持的负载均衡算法及其特点: 1. 轮询调度(Round Robin Sched…...
C/C++中的调用约定
在C/C编程中,调用约定(calling conventions)是一组指定如何调用函数的规则。主要在你调用代码之外的函数(例如OS API,操作系统应用程序接口)或OS调用你(如WinMain的情况)时起作用。如果编译器不知道正确的调用约定,那么你很可能会遇到非常奇怪…...
RAG评估指南:从检索到生成,全面解析LLM性能评估方法
前言 这一节我们将从时间线出发对RAG的评估方式进行对比,这些评估方式不仅限于RAG流程之中,其中基于LLM的评估方式更加适用于各行各业。 RAG常用评估方式 上一节我们讲了如何用ROUGE 这个方法评估摘要的相似度,由于篇幅限制,没…...
极兔速递开放平台快递物流查询API对接流程
目录 极兔速递开放平台快递物流查询API对接流程API简介物流查询API 对接流程1. 注册用户2. 申请成为开发者3. 企业认证4. 联调测试5. 发布上线 签名机制详解1. 提交方式2. 签名规则3. 字段类型与解析约定 物流轨迹服务极兔快递单号查询的其他方案总结 极兔速递开放平台快递物流…...
FFmpeg:强大的音视频处理工具指南
FFmpeg:强大的音视频处理工具指南 1. FFmpeg简介2. 核心特性2.1 基础功能2.2 支持的格式和编解码器 3. 主要组件3.1 命令行工具3.2 开发库 4. 最新发展5. 安装指南5.1 Windows系统安装5.1.1 直接下载可执行文件5.1.2 使用包管理器安装 5.2 Linux系统安装5.2.1 Ubunt…...
项目集成篇:springboot集成redistemple实现自定义缓存,并且可以设置过期时间
在Spring Boot中集成Redis并使用RedisTemplate实现自定义缓存功能,同时能够设置缓存项的过期时间,可以通过以下步骤来完成。我们将创建一个服务层方法,该方法将使用RedisTemplate直接与Redis交互,并为每个缓存项设置特定的过期时间…...
ClickHouse守护进程
背景描述 维护CK过程中,有时候会有CK OOM,并且CK自己没有自动拉起的情况出现;那么这个时候就需要守护进程,最初我不说了Supervisor来做守护进程,但是当我手动kill的时候发现并没有自动拉起。 解决方案 于是乎自己写…...
【Vivado】xdc约束文件编写
随手记录一下项目中学到的约束文件编写技巧。 时序约束 创建生成时钟 参考链接: Vivado Design Suite Tcl Command Reference Guide (UG835) Vivado Design Suite User Guide: Using Constraints (UG903) 通过Clocking Wizard IP创建的时钟(MMCM或…...
Nginx静态资源配置
基本配置原则 明确资源目录:为不同类型的静态资源指定不同的路径,这样可以避免路径冲突,并且便于管理。正确设置文件权限:确保 Nginx 具有读取静态资源的权限。缓存优化:为静态资源设置缓存头(如 expires&…...
365天深度学习训练营-第P7周:马铃薯病害识别(VGG-16复现)
文为「365天深度学习训练营」内部文章 参考本文所写记录性文章,请在文章开头带上「👉声明」 🍺 要求: 自己搭建VGG-16网络框架【达成√】调用官方的VGG-16网络框架【达成√】如何查看模型的参数量以及相关指标【达成√】 &#…...
docker学习笔记(三)--容器数据卷
文章目录 一、数据卷的介绍二、简单用法--直接指定挂载路径三、具名挂载与匿名挂载具名挂载匿名挂载 一、数据卷的介绍 docker将应用和环境打包成一个镜像,形成一个容器运行。那么容器产生的数据,如果不通过docker commit命令提交生成新的镜像ÿ…...
联通光猫DT741-csf 完全po解 改桥接
1.管理员密码破解,把光猫的loid pppoe用户名密码,各个连接vlan id记下来 打开链接 http://192.168.1.1/hidden_version_switch.html version选择Default Version,点击submit,光猫默认重启。重启后ip地址变为192.168.1.1 并且dhcp…...
Java Web 2 JS Vue快速入门
一 JS快速入门 1.什么是JavaScript? 页面交互: 页面交互是指用户与网页之间的互动过程。例如,当用户点击一个按钮,网页会做出相应的反应,如弹出一个对话框、加载新的内容或者改变页面的样式等;当用户在表…...
【数据结构】动态规划-基础篇
针对动态规划问题,我总结了以下5步: 确定dp数组以及下标的含义; 递推公式; dp数组如何初始化; 遍历顺序; 打印dp数组(用来debug); 以上5步适用于任何动态规划问题&#x…...
从watch、watchEffect、useEffect原理到vue、react响应原理
正文 1.核心原理 Vue中的watch、watchEffect是基于Vue的响应式系统(Proxy),依赖于ref或reactive数据的变化。React中的useEffect基于状态驱动的重新渲染机制,通过依赖数组 [dependency],手动声明需要追踪的状态或属性…...
Cursor+Devbox AI开发快速入门
1. 前言 今天无意间了解到 Cursor 和 Devbox 两大开发神器,初步尝试以后发现确实能够大幅度提升开发效率,特此想要整理成博客以供大家快速入门. 简单理解 Cursor 就是一款结合AI大模型的代码编辑器,你可以将自己的思路告诉AI,剩下的目录结构的搭建以及项目代码的实现均由AI帮…...
SpringBoot+MyBatis整合ClickHouse实践
整合Spring Boot、MyBatis和ClickHouse可以让你使用Java开发的应用程序高效地与ClickHouse数据库进行交互。以下是一个基本的步骤指南,帮助你完成这个整合过程: 1. 添加依赖 首先,在你的pom.xml文件中添加必要的Maven依赖。你需要引入Sprin…...
在数据库设计中同步冗余字段的思考与实践
目录 前言1. 冗余字段设计的背景与场景1.1 场景描述1.2 冗余字段的必要性 2. 冗余字段设计的优点2.1 提高查询效率2.2 简化应用逻辑 3. 冗余字段设计的缺点与挑战3.1 数据不一致问题3.2 更新开销增加3.3 数据冗余占用存储空间 4. 如何同步更新冗余字段4.1 手动更新方式4.2 使用…...
MacOS安装sshfs挂载远程电脑硬盘到本地
文章目录 sshfs简介sshfs安装下载安装macFUSE安装sshfs sshfs使用注意事项 sshfs简介 SSHFS(SSH Filesystem)是一种基于FUSE(用户空间文件系统)的文件系统,它允许你通过SSH协议挂载远程文件系统。使用SSHFS࿰…...
6.824/6.5840(2024)环境配置wsl2+vscode
本文是经过笔者实践得出的最速の环境配置 首先,安装wsl2和vscode 具体步骤参见Mit6.s081环境配置踩坑之旅WSL2VScode_mit6s081-CSDN博客 接下来开始为Ubuntu(笔者使用的版本依然是20.04)配置go的相关环境 1、更新Ubuntu的软件包 sudo apt-get install build-es…...
查询产品所涉及的表有(product、product_admin_mapping)
文章目录 1、ProductController2、AdminCommonService3、ProductApiService4、ProductCommonService5、ProductSqlService1. 完整SQL分析可选部分(条件筛选): 2. 涉及的表3. 总结4. 功能概述 查询指定管理员下所有产品所涉及的表?…...
C# 冒泡的算法
C# 冒泡的算法 public void BubbleSort(int[] arr) {int temp;for (int j 0; j < arr.Length - 2; j){for (int i 0; i < arr.Length - 2; i){if (arr[i] > arr[i 1]){temp arr[i 1];arr[i 1] arr[i];arr[i] temp;}}} }使用方法 int[] array new int[] { 5,…...
前端上传后端接收参数为null
记录一下工作中的问题 前端明明把文件传到后台了,但是后台接收参数为null 原因: 前端上传文件的name和后端接收参数名称不匹配 前端 后端 把前端上传的name由upfile改为file即可 本来是很基本的小问题,但因为自己钻了牛角尖一直没搞定&…...
思考:如何把知识更轻松的传递给别人
为什么我会来思考这个问题呢,我想要把我学到的东西传递给其他人,也就是能够成为一个老师,我曾多次尝试解决问题,但是事情总是不如我所愿。现在我进行一定的总结,来复盘一下我的教授过程。 在学生面对新鲜事物的同时&am…...
BERT的中文问答系统50
我们将对BERT的中文问答系统48-1代码进行以下改进: 1.增加时间日期和日历功能:在GUI中增加显示当前时间和日期的功能,并提供一个日历组件。 2.增加更多模型类型:增加娱乐、电脑、军事、汽车、植物、科技、历史(朝代、皇帝)、名人、生活(出行、菜品、菜谱、居家),法律、…...
node.js实现分页,jwt鉴权机制,token,cookie和session的区别
文章目录 1. 分⻚功能2. jwt鉴权机制1.jwt是什么2.jwt的应用3.优缺点 3. cookie,token,session的对比 1. 分⻚功能 为什么要分页 如果数据量很⼤,⽐如⼏万条数据,放在⼀个⻚⾯显⽰的话显然不友好,这时候就需要采⽤分⻚…...