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

强化学习(赵世钰版)-学习笔记(8.值函数方法)

本章是算法与方法的第四章,是TD算法的拓展,本质上是将状态值与行为值的表征方式,从离散的表格形式,拓展到了连续的函数形式。
表格形式的优点是直观,便于分析,缺点是数据量较大或者连续性状态或者行为空间时,不能很好的处理(受限于存储和泛化能力)。
而函数形式的优点很明显,比如有10000个点,表格形式需要存储10000个数据,而用函数形式,仅需保存几个参数值,存储压力较小,且有泛化能力(可以生成新的样本点)。下面是一个例子,w是参数向量(parameter vector),因为是线性函数,所以向量维度为2(仅需保存这两个数),φ叫做特征向量(feature vector,专门的叫法)。
需要对应状态值,我们仅需将状态传入函数,即可获得结果,而不是用查表格的形式。
更新状态值的方式也不同,函数法是更新函数的参数向量,这个简介提升了泛化能力,因为为了修改当前值,也会间接影响相邻节点的情况。
但是函数法的缺点是,无法表征的那么精确(本质上是个拟合问题,不一定能找到真实的曲线),所以叫函数近似法。可以提升函数的阶数,从而增加函数的拟合能力。这个高阶曲线,如果将w看做自变量,那么本质上还是线性函数。
后面对值函数方法进行了一个总结,值函数的目的是用一个参数化的方程对状态值与行为值进行一个估计。优点是存储压力小,泛化能力强,难点是如何找到这个函数。
我们在这里用两个函数分别代表真实的状态值和估计出来的状态值,那么问题就变成了一个优化问题,找寻一个最优参数w,使得两者之间的意义是最小的,这样估计值就能尽可能的近似真实值。
这里定义了对应的目标函数,转换成了对目标函数求最小值,并找寻出对应的参数w。
那么这个随机变量S的分布是什么呢?第一种情况就是假设S服从均匀分布,这种方法就是简单,但缺点是真实的状态S不是服从均匀分布,因为各状态之间的重要性是不同的。
第二种情况是假设S服从一个稳定分布,这个稳定分布是马尔科夫过程无限执行下去后,整个系统自动收敛于一个固定的状态概率分布。
后面对稳定分布进一步进行了介绍,本质上还是Markov Process 的内容,无限执行下去,各状态之间的跳转概率就会稳定下来。
从线性代数的角度上看,就是计算这个状态转移矩阵的特征向量(特征值为1)
定义完成目标函数(估计值与真实值差异平方的期望)后,下一步就是对这个目标函数进行优化,用到的方法就是梯度下降法。这里的梯度求导,涉及到了这个期望的计算。
进一步,我们用随机梯度下降代替真实的梯度,从而简化计算。但是,目前仍有一些问题:随机梯度下降的样本采样, 也应满足稳定分布,但是这个采样是随机的。真实的状态值是未知的,也无法直接计算,只能用一个近似来使算法继续执行。
这个真实状态值的近似方法有两个,蒙特卡罗方法和时序差分方法(跟前面几章的内容对上了)
课程中主要介绍了基于时序差分的估计方法,缺点是仅能对状态值进行估计(还有一个行为值需要处理)
还有一个亟待回答的问题,就是这个值函数如何设计。常用的方法有两大类,线性方程和深度学习。
第一种方法的计算过程如下,这种方法叫做时序差分线性(TD-Linear)法。
时序查分线性法的优点是线性模型容易理解,容易将线性函数表征转化为表格类型的表征,缺点是特征向量不好选择。
转化的方式就是找寻一个特殊的特征向量,其本质上是一个One-Hot编码。
通过这个特殊的特征向量,就能把时序查分线性方法,转变成一个熟悉的时序查分表格方法。
这里对时序差分方法进行了一个总结,目标函数的目的是找寻一个值函数,能尽可能近似真实的状态值。用梯度下降法求解这个目标函数的最优解,因为真实的状态值不知道,所以用TD算法来近似。
前面介绍了对状态值的近似,找寻最优策略还需要行为值,行为值的近似一般用Saras算法。
Saras做近似的伪代码如下
类似于Saras算法,Q-Learning算法也能拓展一下用于值函数的近似。
用Q-Learning算法做值函数近似的伪代码如下
而Deep Q-Learning或者DQN,是利用神经网络来做一个非线性函数的近似,这也是深度学习在强化学习中比较成功的应用。
Deep Q-Learning的目的是使目标函数或者损失最小化
如何解决这个优化问题呢,用的是梯度下降。但是这个梯度下降不好计算,在这里引入了一个假设 ,w针对y是个固定值(至少是局部或者临时的)
为了解决这个优化问题,这里引入了两个网络-主网络(main network)和目标网络(target network)。 将目标函数中相加的两部分人为划分为主网络和目标网络,在求梯度的时候,固定住目标网络的参数,以简化梯度的计算。
双网络的模式本质上是计算梯度的一个技巧(为啥有用没看明白,这个假设是否成立,是否对真实结果有影响?)
另一个重要的概念叫做经验回放(Experience Replay),指的是采样到的样本不是直接用,而是先缓存到一个buffer里面。训练网络时,再从这个缓存buffer里面随机均匀采样,生成一个mini-batch用于训练网络。
这里采用经验回放的目的,是因为没有任何的先验知识,所以状态-行为对的分布被假设为均匀分布。
但是我们直接采样是依据某种策略产生的序列生成的,这个序列隐含了样本之间的相关性,所以用经验回放策略先进行缓存,再随机均匀采样生成mini-batch,从而消除样本之间的相关性。
这里又讨论了Q-Learning和Deep Q-Learning之间的差异,为什么有的需要经验回放
后面做了实验,Deep Q-Learning仅用了浅层的网络,就能达到很好的效果。

相关文章:

强化学习(赵世钰版)-学习笔记(8.值函数方法)

本章是算法与方法的第四章,是TD算法的拓展,本质上是将状态值与行为值的表征方式,从离散的表格形式,拓展到了连续的函数形式。 表格形式的优点是直观,便于分析,缺点是数据量较大或者连续性状态或者行为空间时…...

C++编译汇编八股总结

汇编的四个阶段? 预编译(预处理): 预编译是源代码在编译之前进行的一些处理,主要包括宏定义展开、条件编译指令处理和头文件展开等。 编译: 编译器根据源代码的语法和语义规则,将源代码进行词法…...

STM32F4与串口屏通信

淘晶池串口屏操作指令集 那我们就来谈一谈串口屏与STM32F4嵌入式板子的通信 第一,串口屏传输数据给F4板子 这时,我们就该来谈一谈prints函数和printh函数的用法 prints att,length att:变量名称 length:长度(0为自动长度) printh hex hex:需要发送的…...

车载以太网网络测试-20【传输层-DOIP协议-3】

1 摘要 本文继续对ISO 13400-2定义的节点管理报文进行介绍,主要对路由激活请求/响应报文以及在线检查请求/响应报文的作用、帧结构以及示例进行介绍。 上文回顾: 车载以太网网络测试-19【传输层-DOIP协议-2】 在进行详细介绍之前,还是先回顾…...

`chromadb` 是什么

chromadb 是什么 chromadb 是一个开源的向量数据库,它专门用于存储、索引和查询向量数据。在处理自然语言处理(NLP)、计算机视觉等领域的任务时,通常会将文本、图像等数据转换为向量表示,而 chromadb 可以高效地管理这些向量,帮助开发者快速找到与查询向量最相似的向量数…...

基于深度学习的运动想象脑电信号分类研究

标题:基于深度学习的运动想象脑电信号分类研究 内容:1.摘要 背景:运动想象脑电信号分类在康复医学、人机交互等领域具有重要应用价值,但传统方法在处理复杂脑电信号时存在一定局限性。目的:本研究旨在探索基于深度学习的方法对运动想象脑电信…...

HTML5 Video标签详细教程

HTML5 Video标签详细教程 简介 HTML5引入的<video>标签为网页提供了原生视频播放功能&#xff0c;无需依赖Flash等第三方插件。它使得在网页中嵌入和控制视频内容变得简单而强大。本教程将详细介绍<video>标签的使用方法、属性、事件以及相关技术。 基本用法 最…...

【Hbase】查看所有表

在 HBase 中&#xff0c;查看所有表时&#xff0c;通常不需要指定命名空间&#xff0c;除非有特殊需求或配置。以下是一些具体情况&#xff1a; 默认情况下 • HBase Shell&#xff1a;使用list命令时&#xff0c;默认会列出所有命名空间中的所有表&#xff0c;而不仅仅是默认…...

