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

RL--2

强化学习当中最难的两个点是:
1.reward delay;
2.agent的行为会影响到之后看到的东西,所以agent要学会探索世界;

关于强化学习的不同类型,可以分为以下三种:
一种是policy based:可以理解为它是去学习一个很强的actor,由actor去指导下一步的行动;
一种是value-based:学习一个好的critic,这个critic其实就是价值函数,由价值函数去指导做下一步的行动;
还有一种是当下最流行的二者结合的方法叫actor+critic,也是PPO 用的方法;
在这里插入图片描述

policy based

在这里插入图片描述
首先我们用神经网络去学习一个actor,他需要根据环境观察到的state(obervation)去得到action的output;
加下来,我们要判断这个action好不好,靠的是环境反馈的reward;
对于一次的游戏体验而已,reward是每次action累计的return的总和;
在这里插入图片描述
但是,我们知道游戏具有随机性,每次的整个游戏过程我们记录为T(s1,a1,r1…);
哪怕我们使用同一个actor,由于游戏本身的随机性T也是不一样的;
但是不同的actor得到的T的概率和倾向性肯定是不一样的;
比如说如果你的actor是见到敌人就呆住,那么你的T大概率就是敌人一出现你就挂了;
所以我们不能拿单次游戏的reward作为此actor的reward,我们要进行多次游戏,这就好比在T的分布中进行采样;N次采样取平均作为这个actor的reward;
在这里插入图片描述
接下来我们的目标是优化actor的参数去最大化游戏反馈的reward;
在这里插入图片描述
注意Trajactery对应得reward跟待优化的参数没关系,他是环境的反馈,所以可不可导无所谓;
在这里插入图片描述
在这里插入图片描述
这里要注意R(T)是某个trajactory完成后的reward,而不是某个action的reward,这个也很好理解;
在这里插入图片描述
关于这里为什么要取log的解释是,不同的action采样到的频次不一样,模型会提升采样到的多的action的概率,哪怕reward没有很高,所以要除以概率本身,这样子本来比较高概率的action的grad就会变小
在这里插入图片描述
注意R(T)如果都是正值应该不会有问题,也就意味着每个action都会被激励,只是激励有大有小,但是如果说采样过程中有个action没有采样到,不知道action a的reward是多少,这就会导致action a的概率比较低,所以最好给reward减去一个bias,这个bias是我们自己设计的。这样reward有正有负之后,可以去掉采样不均匀带来的一些影响
在这里插入图片描述
所以整个policy based RL的整体流程就是:现有一个初始化参数的actor,然后去sample(其实就是跟环境交互的过程)获取路径、行动、反馈,再拿上面三个去训练model,更新参数,其实log后面那部分和我们正常的深度学习网络一样的,(input就是s,label就是action a)只是前面会乘以整个路径的reward的系数,也就是把reward作用在这个actor上;
在这里插入图片描述
在这里插入图片描述
如果我们的enviroments和reward是model的话,可以直接训练;但如果不是,不能微分的话,就用policy gradient硬train一发;
在这里插入图片描述
这里的critic其实就是价值函数;
在这里插入图片描述
如何衡量价值函数好不好?很简单,价值函数的衡量越接近实际的reward越好;
在这里插入图片描述
我们需要给每一个action合理的reward;上述的同一个trajectory里面的每个action都是相同reward显然不合理,一个action的reward首先跟以往历史的action的reward无关,其次随时间会递减reward的影响;下图中的advantage function是相对于其他action,在当前actor采用本action的credit;
在这里插入图片描述
关于on policy,也就是采样数据=》更新model=>采样数据=》更新model的循环;
因为我们每次要根据trajectory最终的reward去计算每个action的credit,所以要等到一批数据采集完才能更新,当前的数据一旦更新完model就不能在用了,因为它只适用于当前的policy model,更新后policy model就变了;所以这个过程很繁琐耗时间;
off policy的意思就是我们训练的model和我们采集数据的model不是同一个model,我们可以随意选取一个actor去采集数据(大量数据),分布的事情可以靠分布之间的变换解决(关于这个变换后面的视频没有具体看,下次可以补上)
在这里插入图片描述
我们观察数据的actor的分布和实际train的actor的分布不能差太多,差太多以下近似公式会不成立
在这里插入图片描述
上图最后一项是待优化的函数:顾名思义:当前actor根据s采取的action的概率乘以对应的credit,我们希望其越大越好;

