最速下降法极小化rosenbrock函数 代码_RL An Introduction-Chapter 9 函数拟合时的同步预测...

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

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

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. 小结

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值