蒙特卡洛(MC)方法通过平均访问状态 s 后观察到的回报,可以估算给定策略 π 的状态价值函数 Vπ(s)。这个过程被称为MC预测或评估,它告诉我们在当前策略下处于特定状态有多好。然而,强化学习 (reinforcement learning)的最终目的通常是控制——找到使所有状态的期望回报最大化的最优策略 π∗。
为了使用MC方法实现控制,特别是当我们没有环境模型(即不知道转移概率 p(s′,r∣s,a))时,估算状态价值函数 Vπ 通常是不够的。为什么?因为改进策略需要了解在给定状态下选择不同动作的价值。如果我们只知道 Vπ(s),在不知道环境动态的情况下,我们无法轻易判断哪个动作 a 能带来最好的结果。我们将需要模型来计算 ∑s′,rp(s′,r∣s,a)[r+γVπ(s′)]。
这就是动作价值函数 Qπ(s,a) 变得非常重要的地方。回想一下,Qπ(s,a) 表示从状态 s 开始,采取动作 a,然后遵循策略 π 所能获得的期望回报。如果我们对状态 s 中所有可用动作 a 都有准确的 Qπ(s,a) 估算,那么选择最佳动作就简单直接了:我们只需选择具有最高估算 Q 值的动作。
π′(s)=aargmaxQ(s,a)
因此,对于使用MC方法的免模型控制,我们将重心从估算 Vπ(s) 转向估算 Qπ(s,a)。
使用蒙特卡洛估算动作价值(Qπ)
核心思想与MC预测保持一致:我们从完整的经验片段中学习,并平均观察到的回报。然而,我们不再是平均每个访问状态的回报,而是平均每个访问的状态-动作对 (s,a) 的回报。
我们来看看应用于估算 Qπ 的首次访问MC方法。我们运行多个遵循策略 π 的片段。对于每个片段,我们查看发生的每个状态-动作对 (St,At)。如果这是该特定对 (St,At) 在此片段中首次被访问,我们从该点到片段结束计算总回报 Gt:
Gt=Rt+1+γRt+2+γ2Rt+3+⋯+γT−t−1RT
其中 T 是片段的终止时间步。
我们为每个状态-动作对保持一个估算 Q(s,a)。与 Vπ 的MC预测类似,我们可以通过平均所有片段中首次访问 (St,At) 后观察到的回报 Gt 来更新我们的估算 Q(St,At)。
实现此方法的一个实用方式是使用增量更新规则。我们记录每个状态-动作对 (s,a) 在所有片段中首次被访问的次数,称此计数为 N(s,a)。在生成一个片段并计算首次访问 (St,At) 后的回报 Gt 后,我们如下更新我们的估算 Q(St,At):
- 增加计数:N(St,At)←N(St,At)+1
- 更新估算:
Q(St,At)←Q(St,At)+N(St,At)1(Gt−Q(St,At))
此公式向新观察到的回报 Gt 的方向修正当前估算 Q(St,At)。步长 N(St,At)1 保证我们实际上是在计算一个累积平均值;早期回报影响较大,而随着估算变得更可靠,后期回报引起的调整较小。通常,对于非平稳问题(环境或策略可能发生变化),会使用恒定步长 α 代替 N(s,a)1:
Q(St,At)←Q(St,At)+α(Gt−Q(St,At))
其中 0<α≤1 是学习率参数 (parameter)。
试探的挑战
现在我们有了估算给定策略 π 的动作价值 Qπ(s,a) 的方法。但我们如何使用它来找到最优策略 π∗?
自然的想法是遵循广义策略迭代(GPI)的模式,它涉及在策略评估(估算当前策略的价值函数)和策略改进(使策略相对于当前价值函数估算变为贪婪策略)之间交替进行。
使用MC方法,这看起来会像:
- 策略评估:在策略 π 下运行多个片段,并通过平均状态-动作对的回报来使用MC估算 Qπ(s,a)。
- 策略改进:更新策略 π,使其相对于估算的 Q 值变为贪婪策略:对所有 s,π(s)←aargmaxQ(s,a)。
- 重复此过程,直到策略和价值函数稳定下来。
然而,这里有一个重要问题:试探。如果策略 π 在早期就变得确定且贪婪(例如,它总是从状态 s 选择动作 a1),那么我们将只观察到对 (s,a1) 对的回报。我们将永远无法获取对状态 s 中其他可能更好的动作(如 a2,a3,…)的经验(因此也无法更新 Q 值估算)。智能体可能会陷入次优循环,因为它从未尝试其他选项。
为保证MC方法收敛到最优策略,我们需要保证所有状态-动作对都能持续被访问。这被称为保持试探。
"一种理论方式是假定试探性开始。这假定每个片段都从随机选择的状态-动作对 (s,a) 开始,然后才遵循策略 π。这保证每个对都有非零的概率被选为起始点,从而保证最终都会被试探。虽然对理论证明有帮助,但试探性开始在实际使用中通常不切实际(例如,您可能无法随意设定机器人的初始状态和动作)。"
因此,实际的MC控制算法需要方法来保证持续试探,即使不依赖试探性开始。这通常会使用非完全确定性或非贪婪的策略,例如 ϵ-贪婪策略,它们通常采取贪婪动作,但有时(以小概率 ϵ)会选择一个随机动作。我们将在接下来的章节中讨论这些具体算法以及在线策略(on-policy)学习和离线策略(off-policy)学习之间的差异,这些差异直接关联到如何处理试探。