上面说到,我们不希望采样数据的分布和训练的actor分布差别太大,那么就需要用到限制,TRPO是额外加出来的限制,不好训练,用的少,PPO就是把限制加入到优化函数里面去了;然后关于beta的值是个动态调整的值,我们会自己设一个LKL最大最小值,超过最大值,就调小beta,反之亦然;这里要注意的是,KL计算的不是参数之间的距离,而是behaivor之间的距离;通用采样数据的s和a就可以计算;

在这里插入图片描述
PPO
在这里插入图片描述
PPO2的加了个clip来做,意思就是看图:如果A>0是正激励,就希望P越大越好,但是也不要太大,如果A<0是负激励,就希望P越小越好,但是也不要太小;
在这里插入图片描述
PPO就是紫色的线,可以看到PPO算法在RL中算是非常稳定和性能好的;
在这里插入图片描述

相关文章:

RL--2

强化学习当中最难的两个点是&#xff1a; 1.reward delay&#xff1b; 2.agent的行为会影响到之后看到的东西&#xff0c;所以agent要学会探索世界&#xff1b; 关于强化学习的不同类型&#xff0c;可以分为以下三种&#xff1a; 一种是policy based&#xff1a;可以理解为它是…...

[JVM篇]分代垃圾回收

分代垃圾回收 分代收集法是目前大部分 JVM 所采用的方法&#xff0c;其核心思想是根据对象存活的不同生命周期将内存划分为不同的域&#xff0c;一般情况下将 GC 堆划分为老生代(Tenured/Old Generation)和新生代(Young Generation)。老生代的特点是每次垃圾回收时只有少量对象…...

Dify本地安装

目录 方式一docker安装&#xff1a; 方式二源码安装&#xff1a; Dify本地安装可以用docker方式&#xff0c;和源码编译方式。 先到云厂商平台申请一台Centos系统云主机&#xff0c;网络选择海外&#xff0c;需要公网IP&#xff0c;再按一下流程操作&#xff1a; 方式一doc…...

python | 两招解决第三方库安装难点

前言 python 被广泛应用的原因之一&#xff0c;便是拥有大量的第三方库&#xff0c;涵盖 web 开发、数据分析和机器学习等多个方面。 对于多数初学者来说&#xff0c;如何成功安装 python 第三方库成为了一大难点&#xff0c;总是因各种原因导致安装失败。 本文以自身经验&a…...

stm32mp15x 之 M4 使用 canfd

目录 序配置添加注坑参考 序 在使用 stm32mp15x 系列时&#xff0c;M4 有不少的坑&#xff0c;这里简单聊聊使用 canfd 时遇到的一些问题。 配置 这里使用 PLL4R 为 100M&#xff0c;用于 CANFD 的时钟 canfd 速率配置成 1M &#xff0c;5M&#xff0c;其中数据传输速率为 5M…...

第七天:数据提取-正则表达式

每天上午9点左右更新一到两篇文章到专栏《Python爬虫训练营》中&#xff0c;对于爬虫有兴趣的伙伴可以订阅专栏一起学习&#xff0c;完全免费。 键盘为桨&#xff0c;代码作帆。这趟为期30天左右的Python爬虫特训即将启航&#xff0c;每日解锁新海域&#xff1a;从Requests库的…...

Python入门全攻略(六)

文件操作 文件路径 绝对路径:D:\pythonLearing\fileOperating.exe 相对路径:./fileOperating.exe # ./表示当前目录 # ../表示上一级目录 字符编码 字符集编码说明ASCll 最早的字符编码标准之一,基于拉丁字母的字符集,一共有128个字符GBK(国际码)用于简体中文的字符编码,…...

MongoDB副本集

副本集架构 对于mongodb来说&#xff0c;数据库高可用是通过副本集架构实现的&#xff0c;一个副本集由一个主节点和若干个从节点所组成。 客户端通过数据库主节点写入数据后&#xff0c;由从节点进行复制同步&#xff0c;这样所有从节点都会拥有这些业务数据的副本&#xff0…...

登录弹窗效果

1&#xff0c;要求 点击登录按钮&#xff0c;弹出登录窗口 提示1&#xff1a;登录窗口 display:none 隐藏状态&#xff1b; 提示2&#xff1a;登录按钮点击后&#xff0c;触发事件&#xff0c;修改 display:block 显示状态 提示3&#xff1a;登录窗口中点击关闭按钮&#xff0…...

C++上机_日期问题

1.求下一天的年月日 问题 已知某天的年月日&#xff0c;求下一天的年月日。 思路 参数&#xff1a;年&#xff0c;月&#xff0c;日&#xff08;int) 返回值&#xff1a;void 处理&#xff1a;根据参数所给年月日&#xff0c;求下一天的年月日 思路: 1、定义一个数组&a…...

