# Chapter 5

news/2023/12/2 11:14:20

Chapter 5

Gradient Temporal-Difference Learning with Linear Function Approximation

本章提供了线性函数近似情况下梯度-TD算法的核心思想和理论结果。在这里,我们在Baird(1995;1999)的工作基础上,探讨了用于线性函数逼近的时差学习的真正随机梯度下降算法的发展。

特别是,我们引入了三种新的TD算法,与线性函数逼近和off-policy训练兼容,其复杂度仅以函数逼近器的大小为线性扩展。第一种算法,GTD,估计TD(0)算法的the expected update
vector,并对其L2范数进行随机梯度下降;即norm of the expected TD update,也称为NEU(见第三章)。

在第5.3节中,我们证明了在通常的随机逼近条件和off-policy数据的i.i.d.假设下,GTD是稳定的,并且收敛于TD-解。第二和第三种算法,GTD2和TDC(带有梯度修正项的TD),和GTD一样被推导并证明是收敛的,但使用了预测的贝尔曼误差目标函数(见第三章),收敛速度明显加快(但仍然没有传统TD快)。

在我们对小型测试问题的实验中,这些算法的学习率与TD(0)进行了比较。为了进一步了解这些新算法在大规模问题上的表现,David Silver在一个具有一百万个特征的计算机围棋应用程序中实现了梯度TD算法(见Sutton, Maei, et al. 2009)。

我们的实证结果表明,TDC的收敛速度快于GTD2和GTD,但在on-policy问题上,它仍然可能比TD(0)慢。所有这些新的线性算法都将线性TD(0)扩展到有收敛保证的off-policy学习中,而计算要求却增加了一倍。

实验结果表明,TDC算法是GTD和GTD2算法中效率最高的算法。因此,在接下来的章节中,我们将构建基于TDC的新算法

5.1 Derivation of the GTD algorithm

接下来,我们将介绍导致GTD算法的想法和梯度下降的推导。正如前一章所讨论的(见第4.1节中的off-policy i.i.d.表述),我们考虑i.i.d.样本 ( S k , R k , S k ′ ) k ≥ 0 (S_k,R_k, S'_k)_{k≥0} (Sk,Rk,Sk)k0,由过渡的起始状态、过渡的奖励以及过渡的结束状态组成。对于线性函数逼近的情况,第k个对应于三元组 ( ϕ k , R k , ϕ k ′ ) (\phi_k,R_k, \phi'_k) (ϕk,Rk,ϕk),其中 ϕ k = ϕ ( S k ) , ϕ k ′ = ϕ ( S k ′ ) \phi_k=\phi(S_k),\phi'_k=\phi(S'_k) ϕk=ϕ(Sk)ϕk=ϕ(Sk)

注意,起始态分布为μ,状态转移概率为P,向量 E [ δ ϕ ] \mathbb E[\delta\phi] E[δϕ]是expected TD update,可被视为当前解θ中的误差。向量应该是零,所以它的范数是我们离TD解有多远的度量。我们对时间差分学习的梯度下降分析的一个显著特征是,我们使用该向量的L2范数作为我们的目标函数:

在这里插入图片描述

E [ δ ϕ ] = 0 \mathbb E[δ\phi]=0 E[δϕ]=0时,它的最小值为0。 这个目标函数的梯度方向为

在这里插入图片描述

如果梯度可以写成一个单一的期望值,这是直接的,但是这里我们有两个期望值的乘积。我们不能同时对它们进行抽样,因为抽样乘积会因为它们的相关性而产生偏差。然而,我们可以存储其中一个期望值的长期、准稳定的估计值,然后对另一个期望值进行采样。问题是,哪个期望值应该被估计和存储,哪个应该被采样?这两种方法似乎都会导致我们采用不同的算法。

首先,让我们考虑通过forming and storing第一个期望值的单独估计得到的算法;也就是矩阵 A = E [ ϕ ( ϕ − γ ϕ ′ ) T ] A=\mathbb E[\phi(\phi-γ\phi')^T] A=E[ϕ(ϕγϕ)T]。这个矩阵可以根据经验直接估计为所有先前观察到的样本外积 ϕ ( ϕ − γ ϕ ′ ) T \phi(\phi-γ\phi')^T ϕ(ϕγϕ)T的简单算术平均值。请注意,在任何固定策略的策略评价问题中,A是一个固定的统计量;它不依赖于θ,如果θ发生变化,也不需要重新估计。让 A k A_k Ak是观察了前k+1个样本后对A的估计, ( ϕ 0 , R 0 , ϕ 0 ′ ) , . . . , ( ϕ k , R k , ϕ k ′ ) (\phi_0,R_0, \phi'_0),..., (\phi_k,R_k, \phi'_k) (ϕ0,R0,ϕ0),...,(ϕk,Rk,ϕk) 。那么这个算法的定义是

在这里插入图片描述

其中 θ 0 θ_0 θ0是任意的, δ k = R k + γ θ k T ϕ k ′ − θ k ϕ k , ( α k ) k ≥ 0 δ_k = R_k + γθ^T_k\phi'_k - θ_k\phi_k,(αk)_{k≥0} δk=Rk+γθkTϕkθkϕk(αk)k0是一系列的步长参数,可能随着时间的推移而减少。我们在此不进一步考虑上述算法,因为它需要O(d2)内存和每个时间步长的计算。

估计梯度(5.1)的随机逼近算法的第二种方法是形成并存储第二个期望的估计值,即向量 E [ δ ϕ ] \mathbb E[δ\phi] E[δϕ],并对第一个期望进行采样,即 E [ ϕ ( ϕ − γ ϕ ′ ) T ] \mathbb E[\phi(\phi-γ\phi')^T] E[ϕ(ϕγϕ)T]。让 u k u_k uk表示观察前k个样本后对 E [ δ ϕ ] \mathbb E[δ\phi] E[δϕ]的估计, u 0 = 0 u_0=0 u0=0。 GTD算法定义为

在这里插入图片描述

其中 θ 0 θ_0 θ0是任意的, δ k δ_k δk是使用 θ k θ_k θk的TD误差, ( α k , β k ) k ≥ 0 (α_k, β_k)_{k≥0} (αk,βk)k0是正的步长参数序列,可能随时间的推移而减少。请注意,如果乘积是从右到左形成的(formed right-to-left),那么整个计算的时间步长为O(d)。

然而,与TD(0)相比,GTD是一个缓慢的算法。In other words it is poorly conditioned。让我们考虑这种情况:假设我们可以准确地计算 u u u,也就是说。

在这里插入图片描述

其中A和b的定义见方程(2.13)。因此,通过将u(θ)的精确值插入θ的更新中,在期望值中,GTD的更新是由矩阵 A T A A^TA ATA驱动。为了更好地看到这一点,请注意,从方程(5.1)中我们得到。

在这里插入图片描述

从数值分析的概念来看, A T A A^TA ATA的条件数总是比A差-注意-A是预期TD(0)更新的基础矩阵。因此,在TD(0)收敛的问题上,GTD的渐进收敛率通常比TD(0)差很多。

From concepts of numerical analysis, the condition number of A T A A^TA ATA is always worse than A—notice −A is the underlying matrix for the expected TD(0) update. As such, GTD’s asymptotic rate of convergence is usually much worse than TD(0) on problems where TD(0) converges.

在下一节中,我们开发了两种新的算法,GTD2和TDC,基于均方投影贝尔曼误差目标函数,根据经验,这两种算法比GTD算法更快。

5.2 Derivation of the GTD2 and TDC algorithms

在这一节中,我们推导出两种新的算法,它们使用均方投影贝尔曼误差作为其目标函数(见公式3.3)。我们首先在向量-矩阵量和相关的统计期望项之间建立一些关系。

在这里插入图片描述

利用这些关系,预期的目标可以写成如下的形式

在这里插入图片描述

就像在上一节中,我们使用第二个可修改的参数 u ∈ R d u∈\mathbb R^d uRd来形成NEU目标函数梯度中除一个期望外的所有准稳定估计(从而避免了对两个独立样本的需要),在这里,我们将使用一个可修改的参数 w ∈ R d w∈\mathbb R^d wRd,这也涉及到计算逆矩阵。具体来说,我们使用一个传统的线性预测器,使w估计为

Just like in the previous section, which we used a second modifiable parameter u ∈ R d u∈\mathbb R^d uRd to form a quasi-stationary estimate of all but one of the expectations in the gradient of the NEU objective function (thereby avoiding the need for two independent samples), here, we will use a modifiable parameter w ∈ R d w∈\mathbb R^d wRd, which also involves computing the inverse matrix.Specifically, we use a conventional linear predictor which causes w to estimate

在这里插入图片描述

这看起来与我们在监督学习中通过用监督信号替换δ而得到的解决方案相同(注意 w ( θ ) = E [ ϕ ϕ T ] − 1 u ( θ ) ) w(θ)=\mathbb E[\phi\phi^T]^{-1}u(θ)) w(θ)=E[ϕϕT]1u(θ))。利用这一点,我们可以将MSPBE目标函数的负梯度写为

在这里插入图片描述

我们称之为GTD2算法。注意,(5.8b)更新中没有逆矩阵。我们可以看到,通过将 θ k θ_k θk固定为θ,w更新导致LMS解,即 w ( θ ) = E [ ϕ ϕ T ] − 1 E [ δ ( θ ) ϕ ] w(θ)=\mathbb E[\phi\phi^T]^{-1}\mathbb E[δ(θ)\phi] w(θ)=E[ϕϕT]1E[δ(θ)ϕ]

我们的主要算法TDC的推导从梯度的相同表达式开始,然后采用稍微不同的路径。也就是说,

在这里插入图片描述

然后采样,得到以下O(d)算法,我们称之为带梯度修正项的线性TD,简称线性TDC:

在这里插入图片描述

其中 w k w_k wk由(5.8b)产生,如同GTD2。注意θk的更新是两个项的总和,第一个项与传统线性TD的更新(2.10)完全相同。第二项基本上是对TD更新的调整或修正,使其遵循MSPBE目标函数的梯度。如果第二个参数向量初始化为 w 0 = 0 w_0=0 w0=0,并且βk很小,那么这个算法一开始就会做出与传统线性TD几乎一样的更新。

TDC算法(5.10),是在一个给定的子样本袋上推导出来的,其形式是与行为和目标策略样本转换相匹配的三元组 ( S k , R k , S k ′ ) (S_k,R_k, S'_k) (Sk,Rk,Sk)。如果我们想使用所有的数据呢?注意,数据是根据行为策略 π b π_b πb产生的,而我们的目标是学习目标策略π。

Derivation of Linear TDC for importance-sampling scenario: 我们想最小化的目标函数是 J ( θ ) = ∣ ∣ V θ − Π T π V θ ∣ ∣ μ 2 J(θ)= ||V_θ-ΠT^πV_θ ||^2_μ J(θ)=VθΠTπVθμ2,然而,由于数据是根据行为策略 π b π_b πb产生的,我们使用重要性抽样。使用定理1(在第四章),和公式(4.2),我们得到。

在这里插入图片描述

根据线性TDC推导,得到以下算法(基于重要性加权场景的线性TDC算法):

在这里插入图片描述


http://www.ppmy.cn/news/131456.html

相关文章

【C++】课节笔记及梳理总结---EP5

一、课节笔记 第四章 函数与预处理 Ⅰ、概述 1.模块化程序设计   (1)基本思想:将一个大程序按照功能分割成若干个小模块   (2)开发方法:自上而下,逐步分解,分而治之  2.※ C 是模块化程序设计语言 ※ Ⅱ、定义函数的一般形式…

USB Composite 组合设备之多路CDC实现

USB Composite 组合设备之多路CDC实现 USB复合设备与组合设备区别效果展示修改相关配置修改配置项修改设备描述符修改配置、接口、端点描述符接口修改FIFO配置 知识点FIFO分配 注意事项 USB复合设备与组合设备区别 其实多个接口组合在一起有2种情况 第一种叫做USB复合设备&…

Ep5 线性模型with Pytorch

1、流程 确定数据集、 设计模型(算出预测值)、 构建损失函数(最终为一个标量值,只有标量才能用backward)和优化器、 训练周期(forward算loss,backward算grad,update更新wi) 2、numpy的广播…

HBase Shell 常用命令练习

HBase Shell 常用命令练习 前言一、HBase Shell是什么?二、HBase Shell使用步骤1.启动HBase2.启用HBase Shell3.键入HBase Shell命令操作HBase 三、常用HBase Shell实例1.常用的HBase Shell命令2.一个运用上述命令的综合实例: 总结 前言 提示&#xff1…

侃侃算法EP5·二叉树及其遍历

1. 前言 这个板块旨在记录一些日常中或是面试中会问到的算法和数据结构相关的内容,更多是给自己总结和需要的人分享。在内容部分可能由于我的阅历和实战经历不足,会有忽视或是写错的点,还望轻喷。 2. 内容 关于什么是树、子树、根节点、叶…

ES6、ES7、ES8、ES9、ES10新特性及其兼容性

强烈推荐阅读一篇文章,也是自己为了做保存把地址贴到自己博客,大家一起学习: ECMAScript 6 入门教程——阮一峰 盘点ES7、ES8、ES9、ES10新特性

es_01

字段:等于一个属性 文档:行数据等于多个字段组成 映射:mapping表结构 索引:index 数据库 存文档 类型:忽略 正排索引: 需要按照key来搜索每个key下的value,要收到全部的数据,就要进…

es(八)

单字符串串多字段查询:Dis Max Query 想在百度搜索一个单字符 should是如何算分过程 查询 should 语句句中的两个查询加和两个查询的评分乘以匹配语句句的总数除以所有语句句的总数

JS高级+ES678

js高级 数据类型 基本(值)类型 Number: 任意数值String: 任意文本Boolean: true/falseundefined: undefinednull: null 对象(引用)类型 Object: 任意对象 主要用来包含无序复杂的数据Array: 特别的对象类型(下标/内部数据有序)Function: 特别的对象类型(可执行),F…

阿里云ECS部署ES

背景 最近越来越多的公司把业务搬迁到云上,公司也有这个计划,自己抽时间在阿里云和Azure上做了一些小的尝试,现在把阿里云上部署ES和kibana记录下来。为以后做一个参考,也希望对其他人有帮助。 这里以阿里云为例,由于测…

ES-08-ElasticSearch数据分片(shard)

说明 ElasticSearch数据分片(shard)创建多分片索引、更改多分片索引副本分片数量、路由计算和分片控制官方文档:https://www.elastic.co/cn/ 核心概念 》什么是数据分片(shard)? 一个分片是一个底层的工…

ES-09-ElasticSearch分词器

说明 ElasticSearch分词器默认分词器(标准分词器)、ik分词器、ik分词器扩展字典自定义词语关键词:keyword、text、ik_max_word、ik_smart、词条、词典、倒排表官方文档:https://www.elastic.co/cn/ik分词器文档:https…

Elasticsearch8.0

Elastic 中国社区官方博客_CSDN博客-Elastic,Elasticsearch,Kibana领域博主Elastic 中国社区官方博客擅长Elastic,Elasticsearch,Kibana,等方面的知识https://elasticstack.blog.csdn.net/ ✅ 启动 elasticsearch # cd /usr/local/elastic/elasticsearch/ # ./bin/elasticsearc…

ES6/ES7/ES8/ES9/ES10

ES10 ES10 功能完全指南 好犯困啊 我来打打字 string.prototype.matchAll() ‘Hello’.match(‘l’) eg:判断字符串中存在几个某元素 yannanna’.match(/n/g).length 扁平化多维数组(想不出啥时候会用到) let array [1, 2, 3, 4, 5]; array.map(x &g…

ES

文章目录 1. 什么是ElasticSearch?为什么要使用Elasticsearch?——克服模糊查询的缺点、查询速度快2. ES中的倒排索引是什么?——词→文章3. ES是如何实现master选举的?——各节点分别排序投票4. 如何解决ES集群的脑裂问题——增大最少候选节…

es 客户端

ES客户端:Elasticsearch Clients 语言无关性 Java REST ClientJava APIPython APIGo API.Net APIPHP APIJavaScripts APIRuby APIPerl APIElandRustCommunity Contributed Clients Java API 生命周期(生卒年:ES 0.9 - ES 7.x)…

ES7,ES8,ES10新特性

ES7 ES7在ES6的基础上增加了三项内容 求幂运算符 ** console.log(3 ** 2 ) // 9 Array.prototype.includes()方法 includes()的作用是查找一个值在不在数组中,接受两个参数:搜索值和搜索的开始索引。如果没有传递参数默认的索引是0 // 下面的这两种方…

ES7+ES8

撰文为何 身为一个前端开发者,ECMAScript(以下简称ES)早已广泛应用在我们的工作当中。了解ECMA机构流程的人应该知道,标准委员会会在每年的6月份正式发布一次规范的修订,而这次的发布也将作为当年的正式版本。以后的改动,都会基于…

elasticsearch系列七:ES Java客户端-Elasticsearch Java client

一、ES Client 简介 1. ES是一个服务,采用C/S结构 2. 回顾 ES的架构 3. ES支持的客户端连接方式 3.1 REST API ,端口 9200 这种连接方式对应于架构图中的RESTful style API这一层,这种客户端的连接方式是RESTful风格的,使用http…

【阅读理解】ES7/ES8/ES9/ES10新特性

今天阅读了一篇咨询,有关于ES7-ES10 (ES2016-2019),ES6后新出的特性比较频繁。 首先附上思维导图 下面都是我阅读咨询后理解而编写的: ES7: 1.Array.prototype.includes() 这个方法可以判断一个元素…
最新文章