跳转至

最大似然与前向 KL

最大似然估计和交叉熵训练本质上是同一件事:让模型分布尽量解释观测数据。

设真实数据来自分布 \(P_{\rm data}(x)\),模型为 \(Q_\theta(x)\)。最大似然训练最大化:

\[ \prod_{i=1}^N Q_\theta(x_i). \]

为了计算方便,通常最大化 log likelihood:

\[ \sum_{i=1}^N \log Q_\theta(x_i). \]

等价地,最小化 negative log likelihood:

\[ L(\theta) = -{1\over N}\sum_{i=1}^N \log Q_\theta(x_i). \]

从有限样本到期望

当样本数很大时,经验平均近似真实分布期望:

\[ -{1\over N}\sum_{i=1}^N \log Q_\theta(x_i) \approx -\mathbb E_{x\sim P_{\rm data}} \log Q_\theta(x). \]

右边就是交叉熵:

\[ H(P_{\rm data},Q_\theta) = -\sum_x P_{\rm data}(x)\log Q_\theta(x). \]

与前向 KL 的等价

KL 散度为:

\[ D_{\rm KL}(P_{\rm data}\Vert Q_\theta) = \sum_x P_{\rm data}(x) \log{P_{\rm data}(x)\over Q_\theta(x)}. \]

展开:

\[ D_{\rm KL}(P_{\rm data}\Vert Q_\theta) = \sum_x P_{\rm data}(x)\log P_{\rm data}(x) - \sum_x P_{\rm data}(x)\log Q_\theta(x). \]

第一项与 \(\theta\) 无关。因此:

\[ \arg\min_\theta D_{\rm KL}(P_{\rm data}\Vert Q_\theta) = \arg\min_\theta H(P_{\rm data},Q_\theta). \]

也就是:

最大似然 = 最小化交叉熵 = 最小化前向 KL。

为什么叫前向 KL

这里的方向是:

\[ D_{\rm KL}(P_{\rm data}\Vert Q_\theta). \]

期望在真实数据分布下取:

\[ \mathbb E_{x\sim P_{\rm data}}[\cdots]. \]

这意味着模型会被强迫覆盖数据中出现的模式。如果某个真实样本 \(x\) 满足 \(P_{\rm data}(x)>0\),但模型给 \(Q_\theta(x)\approx 0\),代价会很大。

反向 KL 是:

\[ D_{\rm KL}(Q_\theta\Vert P_{\rm data}), \]

期望在模型分布下取。它更容易出现 mode-seeking 行为,即模型集中在少数高概率模式上。

语言模型中的形式

语言模型数据是 token 序列:

\[ t_0,\ldots,t_{N-1}. \]

自回归分解:

\[ Q_\theta(t_0,\ldots,t_{N-1}) = \prod_i Q_\theta(t_i\mid t_{<i}). \]

最大似然等价于最小化:

\[ L(\theta) = -\sum_i \log Q_\theta(t_i\mid t_{<i}). \]

这正是 decoder-only Transformer 的训练目标。

和 NNQS 的差别

NNQS 的目标通常不是拟合外部样本分布,而是通过变分原理最小化能量:

\[ E(\theta) = \mathbb E_{x\sim p_\theta} [E_{\rm loc}(x)]. \]

这里采样分布 \(p_\theta\) 本身依赖模型参数,不是固定的 \(P_{\rm data}\)。所以它不是普通最大似然,而是参数依赖分布上的闭环优化。