DRL(自用)

news2024/11/25 23:34:42

RL学习算法

  • 基于策略的算法:这是最通用的优化类型。策略将状态映射到操作。学习策略的 RL 代理可以创建从当前状态到目标状态的动作轨迹

REINFORCE 是一种基于策略的算法。基于策略的算法,优势在于它们可以应用于各种强化学习问题;但是其样本效率很低,需要大量训练才能收敛得到最佳解决方案

  • 基于值的算法:基于值的函数学习评估状态和动作的值。基于值的函数可帮助 RL 代理评估当前状态与动作的预期回报

SARSA 和 DQN 是两种基于价值的算法。基于值的算法比基于策略的 RL 具有更高的样本效率。它们也存在局限性,就是它们仅适用于离散的动作空间(除非你对它们进行一些更改)

  • 基于模型的算法:基于模型的算法采用不同的方法进行强化学习。他们不是评估状态和动作的价值;而是尝试,在给定当前状态和动作的情况下,预测环境的状态。基于模型的强化学习允许代理在采取任何行动之前,预先模拟不同的轨迹。

蒙特卡罗树搜索 (MTCS) 是一种比较流行的基于模型的方法,可应用于确定性环境

Actor-Critic 算法结合了基于策略和基于值的函数的优点。这些算法使用来自价值函数(好比,评论家)的反馈来引导策略学习者(好比,演员)朝着正确的方向前进,从而产生更高效的系统

对于连续控制任务,推荐SAC、TD3和PPO,三种算法都值得试一试并从中择优;对于离散控制任务,推荐SAC-Discrete(即离散版SAC)和PPO。

Q-learning

Q值是一个表格,用于存储每个状态动作对的估计价值

对于给定的状态s和动作a,Q值表示在状态s执行动作a所获得的长期回报估计。

在这里插入图片描述

为什么深度

Q-learning 是一种经典的强化学习算法,它在代理与环境交互时创建了一个状态-动作-奖励值表。当你处理状态和操作数量非常少的简单环境时,此类方法非常有效

当你处理一个复杂的环境时,其中动作和状态的组合数量可能非常巨大,或者环境是不确定的,并且可能存在的状态几乎是无限的;这时,评估每个可能的状态-动作对就变得不可能

你需要一个近似函数,它可以根据有限的数据学习归纳出最佳策略给定正确的架构和优化函数,深度神经网络可以直接学习最优策略

比如,深度强化学习模型可以使用卷积神经网络,从视觉数据中提取状态信息。循环神经网络可以从帧序列中提取有用的信息,例如球的朝向,或者汽车是否停放或移动。这种复杂的学习能力,可以帮助 RL 代理理解更复杂的环境,并将其状态映射到动

DRL简单介绍

每个强化学习问题的核心都是代理和环境

环境提供有关系统状态的信息。代理观察这些状态并通过采取行动环境交互。

动作可以是离散的(例如,拨动开关)或连续的(例如,转动旋钮)。

这些操作会使环境转换到新状态

根据新状态与系统目标相关性的大小,代理会收到不同程度的奖励(如果它使代理远离其目标,则奖励也可以为零或负)

在这里插入图片描述
**「状态-动作-奖励」**的每个循环都称为一个步骤。

强化学习系统持续循环迭代,直到达到所需状态或达到最大步数。

这一系列的步骤称为一个**「情节」或者「集」**。在每一个情节开始时,环境设置为初始状态,代理的奖励重置为零

目标是训练智能体采取行动,以最大化其回报。代理的行动功能称为策略

DRL重要概念

1、智能体
2、环境
3、状态
4、动作
5、奖励
6、策略:策略定义了智能体在给定状态下选择动作的方式
ε-贪婪策略:该策略在选择动作时,以1-ε的概率选择当前最优的动作,以ε的概率选择随机动作
7、值函数:
值函数用来评估状态或状态-动作对的价值,表示从该状态或状态-动作对开始,智能体能够获得的长期累积奖励的期望值

可以使用深度学习网络模型来逼近值函数,比如:让神经网络输入状态,输出各个动作下的奖励值

DRL特点

  • 在每个时刻 agent与环境交互得到一个高维度的观察,并利用 DL 方法来感知观察,以得到抽象、具体的状态特征表示
  • 基于预期回报来评价各动作的价值函数,并通过某种策略将当前状态映射为相应的动作
  • 环境对此动作做出反应,并得到下一个观察.通过不断循环以上过程,最终可以得到实现目标的最优策略
    在这里插入图片描述

过拟合特点

Value函数过拟合环境特性和reward函数,Policy又过拟合Value函数。一朝天子一朝臣,一种环境一种policy,环境换了,policy废了。

