蒙特卡洛(MC)强化学习算法全解析:从基础到进阶
2026-01-01 18:15:25一、引言
强化学习(Reinforcement Learning, RL)致力于解决智能体(Agent)在环境中通过交互学习最优策略的问题,蒙特卡洛(Monte Carlo, MC)方法作为其中一类基础且重要的算法,凭借利用完整Episode(从起始到终止的完整序列)数据学习的特性,在众多场景发挥作用。本文将围绕MC强化学习,从原理、算法到示例展开详细剖析 ,并结合Python代码模拟网格世界与算法流程。
二、Motivating Example(激发性示例)
1. 场景设定
假设我们要训练一个智能体玩简单的网格世界游戏(Grid World)。网格是一个4x4的方格,智能体从任意非终止状态出发,每次可选择上下左右移动,到达边界再移动会留在原地,进入终止状态(比如网格的四个角落)则Episode结束,每移动一步(除终止步)获得-1奖励,终止状态奖励为0 。
2. 问题引出
我们希望智能体找到从任意状态到终止状态的最优路径,使累积奖励最大。但初始时智能体对环境一无所知,不知道往哪个方向走更好。这就需要一种方法,让智能体通过不断尝试(生成Episode),学习每个状态的价值以及对应的最优动作,MC方法就能解决这类问题,因为它可以基于完整的Episode数据来更新状态价值和策略 。
三、The Simplest MC - based RL Algorithm(最简蒙特卡洛强化学习算法)
(一)Algorithm: MC Basic(算法:基础蒙特卡洛)
1. 原理
MC Basic的核心是利用经验平均来估计状态价值(State - Value)或动作价值(Action - Value)。对于状态价值函数V(s)V(s)V(s)(表示在状态sss下的期望累积奖励),如果我们有多个以状态sss为起点或经过状态sss的Episode,那么V(s)V(s)V(s)的估计值就是这些Episode中从sss出发到Episode结束的累积奖励的平均值 。
数学上,假设我们有N(s)N(s)N(s)个Episode包含状态sss,第iii个这样的Episode中从sss到结束的累积奖励为Gi(s)G_{i}(s)Gi(s),则状态价值的估计公式为:
V(s)←1N(s)∑i=1N(s)Gi(s)V(s) \leftarrow \frac{1}{N(s)} \sum_{i = 1}^{N(s)} G_{i}(s)V(s)←N(s)1i=1∑N(s)Gi(s)
对于动作价值函数Q(s,a)Q(s,a)Q(s,a)(表示在状态sss下执行动作aaa的期望累积奖励),类似地,若有N(s,a)N(s,a)N(s,a)个Episode包含在状态sss执行动作aaa的情况,第iii个对应的累积奖励为Gi(s,a)G_{i}(s,a)Gi(s,a),则:
Q(s,a)←1N(s,a)∑i=1N(s,a)Gi(s,a)Q(s,a) \leftarrow \frac{1}{N(s,a)} \sum_{i = 1}^{N(s,a)} G_{i}(s,a)Q(s,a)←N(s,a)1i=1∑N(s,a)G