概述
之前第五次课时学习的 蒙特卡洛 的方法是全课程当中第一次介绍的第一种 model-free 的方法,而本次课的 Temporal-Difference Learning 简称 TD learning (时序差分算法)就是第二种 model-free 的方法。而对于 蒙特卡洛方法其是一种 non-incremental 的方法,而 TD 则是一种 incremental 的方法。
另外下一节课讲 Value Function Approximation 值函数近似 这一节时,也是基于本节课要讲的 TD 方法,只不过本节课的 TD 方法是基于 table 的,即 tabular representation(表格表示法)。而下一节课的则是基于 function 的 representation。非常经典的 Deep Q learning 也会在下一节课中介绍。
本节课大纲如下:
Motivating examples
在这一部分我们会考虑几个例子,然后使用上节课中的 RM 算法来进行求解,这是为了建立上节课和这节课之间的关系,这样就不会在学习 TD 算法的时候觉得唐突了。
小结一下:
TD learning of state values
接下来我们介绍第一种 TD 算法,对于 TD 算法我们首先要明确它是在干嘛,它是在求解一个给定的策略 Π 的 state value,为什么要求解这个 state value 呢?是因为求解出来之后我们就做了 policy evaluation,那么之后和 policy improvement 相结合,我们就可以去找最优的策略了。
首先要注意的是,TD 算法其实既可以指一大类的这样一个算法,像本节课讲的所有算法都属于 TD 算法,包括 Q-learning,但是我们接下来要讲的这个 TD 算法是最经典最原始的一种 TD 算法,其就是用来估计 state value 的,有一个非常明确的表达式,所以这个时候的 TD 算法指的是一个特定的算法,要注意区分。
直接给出该算法,然后再慢慢分析:
可以看见上图中 TD 算法有两个式子,其中第一个表达式后面会说,先看第二个表达式,第二个式子的意思是在 t 时刻的时候不是已经访问了 st 了吗?那么所有其它的状态都没有被访问,那所有没被访问的话它的 v 是保持不动的,所以 V(t+1)(s) = V(t)。实际上平时在其它地方看到 TD 算法的时候是看不到第二个式子的,因为第二个式子是隐含掉了。
那么接下来仔细分析一下第一个式子:
接下来我们分析 TD target 和 TD error 该怎么理解。
下面是 TD 算法的一些基本的性质:
TD 算法究竟在干一个什么事情呢?它实际上就是我要给定一个策略,然后我要估计出它的 state value,所以我们刚才介绍的这个 TD 算法它只是来估计 state value,只是来做 policy evaluation 这个事情,那么它不能做什么呢?它不能来估计 action value,它也不能直接搜索到最优的策略。
但是在这个基础之上,我们马上会介绍一系列的 TD 算法,然后它们能够来估计 action value,并且和 policy improvement 的这一个步骤相结合,就能够来搜索最优的策略。
因此刚才所介绍的这个 TD 算法虽然非常简单,但是它是后面一系列算法的基础。
最后再从数学上来看一下 TD 算法到底在干什么:
其实就是为了解决在没有模型的情况下求解一个给定策略 Π 的贝尔曼公式。
接下来就是一些数学证明:
TD learning of action values:Sarsa
在上一小节当中我们介绍的 TD 算法是用来估计一个给定策略的 state value。我们知道在我们要去改进策略的时候我们是需要估计出 action value 的,这样哪一个 action value 大我们就选择哪一个作为新的策略。而上一节中的 TD 算法显然不能估计 action value,因此我们使用到 Sarsa 算法来完成这个事情。
Sarsa 估计出来 action value 之后其实际上在做的也就是 policy evaluation,就是你给我一个策略我怎么把策略的 action value 给估计出来,但这个还是不能找到最优的策略,而强化学习的目的是要找到最优的策略,怎么办?可以把 Sarsa policy evaluation 这个算法和 policy improvement 那个算法相结合起来,这样就可以找到最优的策略。
下面就是将 Sarsa 和 policy improvement 结合起来实现的伪代码:
大多数情况下大家听到的 Sarsa 算法基本都是把 policy evaluation 和 policy improvement 这两个结合之后的方法。
例子例证 Sarsa:
TD learning of action values: Expected Sarsa
TD learning of action values: N-step Sarsa
TD learning of action values: Q-Learning
接下来就来到了 Q-learning,万众瞩目的时刻,Q-learning 是非常非常经典的一种算法,直到今天Q-learning也在被广泛地使用,当然指的是 Deep Q-learning,也就是 Q-learning 的一种变形。
Q-learning 和 Sarsa 以及之前介绍的算法主要有什么区别呢?
从数学上说,Q-learning 是直接估计 optimal action value,所以它不需要去做 policy evaluation 和 policy improvement 这两个之间来回交替运行,因为它直接就把最优的 action value 给估计出来了。
Q-learning 求解的是贝尔曼最优方程,但是这个贝尔曼最优方程和之前所介绍的贝尔曼最优方程不一样,这里面第一个是它有一个 expectation,第二个是它不是基于 state value 而是基于 action value的。尽管如此,但它依然是一个贝尔曼最优方程,证明可以参考赵老师的书籍。
我们只要知道 Q-learning 实际上就是求解这样一个贝尔曼最优公式就行了,其最后求解得到的 q 值并非是说哪一个策略的 q 值而是最优的 q 值。当然这个最优的 q 值是对应的最优的那个策略。
下面再介绍一些 Q-learning 的性质:
Q-learning 的伪代码实现:
举几个例子:
A unified point of view
Q-learning 是 off-policy 的,我们也通过例子看了怎么使用 off-policy 的 Q-learning 来学习最优的策略。
实际上 off-policy 的性质是非常重要的,之后我们会学习 Deep Q-learning,为什么将神经网络和 TD 算法相结合的时候会选择 Q-learning 呢,这里面的 off-policy 的性质其实发挥了非常重要的作用。
这一节就是简单对所有的 TD 算法做个小总结:
这些 TD 方法从本质上说是来求解一个给定策略的贝尔曼公式,但是我怎么让它来搜索最优的策略呢?其实就是我把这个 policy evaluation 这个步骤和 policy improvement 相结合我就可以来得到一个搜索最优策略的这样一个算法。
而对于蒙特卡洛算法其实也是来求解这么一个式子,这个式子其实你可以说它是贝尔曼公式,实际上它是 action value 的一个最基本的定义。
Summary
没啥好总结的了,基本就是各个章节的内容,因为介绍的都是各种算法嘛。