强化学习中,蒙特卡洛方法(Monte Carlo, MC)中有两种策略是用来估计状态-动作对(state-action pair)价值的,“initial visit”和“every-visit”这两种策略 的详解

“initial visit”和“every-visit”这两种策略。

这两种策略是蒙特卡洛方法(Monte Carlo, MC)中用来估计状态-动作对(state-action pair)价值的不同方式,主要用于强化学习中。

1. 概念解释

Initial Visit(首次访问策略)

  • 定义:在一条完整的轨迹(episode)中,只记录并使用某个状态-动作对(s, a)第一次出现时的回报(return),来更新它的价值估计。
  • 核心思想:避免重复计算同一个状态-动作对在同一轨迹中的多次出现,只关注它首次访问时的回报。

Every-Visit(每次访问策略)

  • 定义:在一条完整的轨迹中,记录并使用某个状态-动作对(s, a)每次出现时的回报,来更新它的价值估计。
  • 核心思想:考虑该状态-动作对在轨迹中的所有出现,累积每次的回报。

2. 通俗解释

想象你在玩一个迷宫游戏,目标是找到出口,并记录每个位置(状态)和选择(动作)的价值(比如能带来多少奖励)。你在一条路径上可能会多次经过同一个位置并做出相同选择:

  • Initial Visit(首次访问):你只关心第一次经过某个位置并做出某个选择时的最终奖励。比如,你第一次经过位置A并选择向右走,最终得到了10分奖励。你就用这10分来更新A位置向右走的价值。之后在这条路径上即使再次经过A并向右走,你也不再用后续的奖励更新它的价值。
  • Every-Visit(每次访问):你关心每次经过某个位置并做出某个选择时的最终奖励。比如,你经过位置A并向右走第一次得到10分,第二次经过A又向右走得到8分,你会把这两次的奖励(10分和8分)都用来更新A位置向右走的价值。

3. 举例说明

如下一个 3x3 网格,确保路径和计算完全匹配,并详细说明 Initial VisitEvery-Visit 策略的计算过程。


1. 3x3 网格和路径

网格设计

我们用一个 3x3 网格表示迷宫,状态编号为 S1 到 S9:

S1 -- S2 -- S3
|     |     |
S4 -- S5 -- S6
|     |     |
S7 -- S8 -- S9
  • 状态:S1, S2, ..., S9。
  • 动作:可以选择 "向右"、"向下"、"向左"、"向上"(如果可行)。
  • 玩家路径:S1 → S2 → S1 → S4 → S7。
  • 轨迹对应的状态-动作对
    • S1 → S2:(S1, 向右)。
    • S2 → S1:(S2, 向左)。
    • S1 → S4:(S1, 向下)。
    • S4 → S7:(S4, 向下)。
  • 奖励
    • 每一步的即时奖励:
      • S1 → S2:奖励 2。
      • S2 → S1:奖励 1。
      • S1 → S4:奖励 3。
      • S4 → S7:奖励 5。
    • S7 是终点,后续奖励为 0。

2. 轨迹和累计回报

轨迹

  • 路径:S1 → S2 → S1 → S4 → S7。
  • 状态-动作对:(S1, 向右) → (S2, 向左) → (S1, 向下) → (S4, 向下)。
  • 注意:(S1, 向右) 和 (S1, 向下) 都出现了,但我们关注 (S1, 向右) 的价值估计,因为 (S1, 向下) 只出现了一次。

计算累计回报(Return)

从后向前计算累计回报(无折扣,γ=1):

  • 第 4 步:(S4, 向下) → S7,奖励 5,后续无奖励,累计回报 = 5。
  • 第 3 步:(S1, 向下) → S4,奖励 3,后续回报 5,累计回报 = 3 + 5 = 8。
  • 第 2 步:(S2, 向左) → S1,奖励 1,后续回报 8,累计回报 = 1 + 8 = 9。
  • 第 1 步:(S1, 向右) → S2,奖励 2,后续回报 9,累计回报 = 2 + 9 = 11。

(S1, 向右) 的回报

  • (S1, 向右) 只在第 1 步出现,累计回报 = 11。

(S1, 向下) 的回报

  • (S1, 向下) 在第 3 步出现,累计回报 = 8。

3. 修正:关注重复状态-动作对

注意到 (S1, 向右) 只出现了一次,(S1, 向下) 也只出现了一次,轨迹中没有重复的状态-动作对,导致两种策略结果相同。

为了突出差异,我们修改路径,让 (S1, 向右) 重复出现。

新路径

  • 路径:S1 → S2 → S5 → S4 → S1 → S2 → S5。
  • 轨迹对应的状态-动作对:
    • S1 → S2:(S1, 向右)。
    • S2 → S5:(S2, 向下)。
    • S5 → S4:(S5, 向左)。
    • S4 → S1:(S4, 向上)。
    • S1 → S2:(S1, 向右)。
    • S2 → S5:(S2, 向下)。
  • (S1, 向右) 出现了两次:第 1 步和第 5 步。

奖励

  • S1 → S2:奖励 2。
  • S2 → S5:奖励 1。
  • S5 → S4:奖励 3。
  • S4 → S1:奖励 4。
  • S1 → S2:奖励 2。
  • S2 → S5:奖励 1(终点 S5,后续奖励 0)。

累计回报

  • 第 6 步:(S2, 向下) → S5,奖励 1,累计回报 = 1。
  • 第 5 步:(S1, 向右) → S2,奖励 2,累计回报 = 2 + 1 = 3。
  • 第 4 步:(S4, 向上) → S1,奖励 4,累计回报 = 4 + 3 = 7。
  • 第 3 步:(S5, 向左) → S4,奖励 3,累计回报 = 3 + 7 = 10。
  • 第 2 步:(S2, 向下) → S5,奖励 1,累计回报 = 1 + 10 = 11。
  • 第 1 步:(S1, 向右) → S2,奖励 2,累计回报 = 2 + 11 = 13。

(S1, 向右) 的回报

  • 第 1 步:累计回报 = 13。
  • 第 5 步:累计回报 = 3。

4. Initial Visit vs Every-Visit

假设初始 Q(S1, 向右) = 0,更新方式为平均。

Initial Visit(首次访问)

  • 只考虑 (S1, 向右) 第一次出现(第 1 步):
    • 累计回报 = 13。
  • 访问计数 = 1。
  • Q(S1, 向右) = (0 × 0 + 13) / 1 = 13。

Every-Visit(每次访问)

  • 考虑 (S1, 向右) 每次出现:
    • 第 1 步:累计回报 = 13。
    • 第 5 步:累计回报 = 3。
  • 访问计数 = 2。
  • Q(S1, 向右) = (0 × 0 + 13 + 3) / 2 = 16 / 2 = 8。

5. 差异总结

策略Q(S1, 向右)原因
Initial Visit 13 只用第一次访问的回报(13)。
Every-Visit 8 用两次访问的回报(13 和 3),平均值 8。

直观理解

  • Initial Visit:只看 (S1, 向右) 第一次出现的回报(13),忽略了后续的回报变化。
  • Every-Visit:综合了两次出现的回报(13 和 3),因为第二次出现时后续路径更短,回报较低,导致平均值下降。

 

posted @ 2025-04-14 13:50  AlphaGeek  阅读(171)  评论(0)    收藏  举报