写在前面一些无关紧要的话:印象中,这个专栏已经快五个月没更新过了,How time flies!当时本来应该把TD-learning这一块写完再停笔,但不知被什么事所打扰,遂忘却以致搁置到今日。至今仍然觉得写帖子不失为一种有效的学习方式,不仅方便他人浏览,而且每当自己忘记一些细节之时,重温起来亦很方便。故今天毅然决然写起了来岛国之后的第一篇技术帖。
言归正传,回到今天的主角时间差分法(TD-learning),这是一个大类,包含我们耳熟能详的Sarsa、Q-learning等,以及各种拓展变形:expected Sarsa、n-step Sarsa、double Q-learning等等。
Sarsa算法
Sarsa是典型的时间差分法,TD-learning结合了MC的sampling方法和DP的bootstrap方法,是空间复杂度和时间复杂度都最低的算法。与蒙特卡洛方法的相似之处在于二者均通过与环境交互得到的序列来估计值函数,不同之处在于蒙特卡洛方法在估计值函数时用了完整序列的长期回报,而TD法使用的是非完整序列的回报,对于一步TD法,则使用的是 使用的是当前回报和下一时刻的估计。
TD法对值函数更新的框架一般如下:
。其中,
被称作TD target项,