【强化学习的数学原理-赵世钰】课程笔记(七)时序差分方法

一.内容概述

  • 第五节课蒙特卡洛(Mento Carlo)方法是全课程中第一次介绍 model-free 的方法,本节课的 Temporal-difference learning(TD learning)是我们要介绍的第二种 model-free 的方法。
  • 基于蒙特卡洛(Mento Carlo)的方法是一种非递增(non-incremental)的方法,Temporal-difference learning(TD learning)是一种迭代式(incremental)的方法
  • 第六节课的内容是本节课的铺垫
  • 下节课会介绍 value function approximation 的方法,这个是基于现在我们要介绍的 TD 算法,不过这节课介绍的是基于 table 的(tabular representation),下节课会介绍基于 function 的 representation。非常经典的 deep Q learning 也会在下节课介绍。

本节课内容:

  • 激励性实例(Motivating examples)
  • 估计 state value 的 TD 算法:(在第四章我们使用模型计算 state value(做 state value estimation),在第五章使用蒙特卡洛计算 state value(做 state value estimation),在这章使用时序差分计算 state value(做 state value estimation),所以它们都是在做类似的事情,但是用的方法不一样。)
  • 估计 action value 的 TD 算法:(Sarsa 算法):使用 TD 的思想来学习 action value,然后得到 action value 可以以此为据去更新策略,得到一个新的策略再计算它的 action value,这样不断循环下去就能够不断改进策略,直到最后找到最优的策略。
  • 估计 action value 的 TD 算法:expected Sarsa (Sarsa 算法的变形)
  • 估计 action value 的 TD 算法:n-step Sarsa (Sarsa 算法的变形)
  • 估计最优 action value 的 TD 算法:Q-learning:直接计算 optimal action value,所以他是一个 off-policy 的算法。这就涉及到了 on-policy 和 off-policy 两个概念,在强化学习中有两个策略,一个是 behavior policy,它是用来生成经验数据的,一个是 target policy,这是我们的目标策略,我们不断改进希望这个 target policy 能够收敛到最优的策略。如果 behavior policy 和 target policy 这两个是相同的,那么它就是 on-policy,如果它们可以不同,那这个算法就是 off-policy。off-policy 的好处是,我可以用之前的别的策略所生成的数据为我所用,我可以拿过来进行学习然后得到最优的策略。
  • 一个统一的观点:将这些算法进行比较
  • 总结

一.激励性实例(Motivating examples)-随机问题(stochastic problems)

下面讲几个例子,讲这个例子的目的是为了建立起上节课和这节课的关系

接下来,我们将考虑一些随机问题(stochastic problems),并展示如何使用 RM 算法来解决这些问题


首先,考虑简单的均值估计问题(mean estimation problem):(之前的课程都在反复讲这个问题,我们会从不同角度介绍这个问题):mean estimation 问就是要求解一个 random variable X 的 expectation,用 w 来表示这样一个 expectation 的值,现在有的是 X 的独立同分布(iid)采样,用这些采样求 expectation。这个问题有很多算法可以求解,这里讲解 RM 算法

  • 要求解 w,先把它写成一个函数 g(w)=w-E[X],求解 g(w)=0 的方程,这个方程求解出来自然可以得到它的解 w*=E[X]
  • 因为我们只能获得 X 的采样 {x},w - x 是 g 的测量 g~

  • 这么看的话\alpha_k的取值也是权衡历史值和当前采样,所以也有一种“记忆”的味道在里面 
  • 每次考虑了期望值和结果采样值的差距进行考虑

第二,考虑一个稍微复杂一点的例子:


第三,考虑一个更复杂的例子:

下面这个式子的变量符号都是有目的使用的,R代表 reward,γ 代表 discounted rate,v 就是 state value,X 就是对应 state value 的 state。

  • 这样就可以求出来 action value 了
  • 可以model-free的方式求action value的期望!


快速总结:

  • 上述三个例子越来越复杂。
  • 它们都可以用 RM 算法求解。
  • 我们将看到 TD 算法也有类似的表达式。

二.估计 state value 的 TD 算法(TD learning of state values)

