【RL系列】On-Policy与Off-Policy
强化学习大致上可分为两类,一类是Markov Decision Learning,另一类是与之相对的Model Free Learning
分为这两类是站在问题描述的角度上考虑的。同样在解决方案上存在着两种方法对应着这两类问题描述,即Dynamic Programming(DP)和Stochastic Method,其中DP方法可以分为Policy Iteration与Value Iteration,统计方法皆以Monte Carlo为基础,延申后产生Temporal-Difference(TD)与TD($\lambda$)算法,并可再细分为on-policy的SARSA算法与off-policy的Q-learning。依据这个分类规则,可以发现所谓的on-policy与off-policy皆是出现在统计方法之中,且以Monte Carlo作为实现基础的,但实际上DP方法使用的也大都是on-policy策略,这其中包括了epsilon-greedy,UCB和Softmax。可以从之前我们对这几种动作选择策略的分析上找出一些关于on-policy的共同点,将其列举出来:
- 都属于软策略(soft-policy),即没有动作的选择概率为0
- 在学习过程中,使用前一次迭代更新的动作选择策略作为本次迭代的动作选择策略
可以发现on-policy中的动作选择策略是随迭代在试验中不断更新的,而off-policy与之不同之处便在于此。关于on-policy与off-policy的区别在Sutton书中有这么一段描述:
The on-policy approach in the preceding section is actually a compromise—it learns action values not for the optimal policy, but for a near-optimal policy that still explores. A more straightforward approach is to use two policies, one that is learned about and that becomes the optimal policy, and one that is more exploratory and is used to generate behavior.
前一句话表明on-policy算法是在保证跟随最优策略的基础上同时保持着对其它动作的探索性,对于on-policy算法来说如要保持探索性则必然会牺牲一定的最优选择机会。后一句话表明,有一个更加直接的办法就是在迭代过程中允许存在两个policy,一个用于生成学习过程的动作,具有很强的探索性,另外一个则是由值函数产生的最优策略,这个方法就被称作off-policy。
off-policy与重要性采样(Importance Sampling)密不可分,虽然这其中的逻辑并不复杂,但初学时确实有些难理解,尤其是在Sutton书中突然出现Importance Sampling的概念,而且并没有很多解释。Importance Sampling主要的作用在于通过一个简单的可预测的分布去估计一个服从另一个分布的随机变量的均值。在实际应用off-policy时,迭代过程通常会有两个策略,一个是Behavior policy,用于生成学习过程所需要选择的动作,这一个简单的,探索性非常强的关于动作选择的分布,另一个是Target policy,这是我们最终希望得到的最优动作选择分布。应用Importance Sampling之处在于通过Behavior policy去估计Target policy可能反馈回来的收益的均值,即用一个简单分布去估计服从另一个分布的随机变量的均值。由于Monte Carlo方法主要应用离散随机变量问题,所以我们也以离散随机变量为例解释如何实现Importance Sampling。
假设一个随机变量$ A_1 $服从离散分布$ P $,另一个随机变量$ A_2 $服从离散分布$ Q $,其中$ P = \{p_1, p_2, ..., p_n \} $,$ Q = \{q_1, q_2, ..., q_n\} $。离散随机变量$A_1$可以写为$ A_2 = \{x_1, x_2, ..., x_n\} $,$A_2$中每个元素出现的概率都对应这离散分布$ P $,随机变量$ A_2 $也同样写为$ A_2 = \{x_1, x_2,..., x_n\} $,但其元素出现的概率对应离散分布$ Q $(注意:Importance Sampling实现的条件之一,随机变量服从的分布不同但其元素的集合是相同的)。依据这个基本假设,我们可以写出期望$ E[A_1] $与期望$ E[A_2] $:
$$ E[A_1] = \sum_{i = 1}^{n} x_i p_i $$
$$ E[A_2] = \sum_{i = 1}^{n} x_i q_i $$
如使用统计方法去估计随机变量$ A_1 $与随机变量$ A_2 $的均值$ M[A_1] $与$ M[A_2] $,可以写为(均试验N次):
$$ M[A_1] = \frac{1}{N}(x_1 K_1 + x_2 K_2 + .... + x_n K_n) $$
$$ M[A_2] = \frac{1}{N}(x_1 M_1 + x_2 M_2 + .... + x_n M_n) $$
在上述式子中,$K_i$与$ M_i $分别表示$ x_i $在两次试验中出现的次数,所以一定存在$ \sum K_i = \sum M_i = N $。依据Monte Carlo方法的基本原理,当试验次数N趋于无穷大时,统计均值一定是期望的无偏估计。所以实际运用中,可以将两者等同看待。有了统计方法的最基本原理作为支撑,我们下面来看Importance Sampling究竟解决了一个什么问题。
如果现在只能够做关于随机变量$ A_2 $的试验,但是又想要同时估计随机变量$ A_1 $的均值,应当如何呢?其实很简单,只需要将统计均值中的$ K_i $替换成$ M_i $就好了。当试验次数$ N\rightarrow \infty $,可以有$ K_i \approx N p_i$,而$ M_i \approx N q_i $,所以可以将$ K_i $估计为$ M_i \frac{p_i}{q_i} $,所以随机变量$ A_1 $的均值估计可以写为:
$$ M[A_1] \approx \frac{1}{N}\sum_{i = 1}^{N} \left(x_i \frac{p_i}{q_i}\right) M_i $$
这便是普通重要性采样(Ordinary Importance Sampling)的基本原理和表达式,其中系数$ \frac{p_i}{q_i} $被称作Importance Ratio。这里需要注意一点的是,普通重要性采样并不严格符合统计方法的基本原理,这主要是源于对$K_i$的近似处理,导致了$ \sum \frac{p_i}{q_i} M_i $并非严格上等于试验次数N,这也导致了所谓的"Infinite Variance",也就是无论N多大(只要不是正无穷),普通重要性采样(OIS)的估计值的方差始终不会趋于0。为了解决这个问题,只需要把试验次数N替换为估计的试验次数即可,估计的试验次数就是$ \sum \frac{p_i}{q_i} M_i $,这个方法也被称为权重重要性采样(Weighted Importance Sampling)。权重重要性采样的表达式可以写为:
$$ M[A_1] = \frac{\sum \left(x_i \frac{p_i}{q_i}\right) M_i}{ \sum \frac{p_i}{q_i} M_i } $$
那么如何把重要性采样应用到off-policy算法中呢?这中间还需要有一个构建分布的过程,首先要了解的是,off-policy中的两个动作选择策略分布,behavior和target,并不是Importance Sampling的应用对象。在Monte Carlo过程中,从一个状态转移到最终状态获得的收益$ R $所服从的分布才是Importance Sampling中所需要的分布,而这个分布是通过behavior policy或target policy计算出来的。举个例子,在Monte Carlo过程中,一个episode的状态转移过程为:
$$ S_1 \ \Rightarrow\ (S_1, A_1) \ \Rightarrow \ (S_2, A_1) \ \Rightarrow \ (S_1, A_3) \ \Rightarrow \ S_T $$
从处于状态$ S_1 $并选择动作$ A_1 $开始,因为各个状态下动作的选择都是独立的,最终到达状态$ S_T $的概率可以写为:
$$ P_r(S_1, A_1) = \pi_b(S_1, A_1)\pi_b(S_2, A_1)\pi_b(S_1, A_3) $$
我们知道,在off-policy中,执行episode中应用的动作选择策略为behavior policy,将其称为$ \pi_b $。计算出的$ P_r(S_1, A_1) $才是对应状态$S_1$在执行动作$ A_1 $产生收益$R_1$的分布$P$,相应的由target policy通过计算得出的收益$R_2$的分布为$Q$,现在问题就转变成了Importance Sampling可以解决的问题了。
已知随机变量$ R_1 $服从分布$ P $,随机变量$ R_2 $服从分布$ Q $,当前只对随机变量$ R_1 $进行试验,求解随机变量$ R_2 $的统计均值。写出权重重要性采样的表达式(求和形式):
$$ M[R_2] = \frac{\sum \left(r_i \frac{p_i}{q_i}\right) M_i}{ \sum \frac{p_i}{q_i} M_t } $$
在这个式子中,$r_i$表示在第i个episode中所获得的Return,也就是收益,$ p_i $与$ q_i $分别表示在第i个episode由behavior policy和target policy产生收益$r_i$的概率。对于在状态$S_1$下执行动作$ A_1 $所产生的Importance Ratio可以进一步由动作选择策略来计算。假设第i个episode以状态$S_1$执行动作$A_1$为起始,其的所有状态动作选择过程为:
$$ S_1 \ \Rightarrow\ (S_1, A_1) \ \Rightarrow \ (S_2, A_2) \ \Rightarrow ....\Rightarrow\ (S_{T-1}, A_{T-1}) \ \Rightarrow \ S_T $$
则Importance Ratio可以写为:
$$ \frac{p_i}{q_i} = \frac{\pi_b(S_1, A_1) \pi_b(S_2, A_2)....\pi_b(S_{T - 1}, A_{T-1})}{\pi_t(S_1, A_1) \pi_t(S_2, A_2)....\pi_t(S_{T - 1}, A_{T-1})} = \prod_{i = 1}^{T-1} \frac{\pi_b(S_i, A_i)}{\pi_t(S_i, A_i)}$$
依据我们之前所提到的Monte Carlo最最重要的性质“每一个状态的估计都是独立的,不依赖于其它状态的! ”(可以参考博文:从蒙特卡罗方法正式引入强化学习),在第i个episode中,状态$S_2$执行动作$A_2$的估计中的Importance Ratio可以写为:
$$ \mathrm{For} \ (S_2, A_2), \ \frac{p_i}{q_i} = \prod_{i = 2}^{T-1} \frac{\pi_b(S_i, A_i)}{\pi_t(S_i, A_i)}$$
依此类推,对于状态$S_{T-1}$执行动作$A_{T-1}$,Importance Ratio可以写为:$ \frac{\pi_b(S_{T-1}, A_{T-1})}{\pi_t(S_{T-1}, A_{T-1})} $,这也就是为什么在Off-policy MC prediction算法中,在一个episode中,更新估计所有中间状态的Importance Ratio是从$ t = T - 1 $开始的原因所在了。让我们把权重重要性采样的求和形式写为迭代更新形式,以求在实现过程中更加直观。
让我们设权重重要性采样求和形式中的分子为$ R_s(S, A) $,分母为$ C_s(S, A) $,前一个表示Return之和,后一个表示估计试验次数之和,用$ W $表示Importance Ratio。
假设当前为第i个episode,返回的收益为R_i,从$ t = T - 1 $开始更新(W的初值为1):
$$ \begin{align} & W = W \frac{\pi_b(S_{t}, A_{t})}{\pi_{tar}(S_{t}, A_{t})} \\ & C_s(S_t, A_t) = C_s(S_t, A_t) + W\\ & R_s(S_t, A_t) = R_s(S_t, A_t) + WR_i \end{align} $$
如果我们把上述的更新形式写为Incremental形式,Off-policy MC prediction算法就算是完成了: