时序差分学习的基本原理与应用

TD(Temporal Difference)算法是一种用于强化学习的方法。它是一种用于估计价值函数的方法,其中价值函数代表了在给定的状态下,执行一系列动作可以获得的预期回报。在强化学习中,智能体(agent)通过与环境交互来学习如何执行动作以获得最大的回报。TD 算法利用时间差分来估计价值函数,因此被称为时序差分 (Temporal Difference) 学习。

TD 算法的基本思想是:不需要等到一个完整的序列结束后才能学习,而是在每一步都能进行学习。它结合了蒙特卡洛方法(等待一个完整的序列结束后学习)和动态规划方法(基于当前知识的自举学习)的优点。

下面是TD算法的基本步骤:

  1. 初始化价值函数的估计。
  2. 在每一时间步 t:
    a. 智能体根据当前状态 s_t 选择一个动作 a_t。
    b. 智能体执行动作 a_t,并观察得到的奖励 r_t 和下一个状态 s_{t+1}。
    c. 使用时间差分误差 (TD-error) 来更新价值函数的估计。这个误差是实际观察到的奖励加上下一个状态的价值的折现值,与当前状态的价值估计的差。
    d. 更新价值函数:V(s_t) ← V(s_t) + α * (r_t + γ * V(s_{t+1}) - V(s_t))。这里,α 是学习率,控制着学习的速度,而 γ 是折现因子,决定了未来奖励的重要性。

举例说明:

假设我们有一个非常简单的环境,一个智能体在一维的空间里移动,目标是到达右侧的终点。状态空间是 [A, B, C, D, E],其中A是起点,E是终点。智能体每到达E,会得到+1的奖励,其它情况奖励都是0。

假设我们使用TD(0)(一种TD算法的变种,只考虑一步的时间差分)来估计每个状态的价值。我们可以使用上面的步骤来进行学习:

  1. 初始化V(A) = V(B) = V(C) = V(D) = V(E) = 0。
  2. 智能体从A开始,选择向右移动的动作。
  3. 智能体移动到B,观察到奖励为0,并且观察到状态变成了B。
  4. 使用TD算法更新V(A)。假设

学习率α=0.1,折现因子γ=0.9,我们得到V(A) ← V(A) + 0.1 * (0 + 0.9 * V(B) - V(A))。
5. 智能体继续执行动作,直到到达E,然后用同样的方式更新其他状态的价值。
6. 重复上面的步骤多次,智能体的价值函数估计将逐渐接近实际的价值函数。

通过这种方式,智能体使用TD算法逐步学习了环境的价值函数,从而能够制定出更好的策略来最大化其长期回报。

我们继续上面的例子,并详细分析智能体的学习过程。

状态空间是 [A, B, C, D, E],起点是A,终点是E。到达E时,智能体获得+1的奖励。我们使用TD(0)算法来估计每个状态的价值。学习率α=0.1,折现因子γ=0.9。

我们按照时间步骤分析。

  1. 初始时,V(A) = V(B) = V(C) = V(D) = V(E) = 0。

  2. 时间步1:

    • 智能体从A移动到B,奖励是0。
    • TD-error = (0 + γ * V(B)) - V(A) = (0 + 0.9 * 0) - 0 = 0。
    • V(A) ← V(A) + α * TD-error = 0 + 0.1 * 0 = 0。
  3. 时间步2:

    • 智能体从B移动到C,奖励是0。
    • TD-error = (0 + γ * V(C)) - V(B) = (0 + 0.9 * 0) - 0 = 0。
    • V(B) ← V(B) + α * TD-error = 0 + 0.1 * 0 = 0。
  4. 时间步3:

    • 智能体从C移动到D,奖励是0。
    • TD-error = (0 + γ * V(D)) - V(C) = (0 + 0.9 * 0) - 0 = 0。
    • V(C) ← V(C) + α * TD-error = 0 + 0.1 * 0 = 0。
  5. 时间步4:

    • 智能体从D移动到E,奖励是+1。
    • TD-error = (1 + γ * V(E)) - V(D) = (1 + 0.9 * 0) - 0 = 1。
    • V(D) ← V(D) + α * TD-error = 0 + 0.1 * 1 = 0.1。

在第一轮中,智能体只更新了V(D)。在接下来的轮次中,它将继续更新其他状态的价值。

  1. 在第二轮中,智能体再次从A到E移动。当它从C移动到D时,它现在可以利用更新后的V(D)来更新V(C)。
    • TD-error = (0 + γ * V(D)) - V(C) = (0 + 0.9 * 0.1) - 0 = 0.09。
    • V(C) ← V(C) + α * TD-error = 0 + 0.1 * 0.09 = 0.009。

以此类推,经过多轮的学习,价值函数的估计将逐渐接近真实值。这些价值函数可以指导智能体更有效地选择动作以获得更高的奖励。例如,如果智能体知

道状态D接近正奖励,它可能会更倾向于选择将其带向状态D的动作。