基本要求

  • 场景固定:训练环境尽可能做到与工作(测试)环境相同
  • 目标明:最好可以量化
  • 数据廉价,
  • 过程复杂,
  • 自由度高:空间大、限制少

马尔科夫决策过程(MDP)

  • 状态(State):系统或环境可能处于的不同状态。
  • 动作(Action):在每个状态下可选的决策或行动。
  • 转移概率(Transition Probability):在执行某个动作后,系统从一个状态转移到另一个状态的概率分布。
  • 奖励(Reward):在每个状态执行某个动作后获得的即时奖励。
  • 策略(Policy):根据当前状态选择动作的策略

在这里插入图片描述

策略迭代

在策略改进阶段,根据已经计算得到的值函数更新策略,以便在每个状态下选择更好的行动。

通过比较每个行动的价值(即采取该行动后的预期累积奖励),选择在每个状态下最好的行动,从而改进策略

策略迭代的过程是循环进行策略评估和策略改进,直到策略收敛到最优策略为止

ε-greedy策略

平衡探索与利用的关键是在算法中使用ε-greedy策略。ε-greedy策略以ε的概率进行随机探索,选择一个随机动作,以便发现新的状态-动作对。

而以1-ε的概率进行利用,选择具有最高Q值的动作,以最大化累积奖励

较高的ε值会增加探索的概率,但可能导致较低的利用效率;

较低的ε值会降低探索的概率,但可能导致局部最优的陷阱

策略迭代

SARSA(「State-Action-Reward-State-Action」)算法,基于动态规划和迭代更新

是基于当前状态和动作的Q值来更新值函数,而不仅仅是基于最大Q值

它在每个时间步中,根据当前状态选择动作,执行该动作并观察奖励和下一个状态,然后使用下一个状态的动作来更新当前状态的值函数。这种**「即时更新」**的策略使得SARSA算法对于探索和利用之间的平衡具有一定的灵活性。

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

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

相关文章

1 js嵌入html使用

1.1 直接在html内部使用js代码 使用script标签&#xff0c;在前后标签内部写的代码即为js代码。 <body><p id"p1">初始段落</p> <!--id是为了定位需要更改内容的标签--><button type"button" onclick"showNum()">…

App测试中ios和Android的区别

1、Android长按home键呼出应用列表和切换应用&#xff0c;然后右滑则终止应用&#xff1b; 2、多分辨率测试&#xff0c;Android端20多种&#xff0c;ios较少&#xff1b; 3、手机操作系统&#xff0c;Android较多&#xff0c;ios较少且不能降级&#xff0c;只能单向升级&…

【Spring MVC】Spring MVC的功能使用和相关注解介绍

Spring MVC主要有三个功能&#xff1a; 连接获取参数输出数据 对于 Spring MVC 来说&#xff0c;掌握了以上 3 个功能就相当于掌握了Spring MVC。 1.连接 连接的功能&#xff1a;将⽤户&#xff08;浏览器&#xff09;和 Java 程序连接起来&#xff0c;也就是访问⼀个地址能…

Docker 续2

Docker 续2 一、Docker 的数据管理1.1 数据卷1.2 数据卷容器 二、容器操作2.1 端口映射2.2 容器互联&#xff08;使用centos镜像&#xff09;2.3 Docker 镜像的创建2.3.1 基于已有镜像创建2.3.2 基于本地模板创建2.3.3 基于Dockerfile创建2.3.3.1 联合文件系统&#xff08;Unio…

【项目 进程5】 2.10 进程间通信简介 2.11匿名管道概述 2.12父子进程通过匿名管道通信

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 2.10 进程间通信简介(IPC iner process communication)Linux进程间通信的方式&#xff08;记&#xff09; 2.11匿名管道概述匿名管道管道的特点&#xff08;记&…

第一天 运维高级 MySQL备份与还原