应对DeepSeek总是服务器繁忙的解决方法

最近由于访问量过大&#xff0c;DeepSeek服务器官网经常弹出&#xff1a;“服务器繁忙&#xff0c;请稍后再试”的提示&#xff0c;直接卡成PPT怎么办&#xff1f;服务器繁忙直接看到视觉疲劳&#xff1a; 解决DeepSeek卡顿问题 DeepSeek使用卡顿问题&#xff0c;是因为访问量…...

web第三次作业

弹窗案例 1.首页代码 <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>综合案例</title><st…...

力扣 438.找到字符串中所有字母异位词

题目&#xff1a; 给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 示例 1: 输入: s "cbaebabacd", p "abc" 输出: [0,6] 解释: 起始索引等于 0 的子串是 "cb…...

【Python】Python入门——基础语法及顺序语句

Python入门——基础语法及顺序语句 官方文档地址&#xff1a;https://docs.python.org/zh-cn/3/tutorial/index.htmlPython 是一门易于学习、功能强大的编程语言。它提供了高效的高级数据结构&#xff0c;还能简单有效地面向对象编程。Python 优雅的语法和动态类型以及解释型语…...

2.2 反向传播:神经网络如何“学习“?

一、神经网络就像小学生 想象一个刚学算术的小学生&#xff0c;老师每天布置练习题&#xff0c;学生根据例题尝试解题&#xff0c;老师批改后指出错误。神经网络的学习过程与此相似&#xff1a; 输入层&#xff1a;相当于练习题&#xff08;如数字图片&#xff09;输出层&…...

frp-tool,客户端frp命令行工具

在日常开发和运维过程中&#xff0c;端口转发和配置管理是常见的需求。 如果有自己一台服务器&#xff0c;并且已经开放好端口&#xff0c;配置好token后&#xff0c;这个工具一定能帮到你。 今天给大家推荐一款非常好用的frpc命令行工具&#xff0c;它是一个用Python编写的命令…...

【学术投稿-第五届应用数学、建模与智能计算国际学术会议】CSS伪类选择器深度解析:分类、应用与技巧

大会官网&#xff1a;www.cammic.org 大会时间&#xff1a;2025年3月21-23日 大会地点&#xff1a;中国-上海&#xff08;上海大学宝山校区北大门乐乎新楼&#xff09; 简介 第五届应用数学、建模与智能计算&#xff08;CAMMIC 2025&#xff09;将于2025年3月21-23日在中国…...

常用查找算法整理(顺序查找、二分查找、哈希查找、二叉排序树查找、平衡二叉树查找、红黑树查找、B树和B+树查找、分块查找)

常用的查找算法&#xff1a; 顺序查找&#xff1a;最简单的查找算法&#xff0c;适用于无序或数据量小的情况&#xff0c;逐个元素比较查找目标值。二分查找&#xff1a;要求数据有序&#xff0c;通过不断比较中间元素与目标值&#xff0c;将查找范围缩小一半&#xff0c;效率…...

Express 中 res 响应方法详解

一、res.send() 1. 功能 该方法用于发送各种类型的响应&#xff0c;包括字符串、对象、数组、Buffer 等。它会自动设置响应的 Content-Type 头。 2. 示例代码 const express require("express");const app express();app.get("/", (req, res) > {…...

DeepAR:一种用于时间序列预测的深度学习模型

介绍 DeepAR是一种基于递归神经网络&#xff08;RNN&#xff09;的时间序列预测模型&#xff0c;由亚马逊在2017年提出。它特别适用于处理多变量时间序列数据&#xff0c;并能够生成概率预测。DeepAR通过联合训练多个相关时间序列来提高预测性能&#xff0c;从而在实际应用中表…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

Vue 模板语句的数据来源

&#x1f9e9; Vue 模板语句的数据来源&#xff1a;全方位解析 Vue 模板&#xff08;<template> 部分&#xff09;中的表达式、指令绑定&#xff08;如 v-bind, v-on&#xff09;和插值&#xff08;{{ }}&#xff09;都在一个特定的作用域内求值。这个作用域由当前 组件…...

数据结构:递归的种类(Types of Recursion)

目录 尾递归&#xff08;Tail Recursion&#xff09; 什么是 Loop&#xff08;循环&#xff09;&#xff1f; 复杂度分析 头递归&#xff08;Head Recursion&#xff09; 树形递归&#xff08;Tree Recursion&#xff09; 线性递归&#xff08;Linear Recursion&#xff09;…...