2.4_蒙特卡洛 VS 时序差分学习

在深入学习Q-learning算法之前,我们需要先了解一下两种学习策略。

牢记智能体是通过与其环境交互来进行学习的,即给定经验和收到来自环境的奖励,智能体将更新其价值函数或策略。

蒙特卡洛和时序差分学习在训练价值函数或策略函数上是两种不同的策略,但他们都使用经验来解决强化学习问题

蒙特卡洛在学习之前使用整个回合的经验;而时序差分则只使用一个步骤(S_t, A_t, R_{t+1}, S_{t+1})来进行学习

我们将使用一个基于价值的方法案例来解释他们。

蒙特卡洛:在一个回合结束后进行学习

蒙特卡洛在回合结束时计算(G_t) (回报)并且使用其作为一个更新的目标(V(S_t))

因此,在更新我们的价值函数之前,它需要一个完整的交互过程。

Monte Carlo

举个例子:

Monte Carlo

通过训练的回合越来越多,智能体会把游戏玩的越来越好。

Monte Carlo

例如,如果用蒙特卡洛训练了一个状态价值函数

时序差分算法:在每一步进行学习

另一方面,时序差分学习只需要一次交互(一步)S{t+1},就可以形成一个TD目标,并使用 R{t+1} 和 γ*V(S_{t+1}) 更新 V(S_t)。

TD算法的思想是在每一步都对 V(S_t) 进行更新。

但是因为我们没有经历整个回合,所以我们没有 (G_t)(期望回报)。相反,我们通过添加 (R_{t+1}) 和下一个状态的折扣值来估计 (G_t)。

这被称为自举(bootstrapping),因为时序差分方法的更新部分是基于现有估值 V(S_{t+1}) 而不是完整样本 (G_t)

Temporal Difference

这种方法称为TD(0)或单步TD(在任何单个步骤后更新值函数)。

Temporal Difference

我们还是以猫和老鼠为例:

Temporal Difference

现在我们更新V(S_0)

新 (V(S_0) = V(S_0) + lr * [R_1 + \gamma * V(S_1) - V(S_0)])

新 (V(S_0) = 0 + 0.1 * [1 + 1 * 0–0])

新 (V(S_0) = 0.1)

所以我们从状态0开始更新我们的价值函数。

现在我们持续与这个环境进行交互,并更新价值函数。

Temporal Difference

总结一下:

Summary