Java 分布式高并发重试方案及实现

文章目录 Java 分布式高并发重试方案及实现一、重试机制的背景和意义二、基于 Spring Boot 的重试方案实现1. 使用 Spring Retry 实现重试机制添加依赖开启重试功能定义重试逻辑使用重试服务 2. 使用 Fast-Retry 实现高性能重试引入依赖编程式重试注解式重试 三、重试机制的注意…...

Spring Boot 集成 Quartz 实现定时任务(Cron 表达式示例)

Spring Boot 集成 Quartz 实现定时任务&#xff08;Cron 表达式示例&#xff09; 前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Spring Boot 观察定时任务执行5. Quartz Cron 表达式详解6. 结论 前言 在 Spring Boot 项目中&#xff0c;我们经常…...

关于“碰一碰发视频”系统的技术开发文档框架

以下是关于“碰一碰发视频”系统的技术开发文档框架&#xff0c;涵盖核心功能、技术选型、开发流程和关键模块设计&#xff0c;帮助您快速搭建一站式解决方案 --- 随着短视频平台的兴起&#xff0c;用户的创作与分享需求日益增长。而如何让视频分享更加便捷、有趣&#xff0c…...

vue3之写一个aichat---已聊天组件部分功能

渲染聊天数据 这个不必多说&#xff0c;直接从stores/chat中取出聊天列表数据渲染就好&#xff0c;因为前面添加的消息都是按照用户消息、AI助手消息这样添加的&#xff0c;效果如图 但是需要注意每条助手消息的状态&#xff0c;需要根据状态显示不同的图标或不显示图标&…...

ffmpeg+ubuntu编译库(完整版本)

个人使用环境: ubuntu desktop 16.04 + ffmpeg 4.2.1创建目录在home目录下创建 ffmpeg_sources:用于下载源文件 ffmpeg_build: 存储编译后的库文件 bin:存储二进制文件(ffmpeg,ffplay,ffprobe,X264,X265等) mkdir ffmpeg_sources ffmpeg_build bin安装依赖 先执行…...

基于STC89C51的太阳自动跟踪系统的设计与实现—单片机控制步进电机实现太阳跟踪控制(仿真+程序+原理图+PCB+文档)

摘 要 随着我国经济的飞速发展&#xff0c;促使各种能源使用入不敷出&#xff0c;尤其是最主要的能源&#xff0c;煤炭石油资源不断消耗与短缺&#xff0c;因此人类寻找其他替代能源的脚步正在加快。而太阳能则具有无污染﹑可再生﹑储量大等优点&#xff0c;且分布范围广&…...

第五: redis 安装 / find 查找目录

redis 安装的 两种方式&#xff1a; mac上安装redis的两种方法_如何在mac上安装redis-CSDN博客 首先可以先看一下brew的常用命令如下&#xff1a; brew search ** //查找某个软件包 brew list //列出已经安装的软件的包 brew install ** //安装某个软件包,默认安装的是…...

c++--vector

