第六课 值函数近似
一开始看这节课内容的时候,还是有些乱的。不像前五章每一章的联系都很紧密,本章内容较分散,概念性的东西变少了,更多的引入了几种不同的算法,可以直接从算法上理解本课的内容—值函数近似。
对于预测问题,我们可以参数化的表示状态值函数;对于预测问题,可以参数化的表示状态-动作值函数。本章讲了值函数近似的两种方法:增量方法和批方法,这两种方法主要在数据的使用上有所不同,但是都是基于随机梯度下降法。本章最后还引入了线性值函数近似的直接求解方法。
上述方法在MC/TD(0)/TD(λ)下均有不同实现方式,同时本章列表对比了这些算法的收敛性。
前言
第四节课和第五节课讲了Model-free的基于值函数的预测和控制,每一个状态/状态-动作对都有唯一确定的状态值/状态动作值。这种方式类似于建一张表,将每个状态/状态-动作对存储其中,并在学习的过程中更新所有的值。
在实际生活中,我们可能面临的问题规模很大,具有很多的状态/状态-动作对(例如围棋有2**170个状态;飞机控制是连续的状态空间,存在无数个状态),无论是对存储的容量或是学习的速度来讲存储和更新每一个状态/状态-动作对显然是不现实的。因此引入本节将要讲的内容,利用值函数近似来估计任意状态下的值函数:
引入参数w来拟合任意状态的值函数,参数w可以用MC或TD方法更新。
值函数近似的类型:
- 状态作为输入,直接估计状态值函数
- 状态和动作作为输入,直接估计状态-动作值函数
- 状态作为输入,输出该状态下可能的状态-动作值函数
值函数近似方法:
- 特征线性组合(可微,参数是特征的权重)
- 神经网络(可微,参数是每层的连接权重)
- 决策树
- 最近邻
- 傅里叶
线性回归和神经网络在强化学习里应用得比较广泛,主要是考虑这两类方法是一个针对状态可导的近似函数。
进而,针对强化学习场景,我们需要适用于非静态、非独立同分布的数据训练方法来得到近似值函数。接下来讲了两种数据训练方法:递增方法和批方法。有点类似于机器学习当中的随机梯度下降和小批量梯度下降(批方法和小批量梯度下降还有点不太相同,后面会提到这个问题)。
1 增量方法
梯度下降
递增方法和批方法都是基于梯度下降,简单来说,梯度下降就是目标函数J(θ)朝着参数w的梯度的反方向更新w,使得J(θ)找到局部最小值,α是学习速率。
值函数近似:利用随机梯度下降
目标:找到参数w,最小化值函数预测值v^(S,w)和真实值vπ(S)之间的均方误差。
梯度下降可以找到局部最小值:
随机梯度下降对梯度进行采样,然后更新w:
注:第二个式子实际上是批量梯度下降,这里不使用批量梯度下降而使用随机梯度下降更新参数w,因为批量梯度下降这种方法在每次迭代中使用所有的数据对参数进行更新(实际上使用所有数据对参数进行更新的意思是就是用策略π对应的所有样本去更新参数,但这是无法实现的)。随机梯度下降对于参数w的期望更新与批量梯度下降是一致的。</