DRL Lecture 3:Q-learning (Basic Idea)

简单介绍Q-learning的思想以及相关的训练tips。

是什么

与Policy Gradient不同的是,Q-Learning是属于value based,也即学习一个critic去估计特定actor π在某个state s下的累积reward。

注意到Q-learning虽然只学习了critic,但仍然可以用于做决策。

首先是如何预估critic?
critic的本质就是函数映射$V^{\pi}(s)$,输入$s$,输出一个scalar作为使用了actor $\pi$的累积reward。有两种方法:Monte-Carlo (MC) based approach和Temporal-difference (TD) approach。

Monte-Carlo (MC) based approach

critic看完整个episode,然后对$s$做出预估:

其实质上就是在做regression。

Temporal-difference (TD) approach

由于有些episode非常长,等跑完再预估效率太低,因此直接对每个step进行预估。
对于一个time step $\cdots s_{t}, a_{t}, r_{t}, s_{t+1} \cdots$,直接预估:

介绍完$V^{\pi}(s)$,还有一种critic,输入$s$和$a$以获得一个累积reward。这里和$V^{\pi}(s)$不同的是,对于同一个π,能够评估强制采用$a$所获得的reward。

如何使用critic决策

在训练完了一个critic,如何用于进行决策?

其基本思想是:给定$Q$,总能找到一个$\pi^{\prime}$ 比$\pi$好,也即$V^{\pi^{\prime}}(s) \geq V^{\pi}(s)$。形式化:

也就是说,在学习完一个特定$\pi$对应的$Q$后,只需要遵照每遇到一个state,选择能使$Q$最大化的action,该新的$\pi$就会比原来的$\pi$更优。

为什么一定会更优。提供证明:

每一步选择最优都会比原来好一些。

如何训练Q function

我们通过类似TD的方法来训练。给定$\cdots s_{t}, a_{t}, r_{t}, s_{t+1} \cdots$,我们有:

其中由于公式有两个Q,若让两个Q同时变,不好做回归。因此我们让右边的Q固定住,训练左边的Q,在更新完几次后,直接将左边的Q覆盖右边。重复多次:

另一个问题是如何收集数据?

由于action是基于Q函数的,也即每次都采用贪心的策略,会使得在初始情况下固定的action会一直出现,无法探索到其他情况。因此采用两种策略:

①epsilon greedy:

其中$\varepsilon$随着时间而逐渐变小。

②boltzmann exploration:
按概率采样

还有一个小技巧用于更好利用sample,也即replay buffer:将每次π与环境交互的episode都放在一个buffer里面,可以都用来学习Q函数,即使数据来自不同的policy也没关系。这和off-policy有点像。为什么可以这么用一种解释是这样可以使得数据更diverse,同时减少sample次数加快训练。

因此一个典型的q-learning则是: