MC算法总结
一、算法核心背景与基础定义
核心关联:与策略迭代(Policy Iteration)的衔接
MC类算法本质是无模型(model-free)版本的策略迭代,其核心改造是将策略迭代中依赖系统模型(状态转移概率p(s′∣s,a)p(s'|s,a)p(s′∣s,a)、奖励概率p(r∣s,a)p(r|s,a)p(r∣s,a))的策略评估步骤,替换为基于经验样本的蒙特卡洛(MC)估计。
关键数学定义
-
动作值函数(Action Value Function):对于策略π\piπ,状态-动作对(s,a)(s,a)(s,a)的动作值定义为从(s,a)(s,a)(s,a)出发遵循π\piπ的期望回报:
qπ(s,a)=Eπ[Gt∣St=s,At=a]q_\pi(s,a) = \mathbb{E}_\pi\left[G_t \mid S_t=s, A_t=a\right]qπ(s,a)=Eπ[Gt∣St=s,At=a]
其中Gt=Rt+1+γRt+2+γ2Rt+3+⋯G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \cdotsGt=Rt+1+γRt+2+γ2Rt+3+⋯为折扣回报,γ∈[0,1]\gamma \in [0,1]γ∈[0,1]为折扣因子。 -
蒙特卡洛估计原理:若从(s,a)(s,a)(s,a)出发收集nnn个独立同分布(i.i.d.)的episodes,第iii个episode的回报为gπ(i)(s,a)g_\pi^{(i)}(s,a)gπ(i)(s,a),则qπ(s,a)q_\pi(s,a)qπ(s,a)的无偏估计为样本均值:
q^π(s,a)=1n∑i=1ngπ(i)(s,a)\hat{q}_\pi(s,a) = \frac{1}{n} \sum_{i=1}^n g_\pi^{(i)}(s,a)q^π(s,a)=n1i=1∑ngπ(i)(s,a)
由大数定律,当n→∞n \to \inftyn→∞时,q^π(s,a)→qπ(s,a)\hat{q}_\pi(s,a) \to q_\pi(s,a)q^π(s,a)→qπ(s,a),且估计方差var(q^π(s,a))=1nvar(Gt)\text{var}(\hat{q}_\pi(s,a)) = \frac{1}{n}\text{var}(G_t)var(q^π(s,a))=n1var(Gt)(随nnn增大趋于0)。
二、MC Basic算法
算法定位
MC Basic是最简单的MC强化学习算法,直接对策略迭代的“策略评估-策略改进”框架进行无模型改造,采用初始访问(Initial-Visit)样本利用策略(仅用episode估计初始(s,a)(s,a)(s,a)的动作值)。
完整数学推导与步骤
步骤1:策略评估(Policy Evaluation,无模型MC估计)
- 输入:当前策略πk\pi_kπk,所有(s,a)∈S×A(s)(s,a) \in \mathcal{S} \times \mathcal{A}(s)(s,a)∈S×A(s)
- 目标:估计qπk(s,a)q_{\pi_k}(s,a)qπk(s,a)
具体操作:
- 对每个(s,a)(s,a)(s,a),收集nnn个独立episode:每个episode以(s,a)(s,a)(s,a)为起始,遵循πk\pi_kπk生成轨迹(s,a,r1,s1,a1,r2,⋯ ,sT−1,aT−1,rT)(s,a,r_1,s_1,a_1,r_2,\cdots,s_{T-1},a_{T-1},r_T)(s,a,r1,s1,a1,r2,⋯,sT−1,aT−1,rT),计算每个episode的回报gπk(i)(s,a)g_{\pi_k}^{(i)}(s,a)gπk(i)(s,a)(i=1,2,⋯ ,ni=1,2,\cdots,ni=1,2,⋯,n)。
- 动作值估计:利用样本均值近似qπk(s,a)q_{\pi_k}(s,a)qπk(s,a):
qπk(s,a)≈qk(s,a)=1n∑i=1ngπk(i)(s,a)q_{\pi_k}(s,a) \approx q_k(s,a) = \frac{1}{n} \sum_{i=1}^n g_{\pi_k}^{(i)}(s,a)qπk(s,a)≈qk(s,a)=n1i=1∑ngπk(i)(s,a)
当nnn足够大时,由大数定律,qk(s,a)q_k(s,a)qk(s,a)收敛到真实qπk(s,a)q_{\pi_k}(s,a)qπk(s,a)。
步骤2:策略改进(Policy Improvement,贪心策略)
- 输入:估计的动作值qk(s,a)q_k(s,a)qk(s,a)
- 目标:生成更优策略πk+1\pi_{k+1}πk+1
具体操作:
- 策略改进的数学目标:求解使动作值期望最大的确定性策略:
πk+1(s)=argmaxπ∑a∈A(s)π(a∣s)qk(s,a)\pi_{k+1}(s) = \arg\max_{\pi} \sum_{a \in \mathcal{A}(s)} \pi(a|s) q_k(s,a)πk+1(s)=argπmaxa∈A(s)∑π(a∣s)qk(s,a) - 贪心策略解:对每个状态sss,选择使qk(s,a)q_k(s,a)qk(s,a)最大的动作ak∗(s)=argmaxa∈A(s)qk(s,a)a_k^*(s) = \arg\max_{a \in \mathcal{A}(s)} q_k(s,a)ak∗(s)=argmaxa∈A(s)qk(s,a),则:
πk+1(a∣s)={1if a=ak∗(s)0otherwise\pi_{k+1}(a|s) = \begin{cases} 1 & \text{if } a = a_k^*(s) \\ 0 & \text{otherwise} \end{cases}πk+1(a∣s)={10if a=ak∗(s)otherwise
步骤3:收敛性分析
MC Basic的收敛性继承自策略迭代:
- 若每个(s,a)(s,a)(s,a)的样本数n→∞n \to \inftyn→∞,则qk(s,a)→qπk(s,a)q_k(s,a) \to q_{\pi_k}(s,a)qk(s,a)→qπk(s,a)(策略评估收敛);
- 策略改进满足πk+1≥πk\pi_{k+1} \geq \pi_kπk+1≥πk(即qπk+1(s,a)≥qπk(s,a)q_{\pi_{k+1}}(s,a) \geq q_{\pi_k}(s,a)qπk+1(s,a)≥qπk(s,a)对所有(s,a)(s,a)(s,a)成立),且有限步内收敛到最优策略π∗\pi_*π∗和最优动作值q∗q_*q∗。
三、MC Exploring Starts算法
算法定位与核心改进
MC Exploring Starts是MC Basic的样本高效改进版,核心优化两点:
- 样本利用策略:从“初始访问”改为每次访问(Every-Visit),利用单个episode中所有(s,a)(s,a)(s,a)的访问记录估计动作值;
- 策略更新时机:从“收集所有样本后更新”改为“单episode后即时更新”,符合广义策略迭代(GPI)中“不精确评估仍可改进策略”的逻辑。
- 前提条件:探索起始(Exploring Starts)——需保证所有(s,a)(s,a)(s,a)都能作为episode的起始点被充分采样(满足大数定律的i.i.d.样本要求)。
完整数学推导与步骤
步骤1:初始化
- 初始策略π0(a∣s)\pi_0(a|s)π0(a∣s)(任意确定性/随机性策略);
- 初始动作值估计q0(s,a)q_0(s,a)q0(s,a)(任意初始值,如0);
- 累计回报计数器:Returns(s,a)=0\text{Returns}(s,a) = 0Returns(s,a)=0,访问次数计数器:Num(s,a)=0\text{Num}(s,a) = 0Num(s,a)=0(对所有(s,a)(s,a)(s,a))。
步骤2:Episode生成
- 选择起始状态-动作对(s0,a0)(s_0,a_0)(s0,a0),需满足“探索起始”条件(所有(s,a)(s,a)(s,a)均有机会作为(s0,a0)(s_0,a_0)(s0,a0));
- 遵循当前策略πk\pi_kπk生成episode:s0,a0,r1,s1,a1,r2,⋯ ,sT−1,aT−1,rTs_0,a_0,r_1,s_1,a_1,r_2,\cdots,s_{T-1},a_{T-1},r_Ts0,a0,r1,s1,a1,r2,⋯,sT−1,aT−1,rT,其中TTT为episode长度(终止步数)。
步骤3:策略评估(Every-Visit MC估计)
具体操作:
-
反向计算回报:从episode终止步t=T−1t=T-1t=T−1反向迭代至t=0t=0t=0,累积折扣回报:
g←0for t=T−1,T−2,…,0:g←γ⋅g+rt+1\begin{align*} g &\leftarrow 0 \\ \text{for } & t = T-1, T-2, \dots, 0: \\ & g \leftarrow \gamma \cdot g + r_{t+1} \end{align*}gfor ←0t=T−1,T−2,…,0:g←γ⋅g+rt+1
(反向计算确保每个(st,at)(s_t,a_t)(st,at)的ggg对应从ttt时刻出发的回报GtG_tGt) -
更新累计回报与访问次数:
Returns(st,at)←Returns(st,at)+gNum(st,at)←Num(st,at)+1\begin{align*} \text{Returns}(s_t,a_t) &\leftarrow \text{Returns}(s_t,a_t) + g \\ \text{Num}(s_t,a_t) &\leftarrow \text{Num}(s_t,a_t) + 1 \end{align*}Returns(st,at)Num(st,at)←Returns(st,at)+g←Num(st,at)+1 -
动作值估计:基于累计样本均值更新qk(st,at)q_k(s_t,a_t)qk(st,at):
qk(st,at)←Returns(st,at)Num(st,at)q_k(s_t,a_t) \leftarrow \frac{\text{Returns}(s_t,a_t)}{\text{Num}(s_t,a_t)}qk(st,at)←Num(st,at)Returns(st,at)
步骤4:策略改进(贪心策略,与MC Basic一致)
对episode中涉及的每个(st,at)(s_t,a_t)(st,at),更新策略:
ak∗(st)=argmaxa∈A(st)qk(st,a)a_k^*(s_t) = \arg\max_{a \in \mathcal{A}(s_t)} q_k(s_t,a)ak∗(st)=arga∈A(st)maxqk(st,a)
πk+1(a∣st)={1if a=ak∗(st)0otherwise\pi_{k+1}(a|s_t) = \begin{cases}
1 & \text{if } a = a_k^*(s_t) \\
0 & \text{otherwise}
\end{cases}πk+1(a∣st)={10if a=ak∗(st)otherwise
步骤5:收敛性分析
- 样本效率提升:单个episode可同时估计多个(s,a)(s,a)(s,a)的动作值,避免MC Basic中“每个(s,a)(s,a)(s,a)需独立收集episode”的冗余;
- 收敛性保证:若“探索起始”条件满足(所有(s,a)(s,a)(s,a)被充分采样,Num(s,a)→∞\text{Num}(s,a) \to \inftyNum(s,a)→∞),则qk(s,a)→qπk(s,a)q_k(s,a) \to q_{\pi_k}(s,a)qk(s,a)→qπk(s,a),策略πk\pi_kπk收敛到最优策略π∗\pi_*π∗。
四、MC ϵ\epsilonϵ-Greedy算法
算法背景:为什么需要 MC ϵ\epsilonϵ-Greedy?
前两种蒙特卡洛(MC)算法(MC Basic、MC Exploring Starts)存在一个关键限制:
必须满足探索起始(Exploring Starts)条件——即所有状态-动作对(s,a)(s,a)(s,a)都需作为episode的起始点被充分采样,才能保证动作值估计准确。
但实际场景中(如游戏、机器人控制),很难强制让所有(s,a)(s,a)(s,a)都成为起始点。
MC ϵ\epsilonϵ-Greedy 的核心价值:
通过引入软策略(ϵ\epsilonϵ-Greedy 策略),在“探索未知动作”和“利用已知好动作”之间找平衡,无需探索起始条件,即可覆盖所有(s,a)(s,a)(s,a),更贴近实际应用。
核心概念:ϵ\epsilonϵ-Greedy 策略
ϵ\epsilonϵ(读作“epsilon”)是介于[0,1][0,1][0,1]之间的超参数,控制“探索”与“利用”的权重。
该策略是一种随机软策略——对任意状态sss,所有动作都有正概率被选择,而非仅选“当前最优动作”。
ϵ\epsilonϵ-Greedy 策略的概率定义
设状态sss对应的动作集合为A(s)\mathcal{A}(s)A(s),其大小为∣A(s)∣|\mathcal{A}(s)|∣A(s)∣(即sss处的动作总数);
令a∗=argmaxa∈A(s)q(s,a)a_* = \arg\max_{a \in \mathcal{A}(s)} q(s,a)a∗=argmaxa∈A(s)q(s,a)(当前动作值最大的“贪心动作”),则:
π(a∣s)={1−ϵ+ϵ∣A(s)∣若 a=a∗(利用:高概率选贪心动作)ϵ∣A(s)∣若 a≠a∗(探索:低概率选非贪心动作)\pi(a|s) = \begin{cases}
1 - \epsilon + \frac{\epsilon}{|\mathcal{A}(s)|} & \text{若 } a = a_* \quad (\text{利用:高概率选贪心动作}) \\
\frac{\epsilon}{|\mathcal{A}(s)|} & \text{若 } a \neq a_* \quad (\text{探索:低概率选非贪心动作})
\end{cases}π(a∣s)={1−ϵ+∣A(s)∣ϵ∣A(s)∣ϵ若 a=a∗(利用:高概率选贪心动作)若 a=a∗(探索:低概率选非贪心动作)
关键性质:贪心动作概率 > 非贪心动作概率
对任意ϵ∈[0,1]\epsilon \in [0,1]ϵ∈[0,1],可证明贪心动作的选择概率始终大于非贪心动作:
1−ϵ+ϵ∣A(s)∣≥ϵ∣A(s)∣1 - \epsilon + \frac{\epsilon}{|\mathcal{A}(s)|} \geq \frac{\epsilon}{|\mathcal{A}(s)|}1−ϵ+∣A(s)∣ϵ≥∣A(s)∣ϵ
推导:左边展开为1−ϵ+ϵ∣A(s)∣1 - \epsilon + \frac{\epsilon}{|\mathcal{A}(s)|}1−ϵ+∣A(s)∣ϵ,因1−ϵ≥01 - \epsilon \geq 01−ϵ≥0(ϵ≤1\epsilon \leq 1ϵ≤1),故左边 ≥ 右边。
- 特殊情况:
- 当ϵ=0\epsilon = 0ϵ=0时,π(a∗∣s)=1\pi(a_*|s) = 1π(a∗∣s)=1,退化为“纯贪心策略”(仅利用,无探索);
- 当ϵ=1\epsilon = 1ϵ=1时,π(a∣s)=1∣A(s)∣\pi(a|s) = \frac{1}{|\mathcal{A}(s)|}π(a∣s)=∣A(s)∣1,退化为“均匀随机策略”(仅探索,无利用)。
动作选择逻辑(初学者可直接落地)
生成episode时,按以下步骤选择动作(以“随机数判断”为例):
- 生成一个服从[0,1][0,1][0,1]均匀分布的随机数xxx;
- 若x≥ϵx \geq \epsilonx≥ϵ:选择当前贪心动作a∗=argmaxaq(s,a)a_* = \arg\max_{a} q(s,a)a∗=argmaxaq(s,a)(利用);
- 若x<ϵx < \epsilonx<ϵ:从A(s)\mathcal{A}(s)A(s)中随机选择一个动作(每个动作概率相等,探索)。
MC ϵ\epsilonϵ-Greedy 完整算法步骤
算法遵循“生成episode → 估计动作值 → 改进策略”的循环,核心是“无探索起始条件”和“ϵ\epsilonϵ-Greedy 策略更新”。
步骤1:初始化(准备工作)
输入:环境状态空间S\mathcal{S}S、动作空间A(s)\mathcal{A}(s)A(s)(每个sss对应的动作)、折扣因子γ∈[0,1]\gamma \in [0,1]γ∈[0,1](通常取0.90.90.9)、超参数ϵ∈(0,1]\epsilon \in (0,1]ϵ∈(0,1](建议取0.1∼0.30.1 \sim 0.30.1∼0.3)。
初始化参数:
- 初始动作值估计:q(s,a)=0q(s,a) = 0q(s,a)=0(对所有(s,a)∈S×A(s)(s,a) \in \mathcal{S} \times \mathcal{A}(s)(s,a)∈S×A(s),初始值可设为0);
- 累计回报计数器:Returns(s,a)=0\text{Returns}(s,a) = 0Returns(s,a)=0(记录(s,a)(s,a)(s,a)的所有episode回报总和);
- 访问次数计数器:Num(s,a)=0\text{Num}(s,a) = 0Num(s,a)=0(记录(s,a)(s,a)(s,a)被访问的总次数);
- 初始策略:任意软策略(如均匀随机策略,π(a∣s)=1∣A(s)∣\pi(a|s) = \frac{1}{|\mathcal{A}(s)|}π(a∣s)=∣A(s)∣1)。
步骤2:生成 Episode(实际“试错”过程)
目标:生成一条包含“状态-动作-奖励”的轨迹,无需指定起始(s0,a0)(s_0,a_0)(s0,a0)。
过程:
- 随机选择起始状态s0s_0s0(如环境初始状态、上一轮终止状态);
- 对每个时间步t=0,1,…,T−1t = 0,1,\dots,T-1t=0,1,…,T−1(TTT为episode终止步数):
- 在状态sts_tst,按ϵ\epsilonϵ-Greedy 策略选择动作ata_tat(遵循上述动作选择逻辑);
- 执行动作ata_tat,观察环境反馈的奖励rt+1r_{t+1}rt+1和下一状态st+1s_{t+1}st+1;
- 记录轨迹:(s0,a0,r1),(s1,a1,r2),…,(sT−1,aT−1,rT)(s_0,a_0,r_1), (s_1,a_1,r_2), \dots, (s_{T-1},a_{T-1},r_T)(s0,a0,r1),(s1,a1,r2),…,(sT−1,aT−1,rT)(sTs_TsT为终止状态,无后续动作)。
步骤3:策略评估(估计动作值 q(s,a)q(s,a)q(s,a))
核心:通过“反向计算折扣回报”,利用episode中所有(st,at)(s_t,a_t)(st,at)的访问记录更新动作值(Every-Visit 策略,样本利用率高)。
过程:
- 初始化累积回报g=0g = 0g=0(终止状态后无奖励,故初始为0);
- 从episode的最后一步t=T−1t = T-1t=T−1反向迭代至第一步t=0t = 0t=0(反向确保回报对应“从ttt时刻出发的未来奖励”):
- 更新累积回报:g=γ⋅g+rt+1g = \gamma \cdot g + r_{t+1}g=γ⋅g+rt+1(折扣因子γ\gammaγ体现“未来奖励的当前价值衰减”);
- 累加累计回报:Returns(st,at)=Returns(st,at)+g\text{Returns}(s_t,a_t) = \text{Returns}(s_t,a_t) + gReturns(st,at)=Returns(st,at)+g;
- 累加访问次数:Num(st,at)=Num(st,at)+1\text{Num}(s_t,a_t) = \text{Num}(s_t,a_t) + 1Num(st,at)=Num(st,at)+1;
- 估计动作值:q(st,at)=Returns(st,at)Num(st,at)q(s_t,a_t) = \frac{\text{Returns}(s_t,a_t)}{\text{Num}(s_t,a_t)}q(st,at)=Num(st,at)Returns(st,at)(样本均值,无偏估计,符合大数定律)。
步骤4:策略改进(更新 ϵ\epsilonϵ-Greedy 策略)
目标:基于新估计的q(s,a)q(s,a)q(s,a),更新策略为“当前最优的ϵ\epsilonϵ-Greedy 策略”,而非纯贪心策略。
过程:
对episode中涉及的每个状态sts_tst:
- 找到当前贪心动作:a∗=argmaxa∈A(st)q(st,a)a_* = \arg\max_{a \in \mathcal{A}(s_t)} q(s_t,a)a∗=argmaxa∈A(st)q(st,a)(动作值最大的动作);
- 按ϵ\epsilonϵ-Greedy 概率公式更新策略:
πnew(a∣st)={1−ϵ+ϵ∣A(st)∣若 a=a∗ϵ∣A(st)∣若 a≠a∗\pi_{new}(a|s_t) = \begin{cases} 1 - \epsilon + \frac{\epsilon}{|\mathcal{A}(s_t)|} & \text{若 } a = a_* \\ \frac{\epsilon}{|\mathcal{A}(s_t)|} & \text{若 } a \neq a_* \end{cases}πnew(a∣st)={1−ϵ+∣A(st)∣ϵ∣A(st)∣ϵ若 a=a∗若 a=a∗
迭代终止
重复步骤2~4,直至满足以下条件之一:
- 动作值q(s,a)q(s,a)q(s,a)的变化量小于阈值(如∣qnew(s,a)−qold(s,a)∣<10−4|q_{new}(s,a) - q_{old}(s,a)| < 10^{-4}∣qnew(s,a)−qold(s,a)∣<10−4);
- 策略π\piπ的更新趋于稳定(连续多轮episode的策略无明显变化);
- 达到预设的episode总数(如10000轮)。
与前两种MC算法的核心对比
| 对比维度 | MC Basic | MC Exploring Starts | MC ϵ\epsilonϵ-Greedy |
|---|---|---|---|
| 探索起始依赖 | 依赖(需所有(s,a)(s,a)(s,a)为起始点) | 依赖(需所有(s,a)(s,a)(s,a)为起始点) | 不依赖(软策略保证探索) |
| 策略类型 | 纯贪心(确定性) | 纯贪心(确定性) | ϵ\epsilonϵ-Greedy(随机软策略) |
| 样本利用策略 | 初始访问(仅起始(s,a)(s,a)(s,a)) | Every-Visit(所有(s,a)(s,a)(s,a)) | Every-Visit(所有(s,a)(s,a)(s,a)) |
| 收敛目标 | 全局最优策略π∗\pi_*π∗ | 全局最优策略π∗\pi_*π∗ | ϵ\epsilonϵ-Greedy 最优策略 |

1551

被折叠的 条评论
为什么被折叠?



