跳转至

目标函数、折扣回报与策略梯度

强化学习的目标是找到策略:

\[ \pi_\theta(a\mid s), \]

使长期回报最大。

折扣回报

从时间 \(t\) 开始的回报:

\[ G_t = \sum_{k=0}^{\infty} \gamma^k r_{t+k}. \]

折扣因子 \(\gamma\) 的作用:

  • 保证无限时间问题可控。
  • 让近期 reward 权重更高。
  • 形成 Bellman 递推。

Bellman 形式:

\[ G_t=r_t+\gamma G_{t+1}. \]

策略目标

目标函数:

\[ J(\theta) = \mathbb E_{\tau\sim\pi_\theta} [G(\tau)]. \]

其中 \(\tau\) 是轨迹:

\[ \tau=(s_0,a_0,r_0,s_1,a_1,r_1,\ldots). \]

策略梯度

策略梯度定理给出一种形式:

\[ \nabla_\theta J(\theta) = \mathbb E_{\pi_\theta} \left[ \nabla_\theta\log\pi_\theta(a_t\mid s_t) Q^{\pi_\theta}(s_t,a_t) \right]. \]

直觉:

  • 如果某个动作带来高回报,就提高它的 log probability。
  • 如果某个动作带来低回报,就降低它的 log probability。

这和 VMC 梯度中出现的 log-derivative 结构相似。

Baseline

为了降低方差,常减去 baseline:

\[ A(s_t,a_t)=Q(s_t,a_t)-V(s_t). \]

于是:

\[ \nabla_\theta J(\theta) = \mathbb E \left[ \nabla_\theta\log\pi_\theta(a_t\mid s_t) A(s_t,a_t) \right]. \]

\(A\) 称为 advantage,表示动作比当前状态平均水平好多少。

如果不使用 bootstrap,也可以用完整 episode 的实际回报来估计 \(Q\) 或 advantage。这就是 Monte Carlo value estimation 的基本思想,详见 强化学习中的 Monte Carlo

和最大似然的差别

语言模型训练最大化数据 token 的概率:

\[ \log p_\theta(t_i\mid t_{<i}). \]

策略梯度最大化高回报动作的概率:

\[ \log \pi_\theta(a_t\mid s_t) \times \text{advantage}. \]

因此两者都有“提高某些输出概率”的结构,但权重来源不同:

  • 语言模型来自数据标签。
  • RL 来自环境回报。

并不是所有强化学习都直接用这条 policy gradient 公式更新策略。AlphaZero 风格方法会先用 MCTS 把当前网络策略改进成搜索策略,再让网络用监督损失拟合搜索结果。具体代码闭环见 实践:AlphaZero 五子棋代码导读