先学习如何用 TD 算法求解一个给定的策略 π 的 state value,之所以求解 state value,是因为求解出来了 state value 就相当于作了 policy evaluation,之后和 policy improvement 相结合,就可以去找最优的策略

请注意

  • TD 学习算法通常指的是一大类 RL 算法。今天这节课讲的所有的算法都是 TD 算法,包括 Q learning
  • TD 学习算法也指下面即将介绍的一种用于估计状态值(state value)的特定算法,下面即将讲的 TD 算法是最经典的 TD 算法,就是来估计 state value 的,有一个非常明确的表达式,这时候它是指一个特定的算法。

算法所需的数据/经验:TD 算法是基于数据,不基于模型实现强化学习的,算法使用的数据/经验(data/experience)如下:

  • 之前不理解为什么v_t(s_t)不写成v_k(s_t),原来一组{s_t,r_t+1,s_t+1}刚好用来更新一次v,所以两个不同意义的下标k和t其实是同步的。 

下面 TD 算法就是要用这些数据来估计 π 对应的 state value,下面正式的给出 TD 算法,包含两个式子: 

  • 最下面两点的翻译:1)在时间t,只有访问状态st的值被更新,而未访问状态s≠st的值保持不变;2)当上下文清楚时,将省略公式(2)中的更新
  • 实际上我们平时看 TD 算法的时候,看不到第二个式子,因为第二个式子隐含掉了,虽然忽略掉了,但是从数学上来讲,是有这样一个式子存在的

下面详细介绍第一个式子:

下面详细介绍上面式子中的两项:

为啥v的下标不用k呢?v下标里的t和s的下标不是同一个t吧

  •  针对某一组数据的吧,同一时刻只能访问一个状态,所以下标一样
  • 这里的t是指的某一时刻的各个变量的值,t+1就代表下一个时刻的值,即我们更新之后的值,没什么问题啊
  • v的脚标t代表迭代,s的脚标t代表位置
  • 是把时间步当成迭代步
  • 是同一个t,表示t时刻所在的状态

s 的下标和v的下标都是用t表示,但是意义不同吧?v的下标t表示时间,s的下标表示第t个状态

  • 我感觉都是表示时间,st+1和st可能根本就不是同一个状态
  • 我个人认为在t时刻,v迭代到了第t次,visit的状态s也达到了第t个
  • 感觉两个t是一样的,因为s每变一步,只更新一次v

 误差期望为啥是0呢

  • 因为这就是自己减自己,贝尔曼公式嘛

V pi 是最优价值吗?

  • v_pi 是在给定策略pi下的state value. 定义记不清可以复习第二课
  • v_pi是对当前策略pi的评估,用来改进策略 

TD误差(TD error)可以解释为创新(innovation),当前我对 vπ 有一个估计,这个估计可能是不准确的,然后来了一个新的数据/经验(data/experience),然后把这个数据/经验(data/experience)和我的估计联系到一起,就计算出来了 error,这个 error 的存在说明当前的估计是不准确的,可以用这个 error 来改进我当前的估计,这意味着新的从经验中获得的信息(st, rt+1, st+1)。


下面介绍 TD 算法的一些其他性质:

  • (3)中的TD算法仅估计给定的一个策略的状态值(state value),所以刚才介绍的 TD  算法只是估计 state value,只是来做 policy evaluation 这样的事情。
  • 它不估计动作值(action value)。
  • 它不寻求最优策略(optimal policies)。
  • 稍后,马上会介绍一系列 TD 算法,他们能够估计 action value,并且和 policy improvement 的步骤结合,就能搜索最优策略。
  • 尽管如此,(3)中的TD算法是理解的基础核心思想。

问:这种 TD 算法在数学上有什么作用?
答:它求解给定策略 π 的贝尔曼方程。

在介绍贝尔曼公式的时候我们已经给出了算法,给出了 closed-form solution 和 iterative solution,在那时候介绍的算法是依赖于模型的,现在是没有模型的。

因此,TD 算法是在没有模型的情况下求解贝尔曼公式。下面要做的就是证明这句话:

