Approximating KL Divergence: k1 k2 k3是什么
http://joschu.net/blog/kl-approx.html $$ K L[q, p]=\sum_x q(x) \log \frac{q(x)}{p(x)}=E_{x \sim q}\left[\log \frac{q(x)}{p(x)}\right] $$ 它解释了一个我在各种代码中使用过的技巧,我将 $K L[q, p]$ 近似为 $\frac{1}{2} (\log p(x) - \log q(x))^2$ 的样本平均值,对于来自 $q$ 的样本 $x$,而不是更标准的 $\log \frac{q(x)}{p(x)}$。 这篇文章将解释为什么这个表达式是 KL 的一个好的(虽然有偏差的)估计器,以及如何在保持其低方差的同时使其无偏差。 我们计算 $KL$ 的选项取决于我们对 $p$ 和 $q$ 有什么样的访问权限。 在这里,我们将假设我们可以计算任何 $x$ 的概率(或概率密度)$p(x)$ 和 $q(x)$,但我们无法解析地计算 $x$ 上的总和。 为什么我们不能解析地计算它呢? 精确计算它需要太多的计算或内存。 没有闭合形式的表达式。 我们可以通过仅存储对数概率(log-prob)来简化代码,而无需存储整个分布。如果KL散度仅用作诊断工具,这会是一个合理的选择,就像在强化学习中经常出现的情况一样。 估计总和或积分的最常见策略是使用蒙特卡洛估计。给定样本 $x_1, x_2, \dots \sim q$,我们如何构建一个好的估计? 一个好的估计量是无偏的(它具有正确的均值)并且具有低方差。我们知道一个无偏估计量(在来自 $q$ 的样本下)是 $\log \frac{q(x)}{p(x)}$。然而,它具有高方差,因为它对于一半的样本是负的,而KL散度始终是正的。让我们将这个朴素估计量称为 $k_1 = \log \frac{q(x)}{p(x)} = - \log r$,其中我们定义了比率 $r=\log \frac{p(x)}{q(x)}$,它将在后续计算中频繁出现。 ...