1 min read 135 words Updated Jun 17, 2026 Created Jun 17, 2026

核心思想和蒙特卡洛强相关,很幸运的在 THUWC 2024 遇到了 MCTS 的工程题。

这个算法是 RL Policy Based 类的始祖,需要对大量的 Trajectory 进行采样,而每个Trajectory之间的差异可能是巨大的,结果就引入了高方差(High Variance)和较大的梯度噪声(noisy gradients) ,导致训练的不稳定和策略收敛困难。

所以之后的优化和变体就是基于上述两个问题进行的。


  • $\pi_\theta$ 基于参数 $\theta$ 的策略函数
  • $\tau$ 轨迹。
  • $G_{\tau, t} = \sum_{k=0}^{\infty} \gamma^{k} r_{t+k}$ 带衰减的累计收益
  • $a, r$ 动作和收益。

期望最大收益:

$$J(\theta) = {\mathbb E}_{s \sim \tau^{\pi_\theta}, a \sim \pi_\theta} [G_{\tau, 1}] $$

利用马尔可夫和蒙特卡洛无偏估计,以及 $\nabla_\theta p(\theta) = p(\theta) \nabla_\theta \log p(\theta)$ 的小 trick,可以有:

$$\nabla J(\theta) = {\mathbb E}_{\tau \sim \pi_\theta} \left[ \sum_{t = 0}^T \nabla \log \pi_\theta(a_t|s_t) G_{\tau, t} \right] $$

$$\nabla J(\theta) = {\mathbb E}_{\tau \sim \pi_\theta} \left[ \sum_{t = 0}^T G_{\tau, t} \nabla \log \pi_\theta(a_t|s_t) \right] $$

$\nabla \log \pi_\theta(a_t|s_t)$ 其实就是预测概率分布和真实 one-hot 动作之间的交叉熵,可以通过数学推导而来。

于是 REINFORCE 算法就有了: