这一章学习使用on-policy的数据对状态值函数进行逼近,也就是在策略下估计值函数。这一章的重点在于估计的值函数不是使用表格来表示而是使用参数w的函数形式。一般来说权重参数的数量是远远比状态的数量要小的,而且改变一个权重的大小会影响到很多个状态值的估计。于是一个值函数的更新会带来很多其它值函数的改变。这种泛化能力非常有用但更难操作和理解。
而且把强化学习延伸到函数逼近的形式也使得它能够应用于部分可观测的问题,也就是agent的部分状态是无法观察到的。实际上本章所讲的很多理论和方法都可以应用到部分观测的问题里。但是函数逼近不能够使用以往观测的记忆来改进当前状态表示。
9.1 Value-function Approximation
本书中讲到的所有预测方法都被描述为把特定状态的值函数估计朝着一个backup值变化的过程,这个backup值也叫作update target。很自然地把每个更新过程看作是值函数对于特定输入输出行为的一个例子。实际更新的过程很简单:其它状态的值函数都不变,当前状态的值函数向着目标值变动一个小部分。现在我们允许使用任意的复杂函数来完成这个更新的过程,并且在状态s的更新也会导致其它很多状态值的变化。通过这种方式来学习模仿输入输出样例的机器学习方法通常叫做监督学习,当输出是一个数字时一般叫做函数逼近。函数逼近希望能够收到它所期望模仿的函数的输入输出样例。然后我们把得到的近似函数叫做估计值函数。
把每次更新都看成一个传统的训练样例能够使我们能够应用很多现有的值函数逼近方法。理论上我们可以使用所有监督学习的方法,包括神经网络、决策树和其它很多多变量的回归函数。在强化学习中,能够在agent与环境进行交互的同时进行在线学习是一个很重要的要求。因此需要能够从增量式的数据中进行学习。而且强化学习还要求函数逼近能够解决非稳态目标函数。
9.2 The Prediction Objective ( )
在表格形式的值函数计算里不需要一个评估估计质量的值因为学到的值函数就是精确收敛到真正的值函数的。但是在值函数的逼近中,一个状态的更新会影响很多其它状态,因此不可能精确得到所有的状态值函数。因为我们假设状态的数量远大于参数的数量,因此让一个状态的估计值更精确意味着很多状态的估计值更不精确。因此需要明确哪些状态是我们更加关注的。因此有一个根据状态的分布,代表的是每个状态的重要性。因此根据每个估计值和真正的状态值之间的平方差的加权和得到了我们的目标函数均方误差函数,用表示:
这个值的平方根给出了对于每个估计值与真值之间的误差。一般来讲选择的是在每个状态上花费的时间占比。对于on-policy的情况这个分布叫做on-policy分布也就是本章考虑的内容。对于continuing tasks,on-policy分布一般是在策略下的固定分布。
continuing tasks和episodic tasks虽然行为很相似,但是在值逼近中必须在正式分析中将它们分开看。也就是目标函数具体实现的不同。
目前来说还不清楚上述目标函数就是对于强化学习最适合的目标函数。因为我们的最终目标是找到最优的策略。而对应的最优的值函数不一定就是最小化VE。不过目前为止还没找到更好的替代函数,所以还是集中在VE上。
对于优化目标函数来说最好的是得到一个全局最优的权重,但是一般来说复杂函数很难收敛到全局最优,因此经常会收敛到局部最优。对于非线性函数来说,收敛到局部最优也不能完全保证,但是通常这样就够了。同样对于很多强化学习的例子中也不能保证收敛到极值或者极值的一个范围内。有些方法实际上是发散的。
9.3 Stochastic-gradient and Semi-gradient Methods
这节讲解一个具体的使用随机梯度下降来进行函数逼近的方法。
在梯度下降法中参数是一个列向量,有固定数量的实数值,,用来逼近的值函数是。每一个离散时刻进行一次参数的更新,因此每一步的参数为。需要记住的是,没有一组参数可以在所有的状态上得到精确解,甚至都不可能在所有的样本上达到完全一致。同时还需要考虑对于那些没出现过的状态的泛化。
假设所有出现的样本都是在同一个分布下产生的,在这些样本的基础上进行最小化均方误差。随机梯度下降法对于每一个出现的样本都进行一次参数的更新:
这个梯度下降法叫做随机的原因在于每一次只对一个样本的结果进行更新,而这个样本是随机选择的。
因为我们算法的目标不是在所有的状态值函数上都达到0误差,而只是得到一个近似函数能够平衡不同状态值函数的误差。因此每一次的更新都只进行一小步的更新,也就是步长参数会很小。而且还会假设步长会随着时间逐渐减小。如果它满足书中公式2.7的情况,那么这个方法能够保证结果收敛至一个局部极小值。
现在考虑一下目标输出值,也就是状态值的一个随机逼近。因为我们无法知道每个状态的精确值