第五章:基于时间差分的强化学习方法
Last updated
Was this helpful?
Last updated
Was this helpful?
与动态规划和蒙特卡罗方法相比,时间差分方法的主要不同在于值函数的估计。在动态规划中,值函数的计算使用了bootstrapping方法,即用后继状态的值函数估计当前值函数的。由模型公式和动作集,科技一算状态的所有的后继状态(公式1)。当没有模型时,无法通过动态规划得到后继状态。由于值函数的本质是期望,通过经验平均代替期望来估计值函数便应运而生(公式2)。相比于动态规划,蒙特卡洛方法需要等到每次实验结束,导致学习速度非常慢,学习效率不高。
结合两者的优点,时间差分方法(TD)结合了蒙特卡罗的采样方法和动态规划的bootstrapping,其值函数的更新公式为:
时间差分方法包括同策略的Sarsa强化学习方法和Qlearning方法,与蒙特卡罗方法不同之处是他们的值函数更新方法不同。
异策略Qlearning
当更新当前的值函数时,我们用到了下一个状态的值函数。由此可以推理,我们可以使用第二个乃至第n个状态的值函数,利用n步值函数更新当前值函数可以表示为:
前向:通过观看将来状态的值函数来估计当前状态的值函数。
前向和后向观点的异同:
前向观点需要等一次实验结束后再更新当前状态的值函数;后向观点不需要等到值函数结束后再更新值函数,而是每一部都在更新值函数,是增量方法
前向观点在每一次实验结束后更新值函数时,会更新完当前装填的值函数后,此状态的值函数就不再改变。后向观点在每一步计算完当前的TD误差后,其他状态的值函数需要利用当前状态的TD误差更新
Sarsa算法
5.2 基于Python和gym的编程实例
其中称为TD目标,与蒙特卡洛方法的对应,不同之处在于TD目标使用了bootstrapping方法估计值函数。称为TD偏差。
蒙特卡罗方法中的,由于每次都模拟到结尾,所以蒙特卡洛方法是无偏估计。但模拟的随机性很大,因此导致蒙特卡罗方法的方差很大。时间差分方法中用到的使用的是估计值,因为时间差分方法是有偏的。但是时间差分方法只用到了一次模拟,所以随机性很小,相应的方差也要比蒙特卡罗方法的方差小。
利用n种不同步值更新当前值函数会有n种方法,很难衡量哪种值更接近真实值,但是我们可以使用加权的方法(在前乘以加权因子)融合着n个估计值,这就是TD(λ)方法
理解可以从前向和后向两个角度解释。
后向:从已经经历过的状态出发,更新所有需要状态出的值函数。更新流程如下:
计算当前状态的TD偏差:
更新适合度轨,其中
对于状态空间中的每个状态s,更新值函数:
在一次实验结束后,前向观点和后向观点的每个状态的值函数的更新总量是相等的,都是