1.创建student和score表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4) , birth YEAR, department VARCHAR(20) , address VARCHAR(50) );CREATE TABLE score ( id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO…

a-tree 实现父级节点禁用,通过子级节点勾选状态控制

a-tree 组件实现折叠选择&#xff1b;使其父级节点禁用&#xff0c;通过子级节点的勾选状态来控制是否勾选&#xff1b;如果子级节点勾选任一个&#xff0c;父级节点就勾选中&#xff0c;如果子级节点全部不勾选则父节点不勾选&#xff0c;否则勾选 &#xff0c;效果如下&#…

Vue中TodoList案例_总结

完整项目&#xff1a; App.vue <template><div id"root"><div class"todo-container"><div class"todo-wrap"><MyHeader :addTodo"addTodo"/><MyList :todos"todos" :checkTodo"che…

LeetCode226. 翻转二叉树

226. 翻转二叉树 文章目录 [226. 翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/)一、题目二、题解方法一&#xff1a;层序遍历迭代方法二&#xff1a;前序遍历(递归)方法三&#xff1a;中序遍历&#xff08;递归&#xff09;方法四&#xff1a;后序遍历&#…

c++ visual studio opencv配置

项目属性表配置方式&#xff1a; 1、新建项目后&#xff0c;在属性管理器中&#xff0c;创建一个项目属性表&#xff1a; 注&#xff1a;根据需求创建。 2、双击项目属性表 依次修改包含目录、库目录、附加包含目录、附加依赖项。 2.1【包含目录】中加入 OpenCV 的 include …

为harbor仓库添加https,新增DigiCert 免费版SSL证书

完成效果&#xff1a; 前言&#xff1a;在本地搭建好docker的镜像仓库harbor后&#xff0c;当我们登录docker login时&#xff0c;会提示证书问题x509: cannot validate certificate 登录本地报错X509 无法登录仓库也无法上传和拉取镜像&#xff0c;虽然有本机的解决方法&…

android studio 新建项目没有R文件

android studio 新建项目没有R文件&#xff0c;处理步骤 1&#xff0c;找一个能打开的项目替换根目录下的settings.gradle 2,改app 目录下的build.gradle文件 3&#xff0c;改gradle版本 4&#xff0c;改AndroidManifest.xml 5&#xff0c;改theme 改为&#xff0c;ok.

gtest测试用例注册及自动化调度机制源代码流程分析

gtest的入门参见&#xff1a; 玩转Google开源C单元测试框架Google Test系列(gtest) gtest源码分析流程参见&#xff1a; gtest流程解析 测试用例注册流程分析要点&#xff1a;TEST_F宏替换、C静态成员的动态初始化。 自动化调度流程分析要点&#xff1a;UnitTest、UnitTestIm…

CRM系统的排名?都有哪些特点?

在当今商业世界中&#xff0c;CRM客户管理系统是每一家企业所必不可少的工具。它们能够帮助企业管理客户信息&#xff0c;跟进销售机会以及提高客户体验。众多的CRM中&#xff0c;哪个CRM性价比高&#xff0c;企业该如何选择&#xff1f; 在比较CRM软件时&#xff0c;除基本功…

90道渗透测试面试题(附答案)

2023年已经快过去一半了&#xff0c;不知道小伙伴们有没有找到自己心仪的工作呀。最近后台收到不少小伙伴说要我整理一些渗透测试的面试题&#xff0c;今天它来了&#xff01;觉得对你有帮助的话记得点个赞再走哦~ 1、什么是渗透测试&#xff1f; 渗透测试是一种评估计算机系统…

HCIA练习2

目录 第一步 启动eNSP&#xff0c;搭建如图所示的拓扑结构 第二步 进行子网的划分 ​第三步 从第二步划分的16个网段中&#xff0c;选择14个网段进行使用 第四步 对路由器各个端口进行IP配置 第五步 对每个路由器的环回接口进行配置 第六步 对路由器进行静态路由配…

QT designer的安装+PyUIC 和 PyRCC

PyQt5的安装 整个环境的搭建&#xff0c;主要内容为&#xff1a;Python PyCharm PyQt5 学习pyqt5制作界面的视频推荐网址&#xff1a; https://www.bilibili.com/video/BV1YT4y1r7tK?spm_id_from333.999.0.0&vd_sourceda469f8dadbc58a00f885b3f7be5ef05 配置工具&…

java项目之文物管理系统(ssm+mysql+jsp)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的文物管理系统。技术交流和部署相关看文章末尾&#xff01; 开发环境&#xff1a; 后端&#xff1a; 开发语言&#xff1a;Java 框架&…

Linux系统上安装 Redis 5.0 版本

文章目录 一、安装 gcc二、Redis官网下载安装包三、xftp上传安装包四、解压安装包五、编译与安装&#xff08;make&#xff09;六、后台启动七、查看rdis进程八、客户端连接 一、安装 gcc 安装gcc的主要作用是提供编译器和工具链&#xff0c;因为redis是c语言编写的&#xff0…

基于Vue+Element Plus实现表格组件

目录 前言分析实现例子效果图前言 表格对于管理类项目是很重要的,可以只管的展示和比比较数据。使用Element Plus能解决一部分问题,但是还存在一些缺点和不足。 分析 浏览器上表格数据展示空间不足。列显示太多不够直观。完全依赖官方表格组件代码过于臃肿不利于管理和优化…