强化学习入门4:无模型算法之蒙特卡洛

MC算法总结

一、算法核心背景与基础定义

核心关联:与策略迭代(Policy Iteration)的衔接

MC类算法本质是无模型(model-free)版本的策略迭代,其核心改造是将策略迭代中依赖系统模型(状态转移概率p(s′∣s,a)p(s'|s,a)p(ss,a)、奖励概率p(r∣s,a)p(r|s,a)p(rs,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π[GtSt=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=1ngπ(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)

具体操作:

  1. 对每个(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,,sT1,aT1,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)。
  2. 动作值估计:利用样本均值近似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=1ngπ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

具体操作:

  1. 策略改进的数学目标:求解使动作值期望最大的确定性策略:
    πk+1(s)=arg⁡max⁡π∑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πmaxaA(s)π(as)qk(s,a)
  2. 贪心策略解:对每个状态sss,选择使qk(s,a)q_k(s,a)qk(s,a)最大的动作ak∗(s)=arg⁡max⁡a∈A(s)qk(s,a)a_k^*(s) = \arg\max_{a \in \mathcal{A}(s)} q_k(s,a)ak(s)=argmaxaA(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(as)={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的样本高效改进版,核心优化两点:

  1. 样本利用策略:从“初始访问”改为每次访问(Every-Visit),利用单个episode中所有(s,a)(s,a)(s,a)的访问记录估计动作值;
  2. 策略更新时机:从“收集所有样本后更新”改为“单episode后即时更新”,符合广义策略迭代(GPI)中“不精确评估仍可改进策略”的逻辑。
  • 前提条件:探索起始(Exploring Starts)——需保证所有(s,a)(s,a)(s,a)都能作为episode的起始点被充分采样(满足大数定律的i.i.d.样本要求)。

完整数学推导与步骤

步骤1:初始化
  • 初始策略π0(a∣s)\pi_0(a|s)π0(as)(任意确定性/随机性策略);
  • 初始动作值估计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,,sT1,aT1,rT,其中TTT为episode长度(终止步数)。
步骤3:策略评估(Every-Visit MC估计)

具体操作:

  1. 反向计算回报:从episode终止步t=T−1t=T-1t=T1反向迭代至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=T1,T2,,0:gγg+rt+1
    (反向计算确保每个(st,at)(s_t,a_t)(st,at)ggg对应从ttt时刻出发的回报GtG_tGt

  2. 更新累计回报与访问次数:
    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)+gNum(st,at)+1

  3. 动作值估计:基于累计样本均值更新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)=arg⁡max⁡a∈A(st)qk(st,a)a_k^*(s_t) = \arg\max_{a \in \mathcal{A}(s_t)} q_k(s_t,a)ak(st)=argaA(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(ast)={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∗=arg⁡max⁡a∈A(s)q(s,a)a_* = \arg\max_{a \in \mathcal{A}(s)} q(s,a)a=argmaxaA(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}π(as)={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π(as)=1,退化为“纯贪心策略”(仅利用,无探索);
    • ϵ=1\epsilon = 1ϵ=1时,π(a∣s)=1∣A(s)∣\pi(a|s) = \frac{1}{|\mathcal{A}(s)|}π(as)=A(s)1,退化为“均匀随机策略”(仅探索,无利用)。
动作选择逻辑(初学者可直接落地)

生成episode时,按以下步骤选择动作(以“随机数判断”为例):

  1. 生成一个服从[0,1][0,1][0,1]均匀分布的随机数xxx
  2. x≥ϵx \geq \epsilonxϵ:选择当前贪心动作a∗=arg⁡max⁡aq(s,a)a_* = \arg\max_{a} q(s,a)a=argmaxaq(s,a)(利用);
  3. 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.10.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)|}π(as)=A(s)1)。
步骤2:生成 Episode(实际“试错”过程)

目标:生成一条包含“状态-动作-奖励”的轨迹,无需指定起始(s0,a0)(s_0,a_0)(s0,a0)

过程:

  1. 随机选择起始状态s0s_0s0(如环境初始状态、上一轮终止状态);
  2. 对每个时间步t=0,1,…,T−1t = 0,1,\dots,T-1t=0,1,,T1TTT为episode终止步数):
    • 在状态sts_tst,按ϵ\epsilonϵ-Greedy 策略选择动作ata_tat(遵循上述动作选择逻辑);
    • 执行动作ata_tat,观察环境反馈的奖励rt+1r_{t+1}rt+1和下一状态st+1s_{t+1}st+1
  3. 记录轨迹:(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),,(sT1,aT1,rT)sTs_TsT为终止状态,无后续动作)。
步骤3:策略评估(估计动作值 q(s,a)q(s,a)q(s,a)

核心:通过“反向计算折扣回报”,利用episode中所有(st,at)(s_t,a_t)(st,at)的访问记录更新动作值(Every-Visit 策略,样本利用率高)。

过程:

  1. 初始化累积回报g=0g = 0g=0(终止状态后无奖励,故初始为0);
  2. 从episode的最后一步t=T−1t = T-1t=T1反向迭代至第一步t=0t = 0t=0(反向确保回报对应“从ttt时刻出发的未来奖励”):
    1. 更新累积回报:g=γ⋅g+rt+1g = \gamma \cdot g + r_{t+1}g=γg+rt+1(折扣因子γ\gammaγ体现“未来奖励的当前价值衰减”);
    2. 累加累计回报: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
    3. 累加访问次数: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
    4. 估计动作值: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

  1. 找到当前贪心动作:a∗=arg⁡max⁡a∈A(st)q(st,a)a_* = \arg\max_{a \in \mathcal{A}(s_t)} q(s_t,a)a=argmaxaA(st)q(st,a)(动作值最大的动作);
  2. ϵ\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(ast)={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)<104);
  • 策略π\piπ的更新趋于稳定(连续多轮episode的策略无明显变化);
  • 达到预设的episode总数(如10000轮)。

与前两种MC算法的核心对比

对比维度MC BasicMC Exploring StartsMC ϵ\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 最优策略
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值