交叉熵

来自testwiki
跳转到导航 跳转到搜索

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

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

H(p,q)=Ep[logq]=H(p)+DKL(pq),

其中H(p)pDKL(pq)是从pqKL散度(也被称为p相对于q相对熵)。

对于离散分布pq,这意味着:

H(p,q)=xp(x)logq(x).

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

XP(x)logQ(x)dr(x)=Ep[logQ].

源起

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

H(p,q)=Ep[li]=Ep[log1q(xi)]
H(p,q)=xip(xi)log1q(xi)
H(p,q)=xp(x)logq(x).

估计

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

H(T,q)=i=1N1Nlog2q(xi)

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

參考資料