强化学习中,蒙特卡洛方法(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 Visit 和 Every-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),因为第二次出现时后续路径更短,回报较低,导致平均值下降。

浙公网安备 33010602011771号