1.定义vector vector的定义分为四种 (1)vector() ——————无参构造 (2)vector(size_t n,const value_type& val value_type()) ——————构造并初始化n个val (3)vector(const vector& v1) ———————拷贝构造 (4)vector(inputiterator first,inpu…...

Springboot 项目如何输出优雅的日志

我们先看效果图&#xff1a; 我个人比较喜欢这种格式的日志输出&#xff0c;对其完整&#xff1b; 这种格式其实就是默认的&#xff0c;不需要大家配置任何的 logback-spring 文件和xml中配置日志level 没有做任何多余的配置&#xff1b;...

Linux——进程(5)进程地址空间

先看一个程序和现象 预期现象是&#xff0c;子进程和父进程相互独立&#xff0c;子进程的gval是100&#xff0c;101&#xff0c;102....而父进程一直都是100. 结果我们并不意外&#xff0c;只是我们发现&#xff0c;父子进程的gval的地址是一样的&#xff0c;这有点颠覆我们的认…...

代码随想录_动态规划

代码随想录 动态规划 509.斐波那契数 509. 斐波那契数 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n…...

c库、POSIX库、C++库、boost库之间的区别和联系

文章目录 一、区别1. 定义和来源2. 功能范围3. 可移植性4. 语言支持5. 维护和更新 二、联系1. 相互补充2. 部分功能重叠3. 共同促进编程发展4. 代码兼容性 三、总结 一、区别 1. 定义和来源 C 库函数&#xff1a;由 ANSI C 和 ISO C 标准定义&#xff0c;是 C 语言编程的基础…...

Maven常见问题汇总

Maven刷新,本地仓库无法更新 现象 This failure was cached in the local repository and resolution is not reattempted until the update interval of aliyunmaven has elapsed or updates are forced原因 因为上一次尝试下载&#xff0c;发现对应的仓库没有这个maven配置…...

星越L_陡坡缓降使用讲解

目录 1.陡坡缓降 1.陡坡缓降 中控屏下滑-点击陡坡缓降功能 35km/h以下时生效。35km/h-60km/h该功能暂停 60km/h以上该功能关闭...

XSS跨站脚本攻击漏洞(Cross Site Scripting)

前提概要 本文章主要用于分享XSS跨站脚本攻击漏洞基础学习&#xff0c;以下是对XSS跨站脚本攻击漏洞的一些个人解析&#xff0c;请大家结合参考其他文章中的相关信息进行归纳和补充。 XSS跨站脚本攻击漏洞描述 跨站脚本攻击&#xff08;XSS&#xff09;漏洞是一种常见且危害较…...

html5基于Canvas的经典打砖块游戏开发实践

基于Canvas的经典打砖块游戏开发实践 这里写目录标题 基于Canvas的经典打砖块游戏开发实践项目介绍技术栈核心功能实现1. 游戏初始化2. 游戏对象设计3. 碰撞检测系统4. 动画系统5. 用户界面设计 性能优化1. 渲染优化2. 内存管理 项目亮点技术难点突破项目总结 项目介绍 在这个…...

企业信息化的“双螺旋”——IT治理和数据治理

企业信息化的“双螺旋”——IT治理和数据治理 一、核心定义二、关键差异三、内在联系四、实践挑战与融合路径五、行业案例参考六、结论数据治理(Data Governance)和IT治理(IT Governance)是现代企业数字化转型中的关键概念,二者既有紧密关联又各有侧重。以下从定义、核心内…...

设计模式之工厂模式的优缺点

工厂模式是一种创建对象的设计模式&#xff0c;它将对象的创建和使用分离。以下是工厂模式的优缺点&#xff1a; 优点 - 解耦对象的创建和使用&#xff1a;使得代码的依赖关系更加清晰&#xff0c;使用者不需要了解对象的具体创建过程&#xff0c;只需要关心如何使用对象&a…...

CCBCISCN复盘

AWDP – ccfrum 自己搭了一下环境, 复现一下这道题目, 之前比赛的时候完全没想到这个漏洞要怎么打, 修也不知道要怎么修, 就仅仅是对用户名的账号和密码进行了一下过滤, 完全没起到作用, 唉, 实在太菜 如果想要尝试复现的话可以尝试拉取这个镜像, 我打完之后就直接把这个容器给…...

糊涂人寄信——递推

思路分析&#xff1a;当有n封信&#xff0c;n个信封时。第k封信没有装在第k个信封里&#xff08;k从1~n&#xff09;&#xff0c;就算所有的信封都装错了。我们可以得知的是&#xff0c;当有1封信,时&#xff0c;装错类别数为0。当有两封信时&#xff0c;装错类别为1。 当有三…...

OpenHarmony子系统开发 - 电源管理(一)

OpenHarmony子系统开发 - 电源管理&#xff08;一&#xff09; 一、电源模式定制开发指导 概述 简介 OpenHarmony默认提供了电源模式&#xff08;如正常模式、性能模式、省电模式、超级省电模式&#xff09;的特性。但由于不同产品的部件存在差异&#xff0c;导致在同样场景…...

使用 OpenCV 拼接进行图像处理对比:以形态学操作为例

图像处理在计算机视觉中起着至关重要的作用&#xff0c;而 OpenCV 作为一个强大的图像处理库&#xff0c;提供了丰富的函数来实现各类图像处理任务。形态学操作&#xff08;Morphological Operations&#xff09;是其中常用的技术&#xff0c;尤其适用于二值图像的处理。常见的…...