首先,引入一个新的贝尔曼公式

TD 算法从本质上讲是求解公式(5)这样一个 equation


第二,使用 RM 算法求解公式(5)这样的贝尔曼公式。之后我们会看到,推导出的 RM 算法与刚才介绍的 TD 算法非常类似,通过这个可以知道,TD 算法就是求解贝尔曼公式的一个 RM 算法


因此,求解贝尔曼公式(5)的 RM 算法是公式(6):

(6) 中的 RM 算法有两个假设值得特别注意。这个式子和刚才我们介绍的 TD 算法非常类似,但是有两个小的不同点:

  • 在这个公式中我们要反复得到 r 和 s' 的采样,当前时刻从 s 出发跳到 s',下一时刻还得从 s 出发跳到 s',要反复采样。这个和 TD 算法中使用 episode 这种时序的顺序的访问是不一样的
  • 上面式子用蓝色标记出来了,在计算 v_k+1 的时候,要用到 v_π(sk'),也就是 sk' 真实的状态值 v_π,但是 v_π 是不知道的。

下面解决这两个不同点:

为了消除 RM 算法中的两个假设,我们可以对其进行修改。

  • 要解决第一个问题就是要把一组采样 {(s, r, s')} 替换成一组序列  {(st, rt+1, st+1)} ,简而言之就是不是从 s 出发得到 r 然后得到 s',然后再从 s 出发得到 r 然后得到 s',而是得到一个 trajectory,如果这个 trajectory 恰巧访问到了 s,就去更新一下 s,如果不访问到 s,那么 s 对应的估计值就保持不动,这样就可以用一个序列对所有 s 的 v 都进行更新。
  • 另一个修改是,因为我们事先不知道 v_π(s'),这是我们要求的,可以把这个 v_π(s')  替换成 v_k(s_k'),也就是替换成 s' 这个状态它的估计值 vk。即用对它的估计值来代替 v_π(s')。(问题:在 v_π 的时候能够收敛,现在给了一个 v_k 是不准确的,还能确保收敛吗?答案是肯定的)

以上是用 RM 算法求解贝尔曼公式的一个思路,当然这个思路相对直观一些,下面会给出它的严格收敛性的分析


TD 算法严格的收敛结果是下面一个定理:

强调:

  • 这个定理说的是,状态值 state value v_t(s) 会收敛到真实的状态值 v_t(s),所以 TD 算法本质上还是在做一个 policy evaluation 的事情,而且是针对给定的一个策略 π。(该定理说明,对于给定的策略 π,TD 算法可以找到策略 π 的状态值)。那么我们怎么样去改进这个策略找到最优的策略呢,因为强化学习的最终目的是找到最优策略,之后我们会介绍,我们需要把 policy evaluation 和 policy improvement 两个相结合才可以)
  • 对任意一个 s,它的和 αt(s) 都应该趋于无穷,即每个状态 s 都应该被访问很多次。当每一个状态被访问的时候对应的 αt(s) 就是一个正数,当当前的 trajectory 是访问其他的状态,那么这个状态没被访问的时候对应的 αt(s) 就是 0,所以 αt(s) 求和等于无穷意味着它实际上被访问了很多次
  • 学习率 α 通常被选为一个小常数。在这种情况下,条件 (α 2 t (s) < ∞ 看图片)已经失效,即这个条件不成立,但是在实际当中为什么这么做呢,因为实际中是比较复杂的,我们希望很久之后我所得到的这些经验仍然能够派上用场,相反如果 αt 最后趋向于 0 了,那很久之后的经验就没用了,所以我们只是把它设置成一个很小的数,但是不让它收敛到完全是 0。当 α 为常数时,仍然可以证明算法在期望意义上收敛。

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

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

相关文章

【数据结构高阶】并查集

目录 一、什么是并查集 二、并查集的原理 三、并查集的作用 四、并查集的代码实现 一、什么是并查集 在一些应用问题中&#xff0c;需要将n个不同的元素划分成一些不相交的集合。开始时&#xff0c;每个元素自成一个 单元素集合&#xff0c;然后按一定的规律将归于同一组元…

【LeetCode每日一题】【BFS模版与例题】【二维数组】1293. 网格中的最短路径

BFS基本模版与案例可以参考&#xff1a; 【LeetCode每日一题】【BFS模版与例题】863.二叉树中所有距离为 K 的结点 【LeetCode每日一题】【BFS模版与例题】【二维数组】130被围绕的区域 && 994 腐烂的橘子 思路&#xff1a; 特殊情况&#xff1a; 最短的路径是向下再向…

【电路笔记】-双极晶体管

双极晶体管 文章目录 双极晶体管1、概述2、双极晶体管结构3、双极晶体管配置3.1 共基极 (CB) 配置3.2 共发射极 (CE) 配置3.3 共集极 (CC) 配置4、总结1、概述 双极结型晶体管是一种可用于开关或放大的半导体器件。 与半导体二极管不同,半导体二极管由两片半导体材料组成,形…

StarUML6.0.1使用

1. 简介 作为一个软件开发人员&#xff0c;平时免不了做一定的软件设计&#xff0c;标准做法就是采用UML来设计&#xff1a; 讨论功能流程时采用时序图、活动图来表达&#xff1b;做业务功能架构时采用组件图来表达&#xff1b;做系统部署架构时采用部署图来表达&#xff1b;做…

因implements Interface书写顺序导致的Dubbo翻车实录

今天迁移Dubbo的代码&#xff0c;突然有个Service死活都找不到。 调用端报错&#xff1a; No provider available for the service org.ccframe.subsys.core.service.ITenantSearchService from registry 127.0.0.1:2181 on the consumer 192.168.1.88 using the dubbo version…

HTTPS如何保证数据传输的安全性 以及CA签发证书验签

暴力输出&#xff1a; 越看会越深入&#xff0c;睡前难以想通&#xff0c;后深入研究。得之。 有问题 请留言。 ----------追求内心的富足与平和。日行一善。 亓苏姑娘

Ollama--本地大语言模型LLM运行专家

文章目录 1、问题提出2、解决方案3、Ollama介绍3.1、Ollama的核心功能3.2、Ollama的独特之处 4、Ollama安装与使用4.1、Ollama的安装 5、使用Docker6、模型库和自定义模型7、应用场景展望8、结语 1、问题提出 使用chatgpt之类的闭源大语言模型时&#xff0c;我们与ai沟通的数据…

I.MX6ULL_Linux_驱动篇(54)linux 块设备驱动

前面我们都是在学习字符设备驱动&#xff0c;本章我们来学习一下块设备驱动框架&#xff0c;块设备驱动是Linux 三大驱动类型之一。块设备驱动要远比字符设备驱动复杂得多&#xff0c;不同类型的存储设备又对应不同的驱动子系统&#xff0c;本章我们重点学习一下块设备相关驱动…

【控制台警告】npm WARN EBADENGINE Unsupported engine

今天用webpack下载几个loader依赖&#xff0c;爆出了三个警告&#xff0c;大概的意思就是本地安装的node和npm的版本不是很匹配&#xff1f; 我的解决思路是&#xff1a; 先检查node和npm版本 然后去官网查找版本的对应 靠&#xff0c;官网404 Node.js (nodejs.org) 就找到…

操作系统:初识操作系统

目录 1.冯诺依曼体系结构 2.操作系统 2.1什么是操作系统 2.2为什么需要操作系统 2.3怎么实现操作系统 1.冯诺依曼体系结构 对于上图&#xff1a; 输入设备完成的是写入工作&#xff0c;输出设备完成输出工作&#xff0c;这两部分包含磁盘这类的外存。 存储器一般指的是内存…

Win UI3开发笔记(四)设置主题续2

本机深色主题下设置的背景颜色可以作用于整个对话框&#xff0c;本机浅色模式下设置的背景颜色只作用与下边的部分。 如果本机选深色&#xff0c;程序选浅色&#xff0c;设置为light只对上部分管用&#xff0c;下部分不管用。如图&#xff0c;左边那个hello按钮要看不见了。。…

183基于matlab的非线性调频模态分解(VNCMD)

基于matlab的非线性调频模态分解(VNCMD)&#xff0c;一种基于变分方法的信号分解技术&#xff0c;它将信号分解为多个模式。能够处理非线性调频信号&#xff0c;且对噪声具有较好的鲁棒性。VNCMD的基本原理是通过最小化信号与模式之间的差异来实现信号的分解。程序已调通&#…

Latte:一个类似Sora的开源视频生成项目

前段时间OpenAI发布的Sora引起了巨大的轰动&#xff0c;最长可达1分钟的高清连贯视频生成能力秒杀了一众视频生成玩家。因为Sora没有公开发布&#xff0c;网上对Sora的解读翻来覆去就那么多&#xff0c;我也不想像复读机一样再重复一遍了。 本文给大家介绍一个类似Sora的视频生…

最简单的基于 FFmpeg 的 AVDevice 例子(屏幕录制)

最简单的基于 FFmpeg 的 AVDevice 例子&#xff08;屏幕录制&#xff09; 最简单的基于 FFmpeg 的 AVDevice 例子&#xff08;屏幕录制&#xff09;简介libavdevice 使用抓屏方法gdigrabdshow 源程序结果工程文件下载参考链接 最简单的基于 FFmpeg 的 AVDevice 例子&#xff08…

ASUS华硕天选2锐龙版笔记本电脑FA506ICB/FA706IC原装出厂Windows11系统,预装OEM系统恢复安装开箱状态

链接&#xff1a;https://pan.baidu.com/s/122iHHEOtNUu4azhVPnxNuA?pwdsqk7 提取码&#xff1a;sqk7 适用型号&#xff1a; FA506IM、FA506IE、FA506IC、FA506IHR FA506IR、FA506IHRB、FA506ICB、FA506IEB FA706IM、FA706IE、FA706IC、FA706IHR FA706IR、FA706IHRB、F…

CSS的浮动属性,微信web开发

面试前的准备 在这部分&#xff0c;我将详细讲解面试前我们需要做哪些方面的工作&#xff0c;以保证我们在面试过程中更加顺利。 准备一份漂亮的简历 一份漂亮的简历就是你进入大厂的敲门砖。 网上有很多教程教大家如何写出一份漂亮的简历&#xff0c;这里我就不做重复劳动了…

开源模型应用落地-工具使用篇-Ollama(六)

一、前言 在AI大模型百花齐放的时代&#xff0c;很多人都对新兴技术充满了热情&#xff0c;都想尝试一下。但是&#xff0c;实际上要入门AI技术的门槛非常高。除了需要高端设备&#xff0c;还需要面临复杂的部署和安装过程&#xff0c;这让很多人望而却步。不过&#xff0c;随着…

LiveNVR监控流媒体Onvif/RTSP功能-视频广场点击在线或离线时展示状态记录快速查看通道离线原因

LiveNVR视频广场点击在线或离线时展示状态记录快速查看通道离线原因 1、状态记录1.1、点击在线查看1.2、点击离线查看 2、RTSP/HLS/FLV/RTMP拉流Onvif流媒体服务 1、状态记录 1.1、点击在线查看 可以点击视频广场页面中&#xff0c; 在线 两个字查看状态记录 1.2、点击离线查…

Thinkphp5.1中,将数组赋值给js使用

一、例如Thinkphp5.1中的的代码是这样的 $data [status > 1,msg > 加载成功,data > [id > 1,username > 小洪帽,] ];$this->assign(data,$data);二、JS代码接收PHP中的数组 注意 <> 符号是不需要放引号的。 let arr <?json_encode($data)?>…

【Godot4自学手册】第二十节增加游戏的打击感,镜头震颤、冻结帧和死亡特效

这节我主要学习增加游戏的打击感。我们通过镜头震颤、冻结帧、增加攻击点特效&#xff0c;增加死亡。开始了。 一、添加攻击点特效 增加攻击点特效就是&#xff0c;在攻击敌人时&#xff0c;会在敌人受击点显示一个受击动画。 1.添加动画。 第一步先做个受击点动画。切换到…