交叉熵

在信息论中,两个概率分布 p {displaystyle p} 和 q {displaystyle q} 在相同的基础事件集上的交叉熵测量识别从集合中提取的事件所需的平均位数,如果 用于该集合的编码方案针对估计的概率分布 q {displaystyle q} 而不是真实分布 p {displaystyle p} 进行了优化。

定义

分布 q {displaystyle q} 相对于给定集合上的分布 p {displaystyle p} 的交叉熵定义如下:

H ( p , q ) = − E p ⁡ [ log ⁡ q ] {displaystyle H(p,q)=-operatorname {E} _{p}[log q]} ,

其中 E p [ ⋅ ] {displaystyle E_{p}[cdot ]} 是关于分布 p {displaystyle p} 的期望值算子。

该定义可以使用 Kullback–Leibler 散度 D K L ( p ∥ q ) {displaystyle D_{mathrm {KL} }(pparallel q)} , p {displaystyle p} 来自 q 的散度来表述 {displaystyle q}(也称为 p {displaystyle p} 相对于 q {displaystyle q} 的相对熵)。

H ( p , q ) = H ( p ) + D K L ( p ∥ q ) , {displaystyle H(p,q)=H(p)+D_{mathrm {KL} }(pparallel q ),}

其中 H ( p ) {displaystyle H(p)} 是 p {displaystyle p} 的熵。

对于具有相同支持 X {displaystyle {mathcal {X}}} 的离散概率分布 p {displaystyle p} 和 q {displaystyle q} 这意味着

(等式 1)

连续分布的情况是类似的。 我们必须假设 p {displaystyle p} 和 q {displaystyle q} 相对于一些参考测度 r {displaystyle r} 是xxx连续的(通常 r {displaystyle r} 是关于 a Borel σ-代数)。 设 P {displaystyle P} 和 Q {displaystyle Q} 是 p {displaystyle p} 和 q {displaystyle q} 关于 r {displaystyle r} 的概率密度函数。 然后

− ∫ X P ( x ) log ⁡ Q ( x ) d r ( x ) = E p ⁡ [ − log ⁡ Q ] {displaystyle -int _{mathcal {X}}P(x), log Q(x),dr(x)=operatorname {E} _{p}[-log Q]}

因此

(等式 2)

注意:符号 H ( p , q ) {displaystyle H(p,q)} 也用于不同的概念,即 p {displaystyle p} 和 q {displaystyle q} 的联合熵。

动机

在信息论中,Kraft–McMillan 定理确立了任何可直接解码的编码方案,用于编码消息以从一组可能性中识别一个值 x i {displaystyle x_{i}} { x 1 , … , x n } { displaystyle {x_{1},ldots ,x_{n}}} 可以被视为表示隐式概率分布 q ( x i ) = ( 1 2 ) ℓ i {displaystyle q(x_{ i})=left({frac {1}{2}}right){ell _{i}}} 在 { x 1 , … , x n } {displaystyle {x_ {1},ldots ,x_{n}}} ,其中 ℓ i {displaystyle ell _{i}} 是 x i {displaystyle x_{i}} 在 位。 因此,当假定错误分布 q {displaystyle q} 而数据实际上遵循分布 p {displaystyle p} 时,交叉熵可以解释为每个数据的预期消息长度。 这就是为什么期望取而代之的是真实概率分布 p {displaystyle p} 而不是 q {displaystyle q} 。 实际上,真实分布 p {displaystyle p} 下的预期消息长度是

E p ⁡ [ ℓ ] = − E p ⁡ [ ln ⁡ q ( x ) ln ⁡ ( 2 ) ] = − E p ⁡ [ log 2 ⁡ q ( x ) ] = − ∑ x i p ( x i ) log 2 ⁡ q ( x i ) = − ∑ x p ( x ) log 2 ⁡ q ( x ) = H ( p , q ) 。 {displaystyle operatorname {E} _{p}[ell ]=-operatorname {E} _{p}left[{frac {ln {q(x)}} {ln(2)}}right]=-operatorname {E} _{p}left[log _{2}{q(x)}right]=- 总和 _{x_{i}}p(x_{i}),log _{2}q(x_{i})=-总和 _{x}p(x), log _{2}q(x)=H(p,q).}

估计

有很多情况需要测量交叉熵,但 p {displaystyle p} 的分布是未知的。 一个例子是语言建模,其中基于训练集 T {displaystyle T} 创建模型,然后在测试集上测量其交叉熵以评估模型在预测测试数据时的准确性。 在此示例中,p {displaystyle p} 是任何语料库中单词的真实分布,而 q {displaystyle q} 是模型预测的单词分布。 由于真实分布未知,因此无法直接计算交叉熵。 在这些情况下,使用以下公式计算交叉熵的估计值:

交叉熵

H ( T , q ) = − ∑ i = 1 N 1 N log 2 ⁡ q ( x i ) {displaystyle H(T,q)=-sum _{i=1}{N}{frac {1}{N}}log _{2}q(x_{i})}

其中 N {displaystyle N} 是测试集的大小,q ( x ) {displaystyle q(x)} 是从训练集中估计的事件 x {displaystyle x} 的概率。 换句话说,q ( x i ) {displaystyle q(x_{i})} 是模型的概率估计,即文本的第 i 个词是 x i {displaystyle x_{i}} 。 总和是测试的 N {displaystyle N} 个单词的平均值。

0

点评

点赞

相关文章