热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

最速下降法极小化rosenbrock函数代码_RLAnIntroductionChapter9函数拟合时的同步预测...

本章起我们开始讨论用函数来拟合估计值函数,我们用参数来将值函数参数化,记作。这类方法泛化性强,非常强大且易于理解。同时,这种

本章起我们开始讨论用函数来拟合估计值函数,我们用参数

来将值函数参数化,记作
。这类方法泛化性强,非常强大且易于理解。同时,这种方法也适用于部分可见的问题。

1.值函数逼近

本书中所有值函数的更新都是通过目标(target)来进行的,当我们使用函数逼近时,直接将目标公式中的值函数替换为拟合的函数即可。机器学习中的监督学习算法都可以用于函数拟合,它的本质就是利用已有信息来预测未知的值函数。但是不是所有的还函数逼近方法都等价适用于强化学习。比如,复杂的神经网络和统计学方法是静态的训练集合,但是在强化学习中则要求在线的学习。此外,强化学习还要求能解决非静态的问题。

2. 预测目标

首先我们定义一个状态分布

,这代表我们对不同状态产生误差的关注程度。通过
来对整个状态空间加权,我们就可以得到一个自然的目标方程,我们称为均方值误差(mean squared value error):
a97473edeb218612ea2ed7f91c2e04bd.png

虽然

不一定是最好的目标函数,但是它可以在某种程度上解决问题。一个理想的目标是找到全局最优点(global optimum),即
。对于线性拟合来说这个目标是比较好达到的,而对于复杂一些的拟合函数来说,函数可能收敛到局部最优点。

3. 随机梯度和半随机梯度

现在我们假设每一步我们观察到的状态值都是真实值,但是我们还是无法保证能准确拟合所有状态。假设我们采样到的状态都来自同一个状态分布,为了最小化

,一个好的策略是利用随机梯度下降SGD算法:
96745afb9e9ec7a0a01195892fbd484a.png
304383c67e9e5eec26999f583989a1c7.png

SGD能确保收敛到一个局部最优点。现在我们假设目标输出为

,它不是真实的值函数,但是逼近于真实值,则权重的更新公式为:
43ab110256b6ffd950be2aca2ad3fa03.png

以MC算法为例,其梯度下降法的伪代码为:

de9d8dd99bc0b63ec42db86dc8fdf40c.png

但是对于像DP这样的自展公式来说,目标内也包含了拟合参数,这样就无法进行有效地梯度下降。因此,自展方法实际上不能进行真正的梯度下降,在这些方法里,只考虑了改变参数在估计值上的影响,而忽视了它在目标上的影响。我们称这样的方法为半梯度方法(semi-gradient)。

半梯度方法虽然不如梯度法稳定,但是它学习的速度快,且可以处理连续和在线问题。

d6f5d5f97b896aaa522ca370f2b014d4.png

状态聚集(state aggregation)是一种泛化函数拟合的形式,它将状态分组处理,对每个组使用相同的值。它是SGD的一种特殊形式。

4. 线性方法

对应每个状态,都有个特征向量x:

acaf89155969eb6edd1703304ec7c06d.png

则用线性方法来拟合值函数就是将w和x作内积:

0c0cb20570e474ff9a71c14466a7d2eb.png

对线性方法来说,特征是基函数,因为它们形成了一组线性基。

当使用SGD时,值函数的梯度和更新公式为:

01388b44ed3f1d29f43d6bfeb4f79779.png
fa8e309bc71ea280adcbc707fd8dd254.png

基本上对所有的线性方法都具有良好的收敛性,并且只有一个最优解。

对于TD(0)来说,它使用的是半梯度法,与SGD不同,其更新公式为:

1ab1bb40058184b1488bd73115368fc9.png

当系统达到稳定时,有

fd0c7f58216c0d05cf447e0ceef98810.png
593bddd453555053f87581ad99a44a30.png

因此如果系统收敛,我们可以得到:

016f0c64802a72006187670d99b641d8.png

这个式子被称为TD定点(fixed point)。实际上所有线性半梯度TD(0)都会收敛到这个点。书上给出了详细证明。

在TD定点,误差由最小可能误差决定上界:

0080b65c1a3ed782f3482c0b923e3336.png

在实际中

可能趋向于1,所以误差可能会很大。一个重要的一点是这些收敛性都是建立在同步分布的基础上的,对异步分布,误差可能无法收敛。

半梯度n步TD算法如下图所示:

59e1d84ab6386c238797cf98972ceac4.png

算法中的关键公式即为:

3712b00aa3d1fa4ca2b5d9ca38298423.png

与第七章的类似。

5. 线性方法的特征建立

本节主要介绍了几种常用的线性特征建立方式,此处不展开讲解,主要包括了多项式法(polynomials)、傅里叶基(Fourier basis)、科斯编码(coarse coding)、瓦片编码(tile coding)和径向基函数(RBF)几种方法,各有优劣。

6. 人为选择步长

大部分SGD算法需要人为设计步长,但是理论知识又无法提供帮助。书中建议了一个经验公式,设使用了

个经验来进行学习,那么步长公式为:

7. 非线性拟合:ANN

本节主要介绍了神经网络的基本概念与在RL中的应用,并举了一些例子,如DQN中的用CNN来提取游戏画面的特征等等。

8. 最小二乘TD

之前介绍的方式都是每一步计算一次,但当我们有更多的计算资源时,我们可以做的更好。回忆一下我们在第四节介绍的TD定点:

1ef7c5a32b04b4074909abd83037d4f5.png

实际上我们不需要一步一步计算A和b,可以用TD最小二乘算法直接求解(LSTD):

