强化学习学习(二)基于价值函数就能做到RL——Q-Learning Q学习

news2024/11/14 2:55:33

文章目录

      • Value funtion methods-为什么我们用回了Q函数?
        • Q-iteration
        • Q-Learning (P30)

Value funtion methods-为什么我们用回了Q函数?

先回顾一下在AC中的基于V函数的框架:
image.png
另一个想法:不依赖梯度,而是直接根据值函数去决定动作:V函数已经告诉了我们哪些状态更好

[!NOTE] 思路:
A π ( s t , a t ) A^\pi(s_t,a_t) Aπ(st,at)意义是动作 a t a_t at比根据策略 π \pi π产生的平均动作reward好多少:Advantage
arg ⁡ max ⁡ a t A π ( s t , a t ) \arg\max_{a_t}A^\pi(s_t,a_t) argmaxatAπ(st,at)表示从状态 s t s_t st出发,按照策略 π \pi π能够采取的最好的动作——我们可以忘掉显式的策略,只用价值去决定动作(想想AC中,我们还有一个神经网络去专门拟合S到a的策略,输出a的分布)
因此,不管策略有多差,总是能够不断选择改善的,这就是Value function methods的基础
image.png

Q-iteration

一个简单的Q-Learning,其实在背后的数学来历如此的深刻。——7.11
根据上面的更新规则,实际上 π ( s ) = a \pi(s)=a π(s)=a是一个固定的策略:总是选择最大收益的动作,因此,V函数可以被简化:
V π ( s ) ← r ( s , π ( s ) ) + γ E s ′ ∼ P ( s ′ ∣ s , π ( s ) ) [ V π ( s ′ ) ] V^\pi(s)\leftarrow r(s,\pi(s))+\gamma E_{s'\sim P(s'|s,\pi(s))}[V^\pi(s')] Vπ(s)r(s,π(s))+γEsP(ss,π(s))[Vπ(s)]
在实际代码中,就是一个存储 V π ( s ) V^\pi(s) Vπ(s)的表格,不断迭代,整个过程不需要显式的策略image.png|400

因为 arg ⁡ max ⁡ a t A π ( s t , a t ) \arg\max_{a_t}A^\pi(s_t,a_t) argmaxatAπ(st,at)是寻找最大值的 a t a_t at,而 A π ( s , a ) A^\pi(s,a) Aπ(s,a):
A π ( s , a ) = r ( s , a ) + γ E [ V π ( s ′ ) ] − V π ( s ) A^\pi(s,a)=r(s,a)+\gamma E[V^\pi(s')]-V^\pi(s) Aπ(s,a)=r(s,a)+γE[Vπ(s)]Vπ(s)
最后一项和a没关系,可以删掉,而删掉之后,就是Q的定义: Q π ( s , a ) = r ( s , a ) + γ E [ V π ( s ′ ) ] Q^\pi(s,a)=r(s,a)+\gamma E[V^\pi(s')] Qπ(s,a)=r(s,a)+γE[Vπ(s)]
因此我们利用新的Q表格与更新方法:
image.png
每次寻找每一行的最大值对应的a,其实也就是 arg ⁡ max ⁡ a t A π ( s , a ) \arg\max_{a_t}A^\pi(s,a) argmaxatAπ(s,a)作为动作,而这个最大值就是V函数。V函数的期望又可以用Q函数的最值来近似,下面是Q迭代的方法:

  1. set Q ( s , a ) ← r ( s , a ) + γ E [ V ( s ′ ) ] Q(s,a)\leftarrow r(s,a)+\gamma E[V(s')] Q(s,a)r(s,a)+γE[V(s)]
  2. set V ( s ) ← max ⁡ a Q ( s , a ) V(s)\leftarrow \max_a Q(s,a) V(s)maxaQ(s,a)

[!NOTE] Q-table -> Q-iteration
由于我们这里还是用的Q表格,因此 E [ V ( s ′ ) ] E[V(s')] E[V(s)]是比较好得到的——对应离散空间
但是,离散的空间维度是 s × s × a s\times s\times a s×s×a,有可能变得非常大,尤其在输入是图像时,因此我们需要借助神经网络去实现策略的更新!
这就是下面这一部分要做的事情(复盘时突然明白了)

试图用神经网络去fit,将会得到
image.png
image.png|350

Q-Learning (P30)

off-policy:Q-iteration不需要从最新的策略去采样,即模型梯度下降了之后仍任可以用之前的数据去训练。成批次的进行采样和训练
image.png|400

on-policy:Q-Learning
因为没法像off-policy一样一次收集多个数据集,在第三步做一个求和,因此才要换一种梯度更新,但是这并不等同于梯度下降,因为不是求目标的梯度
这一块可以多多讲述off和on的区别,还有包括数据集采样的不同和policy的不同
image.png|400

[!探索]
上面off-policy算法中的第一步“用某种策略去执行动作收集数据集”,是指更新策略并去实际环境中运行,收集一些数据集。而更新策略可以用不同的探索方法
我们需要再原本的on-policy基础上改变一下 π ( a t ∣ s t ) \pi(a_t|s_t) π(atst)的更新规则,因为总是选择最好的策略不一定最后最好

  1. π ( a t ∣ s t ) = 1 − ϵ i f a t = arg ⁡ max ⁡ a t Q ϕ ( s t , a t ) \pi(a_t|s_t)=1-\epsilon if a_t=\arg\max_{a_t}Q_\phi(s_t,a_t) π(atst)=1ϵifat=argmaxatQϕ(st,at),有 ϵ \epsilon ϵ的概率去选择别的action
  2. π ( a t ∣ s t ) ∝ exp ⁡ ( Q ϕ ( s t , a t ) ) \pi(a_t|s_t)\propto\exp(Q_\phi(s_t,a_t)) π(atst)exp(Qϕ(st,at)) Boltzmann exploration,优点:已经知道某个action很差,那么大概率不会选它,如果有两个action的value都很高,那么选择他们的概率比较接近。
    整个Q-Learning是不需要具体的policy的,policy被隐式的包含在 max ⁡ a Q \max_aQ maxaQ里面了,但是我们可以通过价值函数去恢复policy
    image.png

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

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

相关文章

vue3+vite 实现动态引入某个文件夹下的组件 - glob-import的使用

<template><div class"user-content"><HeaderTitle title"用户详情"></HeaderTitle><div class"main-content"><div><UserForm /></div><div><TableList></TableList></d…

pytest实战技巧之参数化应用

pytest是Python中最流行的测试框架之一。它提供了丰富的功能&#xff0c;可以帮助我们编写高效、可靠的测试用例。其中一个重要的功能就是参数化&#xff0c;它可以让我们用不同的数据组合来运行同一个测试用例&#xff0c;从而 提高测试覆盖率和效率。本文将介绍pytest参数化的…

python之名称空间和作用域(关键字:global和nonlocal的使用)

文章目录 前言1、名称空间和作用域1.1 引言1.2 名称空间1.2.1 内置名称空间1.2.2 全局名称空间1.2.3 局部名称空间1.2.4 名称空间的产生和销毁顺序 1.3 作用域1.3.1 全局作用域1.3.2 局部作用域1.3.3 名字的查找顺序 1.4 关键字&#xff1a;global1.5 关键字&#xff1a;nonloc…

在eclipse中导入本地的jar包配置Junit环境步骤(包含Junit中的方法一直标红的解决方法)

搭建JUnit环境 下文中我用到的本地jar包可以到我上传的资源中下载&#xff0c;不需要积分 链接&#xff1a;https://download.csdn.net/download/weixin_70987470/89571891?spm1001.2014.3001.5503 一、配置环境 跟上一篇的那种方法不一样&#xff0c;直接Add to Build Path …

MySQL的表,视图,索引创建

一。创建表 1。创建Student表 mysql> create table Student(Sno int primary key auto_increment,Sname varchar(30) not null unique,Ssex varchar(2) check (Ssex 男 or Ssex 女) not null,Sage int not null,Sdept varchar(10) default 计算机 not null); 2.创建Cour…

Linux云计算 |【第一阶段】SERVICES-DAY2

主要内容&#xff1a; DNS服务基础及搭建、特殊解析(针对地址库文件&#xff1a;DNS轮询 DNS泛域名解析 DNS别名&#xff09;、缓存DNS&#xff08;全局转发forwarders&#xff09;、DNS递归迭代&#xff08;子域授权&#xff09;、DNS主从架构搭建、DNS主从数据同步 一、DNS工…

基于Element UI内置的Select下拉和Tree树形组件,组合封装的树状下拉选择器

目录 简述 效果 功能描述 代码实现 总结 简述 基于Element UI内置的Select下拉和Tree树形组件&#xff0c;组合封装的树状下拉选择器。 效果 先看效果&#xff1a; 下拉状态&#xff1a; 选择后状态&#xff1a; 选择的数据&#xff1a; 功能描述 1、加载树结构&…

Python 使用TCP\UDP协议创建一个聊天室

server端代码&#xff1a; #encodingutf-8 # 服务端代码 import socketdef server():server_socket socket.socket(socket.AF_INET, socket.SOCK_STREAM)host socket.gethostname()port 12345server_socket.bind((host, port))server_socket.listen(5)print(等待客户端连接…

如何通过一条SQL变更多个分库分表?

数据库发展到今天&#xff0c;分库分表已经不是什么新鲜话题了&#xff0c;传统的单节点数据库架构在数据量和访问频次达到一定规模时&#xff0c;会出现性能瓶颈和扩展性问题&#xff0c;而分库分表技术通过将数据分散到多个数据库实例中来分担负载&#xff0c;从而提升系统的…

粮信甄选·非凡凸现|携手中粮期货、国信证券共同见证数智交易前沿力量

近日&#xff0c;中粮期货、国信证券联合非凸科技在深圳举办了“粮信甄选&#xff0c;非凡凸现”主题机构洽谈会&#xff0c;与行业专家、私募管理人共同探讨如何推进产业与金融的深度融合&#xff0c;以及实现科技创新与生态合作的新模式。 近年来&#xff0c;国信证券始终聚…

开源物联网网关ThingsBoard IoT Gateway

前几天测试了Neuron&#xff0c;这是一个令人印象深刻的平台&#xff0c;不过它不能算是完全免费的平台&#xff0c;因为它还是有商业许可要求的&#xff0c;挺贵的&#xff0c;大几万的&#xff0c;而且它有走向闭源的趋势。所以也在寻找它的替代方案。 今天看到一个ThingsBo…

最新全新UI异次元荔枝V4.4自动发卡系统源码

简介&#xff1a; 最新全新UI异次元荔枝V4.4自动发卡系统源码 更新日志&#xff1a; 1增加主站货源系统 2支持分站自定义支付接口 3目前插件大部分免费 4UI页面全面更新 5分站可支持对接其他分站产品 6分站客服可自定义 7支持限定优惠 图片&#xff1a; 会员中心截图&…

王春城 | TPM是如何减少设备停机时间的?

在快节奏的生产环境中&#xff0c;设备停机时间无疑是每个企业都头疼的问题。它不仅影响生产效率&#xff0c;还可能造成巨大的经济损失。那么&#xff0c;有没有一种神奇的方法能够一键减少设备停机时间呢&#xff1f;答案就是--TPM&#xff08;全面生产维护&#xff09;&…

【区块链+绿色低碳】双碳数字化管控平台 | FISCO BCOS应用案例

地方政府、园区及企业实现“双碳”目标过程中存在一些挑战与难点&#xff1a; 1. 管理者难以掌握完整、准确、全面的碳排放数据进行科学决策&#xff1a;由于碳排放核算需要对数据的来源、核算方法 的规范性和采集方法的科学性有严格要求&#xff0c;当前面临碳排放数据数据采…

什么是PCB盲孔、埋孔和电镀孔?

PCB有不同类型的孔&#xff0c;根据孔贯穿PCB内外层的层次&#xff0c;孔可分为通孔、埋孔和盲孔。 如您所知&#xff0c; PCB 由堆叠在一起的铜箔层组成.这些“过孔”连接PCB上的不同电路层。它类似于具有相互连接的隧道的地下系统。如果你玩过电子游戏“超级马里奥”&#xf…

基于web的物流配送管理系统/基于客户时间窗变化的物流配送管理系统/快递配送管理系统

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&a…

springboot集成redis之字典缓存

什么是redis的字典缓存&#xff1f; Redis的缓存是Redis内部用于存储键值对数据结构的一种基础数据结构。在Redis中&#xff0c;所有的键值对都是通过字典这种数据结构来存储的。字典在Redis中扮演着核心角色&#xff0c;因为它不仅用于数据库中的键值对存储&#xff0c;还用于…

React 学习——条件渲染、遍历循环、事件绑定

React特点&#xff1a; 声明式的设计高效&#xff0c;采用虚拟DOM来实现DOM的渲染&#xff0c;最大限度减少DOM的操作灵活&#xff0c;跟其他库灵活搭配使用JSX&#xff0c;俗称JS里面写HTML&#xff0c;JavaScript语法的扩展组件化&#xff0c;模块化&#xff0c;代码容易复用…

SQL labs-SQL注入(二)

环境搭建参考 SQL注入&#xff08;一&#xff09; 一&#xff0c;SQL labs-less2。 http://192.168.61.206:8001/Less-2/?id-1 union select 1,2,group_concat(username , password) from users-- 与第一关没什么太大的不同&#xff0c;唯一区别就是闭合方式为数字型。 二…

苹果笔记本电脑如何优化系统 苹果电脑系统优化软件哪个好 cleanmymac x怎么用

随着时间的推移&#xff0c;你可能会发现你的MacBook运行速度变慢&#xff0c;甚至在执行一些基本任务时也会感觉到卡顿。这不仅影响了工作效率&#xff0c;也大大降低了使用体验。但别担心&#xff0c;优化你的Mac系统比做早餐还简单。本文将用一种轻松的风格向你介绍7种简单易…