05 · Monte Carlo 方法¶
对照:原书第 5 章,印刷页 77–100(PDF 第 90–113 页)。顺序为均值估计、MC Basic、MC Exploring Starts、MC ε-Greedy,以及探索与利用。
5.1 · 先理解均值估计¶
设 \(X\) 为随机变量,\(x_1,\ldots,x_n\) 是独立同分布样本。用
估计 \(\mathbb E[X]\)。大数定律说明样本数增长时的性质,不说明有限样本一定准确。独立样本情况下,样本均值的方差为 \(\operatorname{var}(X)/n\)。
5.2 · MC Basic:用采样代替模型期望¶
第 4 章需要已知模型来评估策略。本章固定一个状态动作对 \((s,a)\),第一步执行 \(a\),之后跟随策略 \(\pi\),得到回报样本 \(g_1,\ldots,g_n\),再计算
MC Basic 的核心顺序是:为各个状态动作对收集多条轨迹、估计动作价值、贪心更新策略。它保留了策略迭代的“评价—改进”结构,只是不再直接使用模型求和。
交互实验:从固定的 (s₁,a₂) 采样多条轨迹,看回报均值如何接近对应的 qπ。
动画的后续策略是均匀随机策略。目标是持续任务中的动作价值,轨迹只采样前 \(H\) 步;因为 \(|r|\leq1\),被忽略的尾项有界:
因此有限 \(H\) 的估计不是无限回报的严格无偏估计。切换 \(H=20\) 和 \(H=80\),同时观察采样波动与截断误差界。
5.3 · MC Exploring Starts:更充分地使用轨迹¶
原书先说明同一条轨迹可以为沿途多个状态动作对提供回报,再将策略改进提前到每条轨迹之后。Exploring starts 要求不同状态动作对有充分的起始探索。
First-visit 只使用一条轨迹里某状态动作对的第一次访问;every-visit 使用所有访问。原书 MC Exploring Starts 的伪代码采用 every-visit。倒序递推回报时,不要把 first-visit 错写成 last-visit;同一轨迹内的多个回报也不是彼此独立的样本。
5.4 · MC ε-Greedy:把探索放进策略¶
设 \(m=|\mathcal A(s)|\),选定一个贪心动作 \(a^*\)。原书的策略为
先以概率 \(1-\epsilon\) 利用贪心动作,再以概率 \(\epsilon\) 从所有动作中均匀选择;第二步仍可能选到贪心动作。因此贪心动作的总概率不是单纯的 \(1-\epsilon\)。
交互实验:调整 ε,比较理论动作概率与同一随机种子下的实际采样频率。
5.5 · 探索与利用的条件¶
探索策略给动作正概率,有助于覆盖状态动作空间,但还需要环境中的可达性和足够长的采样过程。不能只看到 \(\epsilon>0\) 就断言每个状态一定得到充分访问。
python3 -m examples.textbook --chapter 5 --steps 300 --output outputs/book-ch05.json
python3 -m examples.textbook --demo epsilon
from examples.textbook.core import epsilon_greedy, monte_carlo
print(epsilon_greedy([1, 3, 2, -1, 0], epsilon=0.2))
result = monte_carlo(samples=300, horizon=80)
print(result["estimate"], result["truth"], result["tail_bound"])
下一章:随机逼近,把“先收集再求平均”改成逐样本更新。