交叉熵

在信息论中,基于相同事件测度的两个概率分布p和q的交叉熵()是指,当基于一个“非自然”(相对于“真实”分布p而言)的概率分布q进行编码时,在事件集合中唯一标识一个事件所需要的平均比特数(bit)。

给定两个概率分布p和q,p相对于q的交叉熵定义为:

:H(p, q) = \operatorname{E}_p[-\log q] = H(p) + D_{\mathrm{KL}}(p \| q),\!

其中H(p)是p的熵,D_{\mathrm{KL}}(p \| q)是从p与q的KL散度(也被称为p相对于q相对熵)。

对于离散分布p和q,这意味着:

:H(p, q) = -\sum_x p(x)\, \log q(x). \!

对于连续分布也是类似的。我们假设p和q在测度 r上是绝对连续的(通常 r是Lebesgue measure on a Borel σ-algebra)。设P和Q分别为p和q在测度 r上概率密度函数。则

:-\int_X P(x)\, \log Q(x)\, dr(x) = \operatorname{E}_p[-\log Q]. \!

源起
在信息论中, 以直接可解编码模式通过值x_i编码一个信息片段,使其能在所有可能的X集合中唯一标识该信息片段,Kraft–McMillan theorem确保这一过程可以被看作一种X上的隐式概率分布q(x_i) = 2^{-l_i},从而使得l_i是x_i的编码位长度。 因此, 交叉熵可以看作每个信息片段在错误分布Q下的期望编码位长度,而信息实际分布为P。这就是期望{E}_p是基于P而不是Q的原因。

:H(p, q) = \operatorname{E}_p[l_i] = \operatorname{E}_p\left[\log \frac{1}{q(x_i)}\right]
:H(p, q) = \sum_{x_i} p(x_i)\, \log \frac{1}{q(x_i)} \!
:H(p, q) = -\sum_x p(x)\, \log q(x). \!

估计
在大多数情况下,我们需要在不知道分布p的情况下计算其交叉熵。例如在语言模型中, 我们基于训练集T创建了一个语言模型, 而在测试集合上通过其交叉熵来评估该模型的准确率。p是语料中词汇的真实分布,而q是我们获得的语言模型预测的词汇分布。由于真实分布是未知的,我们不能直接计算交叉熵。在这种情况下,我们可以通过下式来估计交叉熵:

:H(T,q) = -\sum_{i=1}^N \frac{1}{N} \log_2 q(x_i)

N是测试集大小,q(x)是在训练集上估计的事件x发生的概率。我们假设训练集是从p(x)的真实采样,则此方法获得的是真实交叉熵的蒙特卡洛估计。

參考資料
*

评论 (0)

  • 还没有评论,来抢沙发吧。