跳转至

终身学习

Deepseek GRPO 中的 KL Divergence

Deepseek R1 发布之后,看到了论文中 RL 的算法用的是 GRPO,而 GRPO 是在之前 Deepseek Math 的论文中被提出来的。GRPO 的目标函数如下:

\[ \begin{aligned} \mathcal{J}_{GRPO}(\theta) &= \mathbb{E}_{[q \sim P(Q), \{o_i\}_{i=1}^G \sim \pi_{\theta_{old}}(O\mid q)]} \frac{1}{G}\sum_{i=1}^G \frac{1}{|o_i|} \sum_{t=1}^{|o_i|} \Biggl\{ \min \Biggl[ \frac{\pi_\theta(o_{i,t} \mid q, o_{i,<t})}{\pi_{\theta_{old}}(o_{i,t} \mid q, o_{i,<t})} \hat{A}_{i,t}, \text{clip}\Biggl( \frac{\pi_\theta(o_{i,t} \mid q, o_{i,<t})}{\pi_{\theta_{old}}(o_{i,t} \mid q, o_{i,<t})}, 1 - \epsilon, 1 + \epsilon \Biggr) \hat{A}_{i,t} \Biggr] \\ &\quad - \beta \, \mathbb{D}_{KL}\left[\pi_{\theta} \parallel \pi_{ref}\right] \Biggr\} \end{aligned} \]

这里我们只看最后的 KL Divergence(KL 散度) 部分。关于最后 KL 散度的实现,论文特别做了说明:

And different from the KL penalty term used in PPO, we estimate the KL divergence with the following unbiased estimator (Schulman, 2020), which is guaranteed to be positive.

\[ \mathbb{D}_{KL}\left[\pi_{\theta} || \pi_{ref}\right] = \frac{\pi_{ref}(o_{i,t}|q,o_{i,<t})}{\pi_{\theta}(o_{i,t}|q,o_{i,<t})}- \log\frac{\pi_{ref}(o_{i,t}|q,o_{i,<t})}{\pi_{\theta}(o_{i,t}|q,o_{i,<t})} - 1, \]

也就是说其使用的 KL Divergence 与 PPO 不同,GRPO 中采用了 Schulman 在博客 中提到的一个无偏估计。论文中使用的是博客中提到的\(k_3\)近似形式。让我们稍微展开一下这里的\(k_3\)近似。

首先 KL 散度的公式如下

\(KL[q,p]=\sum\limits _{x}q(x)\log\frac {q(x)}{p(x)} = E_{x\sim q}[\log\frac {q(x)}{p(x)}]\)

定义

\[ r = \frac{p(x)}{q(x)} \]

那么有

\[ KL[q,p] = k_3 = r - log(r) - 1 \]

因此,论文中的 \(\mathbb{D}_{KL}\left[\pi_{\theta} || \pi_{ref}\right]\) 也可以写成下面由 \(r\) 近似的形式:

\[ \begin{align} \mathbb{D}_{KL}\left[\pi_{\theta} || \pi_{ref}\right] &= \frac{\pi_{ref}(o_{i,t}|q,o_{i,<t})}{\pi_{\theta}(o_{i,t}|q,o_{i,<t})}- \log\frac{\pi_{ref}(o_{i,t}|q,o_{i,<t})}{\pi_{\theta}(o_{i,t}|q,o_{i,<t})} - 1 \\ &= r - log(r) - 1 \\ \end{align} \]

此时,

\[ r = \frac{p(x)}{q(x)} = \frac{\pi_{ref}(o_{i,t}|q,o_{i,<t})}{\pi_{\theta}(o_{i,t}|q,o_{i,<t})} \]

对应地,

\[ q(x) = \pi_{\theta}(o_{i,t}|q,o_{i,<t}) \]
\[ p(x) = \pi_{ref}(o_{i,t}|q,o_{i,<t}) \]

到这里为止,论文中 KL 散度的推导的就完成了,一切都很清晰。后来我又读了几篇关于 KL 散度不对称性的博客,比如这篇Reverse vs Forward KL, 里面提到 Reverse KL Divergence 是类似\(\mathbb{D}_{KL}\left[q_{\phi} || p\right]\)的形式 (这里的\(\phi\)是参数),所以很自然地我认为\(\mathbb{D}_{KL}\left[\pi_{\theta} || \pi_{ref}\right]\)就是 Reverse KL Divergence 的形式...直到我在 Twitter/X 上刷到一个帖子说 GRPO 用的是 Forward KL:

斯坦福小镇 (AI-Town) 系统解读

核心要点

本文解读了斯坦福小镇(AI-Town)项目,重点关注其在生成式代理方面的创新架构设计。 主要包含以下几个关键部分:

  1. 记忆系统(Memory Stream):长期记忆模块
  2. 反思机制(Reflection):高层次推理能力
  3. 计划系统(Planning):行为规划与执行
  4. 评估方法(Evaluation):代理行为的可信度验证

启发与应用

本文的核心概念对游戏 NPC 设计具有重要的参考价值,特别是在:

  • NPC 记忆系统的设计
  • 行为的真实性和可信度
  • 动态社交关系的构建
  • 环境互动的自然性

终身学习:2023

终身学习 (Lifelong learning)

Lifelong learning is the "ongoing, voluntary, and self-motivated" pursuit of knowledge for either personal or professional reasons.1

本文主要是过去一年的学习记录,内容较为杂乱,主要是为备忘。