15f2227464345f73188395c698bd86cb.png

这样计算的数据利用率更高,但是也更加消耗计算资源,其计算复杂度为

但是求逆过程可以有更简单的表现形式,使其复杂度减少为

:
31cc8f7b8f6afe84225bff66151b3f94.png
97385a74324eaf1b224934f7ec1bb5fa.png

9. 基于记忆的函数逼近

前面提到的方法都是更新参数来减小误差的,在更新后训练样本都会被丢弃。基于记忆的函数法很不同,它将训练集的数据都储存起来,当某一状态被查询时会取出相关的样本进行训练,这也被称为懒惰学习(lazy learning),因为训练的过程时被延迟的,当系统查询并给出结果后才进行。

基于记忆的学习是无参数方法,它不受限于一类固定的拟合函数,而是由训练样本决定,当训练数据足够多时,就能保证拟合函数更好的准确性。基于记忆的方法根据储存与查询方式的不同而不同。在此我们关注于本地学习方法(local-learning),它根据查询值的临近值来拟合函数。类似于传统机器学习中的KNN算法。在查询后,本地估计值被丢弃。

基于记忆的方法有很多有点,它不受参数化模型的限制,同时学习速度很快,还可以解决维度诅咒的问题。但是对于大型数据集,查询会比较耗费时间。

10. 基于核的函数逼近

这一节主要是利用核函数来进行函数拟合,与SVM的原理一样。核函数在数值上表达了不同状态的相关性。核回归是一种基于记忆的方法,通过计算核加权平均来得到结果,它拟合了目标函数(target function):

60258638504448172d180fcf8cdd4d98.png

11. 兴趣和重要性(interest and emphasis)

在有些情况下我们只关注部分状态,函数拟合的资源是有限的,如果能更有目标性地计算,那么训练效果会更好。现在我们假设根据一个MDP有多个同步的状态分布,所有的分布都公式跟随着目标策略产生的周期而产生,但是会因为周期的初始化状态不同而不同。

现在我们介绍一些新的概念。首先我们介绍一个非负标量,随机变量

,称为兴趣(interest),表示了在时间t我们对状态的感兴趣程度,那么状态分布就被定义为在目标策略下由兴趣加权后的状态分布。第二个概念是非负标量随机变量重要性
。这个标量与学习量相乘,用来强调时间t学习的重要性。
57b684ac53c53c2cc729bf2e12e14f65.png

其中重要性计算为:

0b793ba7399dc2b28453d60c71d9e4aa.png

12. 小结

本节我们学习了利用值函数拟合来进行同步预测。传统的方法还是基于线性拟合的梯度下降与半梯度下降法,其是利用参数化拟合来最小化均方值误差来实现的。此外,我们还介绍了非线性与非参数拟合的方式,如现在很热门的深度强化学习。



推荐阅读
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • 自然语言处理(NLP)——LDA模型:对电商购物评论进行情感分析
    目录一、2020数学建模美赛C题简介需求评价内容提供数据二、解题思路三、LDA简介四、代码实现1.数据预处理1.1剔除无用信息1.1.1剔除掉不需要的列1.1.2找出无效评论并剔除 ... [详细]
  • 机器学习算法:SVM(支持向量机)
    SVM算法(SupportVectorMachine,支持向量机)的核心思想有2点:1、如果数据线性可分,那么基于最大间隔的方式来确定超平面,以确保全局最优, ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • 非计算机专业的朋友如何拿下多个Offer
    大家好,我是归辰。秋招结束后,我已顺利入职,并应公子龙的邀请,分享一些秋招面试的心得体会,希望能帮助到学弟学妹们,让他们在未来的面试中更加顺利。 ... [详细]
  • ipsec 加密流程(二):ipsec初始化操作
    《openswan》专栏系列文章主要是记录openswan源码学习过程中的笔记。Author:叨陪鲤Email:vip_13031075266163.comDate:2020.1 ... [详细]
  • 最近遇到了一道关于哈夫曼树的编程题目,需要在下午之前完成。题目要求设计一个哈夫曼编码和解码系统,能够反复显示和处理多个项目,直到用户选择退出。希望各位大神能够提供帮助。 ... [详细]
  • 本文深入解析了WCF Binding模型中的绑定元素,详细介绍了信道、信道管理器、信道监听器和信道工厂的概念与作用。从对象创建的角度来看,信道管理器负责信道的生成。具体而言,客户端的信道通过信道工厂进行实例化,而服务端则通过信道监听器来接收请求。文章还探讨了这些组件之间的交互机制及其在WCF通信中的重要性。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 本文详细介绍了在 Oracle 数据库中使用 MyBatis 实现增删改查操作的方法。针对查询操作,文章解释了如何通过创建字段映射来处理数据库字段风格与 Java 对象之间的差异,确保查询结果能够正确映射到持久层对象。此外,还探讨了插入、更新和删除操作的具体实现及其最佳实践,帮助开发者高效地管理和操作 Oracle 数据库中的数据。 ... [详细]
  • 在Android平台中,播放音频的采样率通常固定为44.1kHz,而录音的采样率则固定为8kHz。为了确保音频设备的正常工作,底层驱动必须预先设定这些固定的采样率。当上层应用提供的采样率与这些预设值不匹配时,需要通过重采样(resample)技术来调整采样率,以保证音频数据的正确处理和传输。本文将详细探讨FFMpeg在音频处理中的基础理论及重采样技术的应用。 ... [详细]
  • 探索学习曲线函数的深度解析与应用 ... [详细]
author-avatar
陈可1993_532
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有