简析Monte Carlo与TD算法的相关问题

Monte Carlo算法是否能够做到一步更新,即在线学习?

答案显然是不能,如果可以的话,TD算法还有何存在的意义?MC算法必须要等到episode结束后才可以进行值估计的主要原因在于对Return(或是估计目标)的定义与TD算法不同。强化学习中所估计的状态动作对价值实质上就是在某一策略下,以这个状态动作对为起点产生的样本轨道的奖励之和(也可是带折扣系数的和)的期望。假设有一条样本轨道如下所示:

$$ (S_1, A_1) \ \Rightarrow\ (S_2, A_2) \ \Rightarrow\ (S_3, A_3) \ \Rightarrow \ (S_4, A_4) \ \Rightarrow \ (S_5, A_5) \ \Rightarrow \ S_T $$

假设在这条样本轨道下每一个状态动作对所对应的奖励分别为$R_1,\ R_2,\ R_3,\ R_4,\ R_5,\ R_6$,那么可以得到在这条样本轨道下状态动作对$(S_1, A_1)$所对应的价值:

$$ \begin{align} v_{S_1, A_1} & = R_1 + R_2 + R_3 + R_4 + R_5 + R_6\\ &= \sum_{i = 1}^{i=6} R_i \end{align}$$

那么同样的,对于状态动作对$(S_2, A_2)$来说也可以求得一个在该样本轨道下的对应价值:$v_{S_2, A_2} = \sum_{i = 2}^{i = 6} R_i$,那么以此类推,样本轨道上的第k个状态动作对所对应的价值应当为(T在这里代表Terminal,即为episode终点):

$$ v_{S_k, A_k} = \sum_{i = k}^{T} R_i $$

但这仅仅是在一个样本轨道下的价值计算,如果要估计在策略$\pi$下的状态动作对$(S_k, A_k)$的价值,最好的办法是计算在多条样本轨道下的该状态动作对的价值期望:$ E^{\pi}[V_{S_k, A_k}] $ ($V_{S_k, A_k}$为状态动作对$(S_k, A_k)$所对应的价值随机变量),那么如何估计价值期望呢?通常来说有两种办法,一种是直接计算N条样本轨道的价值均值,即为($v^i_{S_k, A_k}$表示在第i条样本轨道下状态动作对$(S_k, A_k)$的价值):

$$E^{\pi}[V_{S_k, A_k}] \approx \frac{\sum_{i}^{N} v^i_{S_k, A_k}}{N}$$

另一种方式就是利用Incremental Implementation(增量实现)的方式进行随机变量期望的估计,增量实现是一种迭代方式,即通过不断的迭代估计出随机变量$V_{S_k, A_k}$的期望,这一点在文章【Monte Carlo与TD算法的结合,n-step TD算法】中有详细的解释。这里直接给出迭代公式(这里使用$\widetilde{V}$表示价值期望的估计,$\alpha$为学习率):

$$ \widetilde{V}^n_{S_k, A_k} = \widetilde{V}^{n-1}_{S_k, A_k} + \alpha(v_{S_k, A_k} - \widetilde{V}^{n - 1}_{S_k, A_k}) $$

当迭代次数n无穷大时,我们可以认为$\widetilde{V}$与$E[V]$是等价的,这个迭代过程是一个无偏估计的过程。

让我们回到Monte Carlo方法上来,Monte Carlo中的Return与我们所定义的在某一样本轨道下的状态动作对价值是等价的,所以在计算样本轨道中每一个状态动作对价值时都是需要episode终点状态的奖励回报的,所以这也就说明了为什么Monte Carlo方法必须要等到episode结束后才可以进行值函数更新(离线学习)。

那么这又衍生出一个问题,为什么TD方法可以一步更新,在线学习?

我们首先搞清楚另一个问题,TD方法能不能离线学习呢?答案是一定可以的。需要明确的是,TD方法与Monte Carlo方法本质的区别并不在于离线学习还是在线学习,又或是增量实现还是均值实现。TD方法与MC方法的根本不同是估计目标的不同,可以这么说,MC方法所估计的就是如假包换的状态动作对价值(Return),而TD方法实际上估计的却是状态动作对价值的近似。依据在某一样本轨道下的状态动作对$(S_k, A_k)$价值$v_{S_k, A_k}$的计算方法,可以做一个简单的变换:

$$ \begin{align} v_{S_k, A_k} & = \sum_{i = k}^{T} R_i \\ &= R_k + \sum_{i = k + 1}^{T} R_i \\ & = R_k + v_{S_{k + 1}, A_{k + 1}}\end{align}$$

对在线学习来说,在第k步就应该计算出$v_{S_k, A_k}$,并带入到增量实现的公式中计算,但第k步已知的只有$R_k$,对于$v_{S_{k+1}, A_{k+1}}$是未知的,所以对目标$v_{S_k, A_k}$无偏估计是绝对无法实现的。那么想要实现在线学习,唯有替换估计目标。如何找到与$v_{S_{k+1}, A_{k+1}}$等价的或可替换的估计目标则是TD方法解决的主要问题。

可以假设对状态动作对$(S_k, A_k)$在策略$\pi$下的价值期望为:

$$\begin{align} E^{\pi}[v_{S_k, A_k}] &= E^{\pi}[R_k + v_{S_{k+1}, A_{k+1}}] \\& = E^{\pi}[R_k + E^{\pi}[v_{S_{k+1}, A_{k+1}}]]\end{align}$$

依据上面的式子,MC方法的估计目标可以等价为$R_k + E^{\pi}[v_{S_{k + 1}, A_{k + 1}}]$。假设在第k步进行增量实现的第n次迭代,那么我们就可以使用第n-1次迭代获得的$ \widetilde{V}^{n - 1}_{S_{k + 1}, A_{k + 1}} $近似替代$E^{\pi}[v_{S_{k + 1}, A_{k + 1}}]$。如此一来,在第k步可直接获得$R_k$与$ \widetilde{V}^{n - 1}_{S_{k + 1}, A_{k + 1}} $的值,没有必要等到episode结束后再进行值函数更新了,在线学习也就顺理成章了。我们把这种近似替代估计目标的方法叫做TD方法:

$$ \widetilde{V}^n_{S_k, A_k} = \widetilde{V}^{n-1}_{S_k, A_k} + \alpha(R_k + \widetilde{V}^{n - 1}_{S_{k + 1}, A_{k + 1}} - \widetilde{V}^{n - 1}_{S_k, A_k}) $$

上一篇:ZeroClipboard插件,复制到剪切板


下一篇:java设计模式--结构型模式--桥接模式