交叉熵(cross entropy)与相对熵(relative entropy,KL divergence)的理解

交叉熵(cross entropy)

交叉熵在机器学习中的地位十分重要,常在Logistic回归或者神经网络中作为Loss Function来使用,下面先详细谈一谈交叉熵的定义。
假设现在有关于样本集的两个概率分布 p ( x ) p(x) p(x) q ( x ) q(x) q(x),其中 p ( x ) p(x) p(x)为真实分布, q ( x ) q(x) q(x)为非真实的分布(可以理解为我们通过该样本集训练得到的分布)。如果我们用真实分布 p ( x ) p(x) p(x)来编码该样本,则编码的期望长度为:
H ( p ) = ∑ x p ( x ) l o g ( 1 p ( x ) ) H(p)=\sum_xp(x)log(\frac 1{p(x)}) H(p)=xp(x)log(p(x)1)
但是真实分布往往是不可知的,这时我们可以用非真实分布 q ( x ) q(x) q(x)来计算来自真实分布 p ( x ) p(x) p(x)的平均编码长度,这就是交叉熵:
H c r o s s = ∑ x p ( x ) l o g ( 1 q ( x ) ) H_{cross}=\sum_xp(x)log(\frac 1{q(x)}) Hcross=xp(x)log(q(x)1)
因为用 q ( x ) q(x) q(x)来编码的样本来自于分布 p ( x ) p(x) p(x),所以上述式子中求期望的概率为 p ( x ) p(x) p(x)
举个例子,考虑一个随机变量 x x x,真实分布 p ( x ) 为 ( 1 2 , 1 4 , 1 8 , 1 8 ) p(x)为(\frac 12, \frac 14, \frac 18, \frac 18) p(x)(21,41,81,81),非真实分布 q ( x ) 为 ( 1 4 , 1 4 , 1 4 , 1 4 ) q(x)为(\frac 14, \frac 14, \frac 14, \frac 14) q(x)(41,41,41,41),则依据真实分布求得的平均编码长度为 H ( p ) = 1.75 b i t s H(p) = 1.75bits H(p)=1.75bits,交叉熵为:
H c r o s s = 1 2 l o g 2 4 + 1 4 l o g 2 4 + 1 8 l o g 2 4 + 1 8 l o g 2 4 = 2 b i t s H_{cross}=\frac 12 log_24+\frac 14log_24+\frac 18log_24+\frac 18 log_24=2bits Hcross=21log24+41log24+81log24+81log24=2bits

相对熵(relative entropy)

相对熵也称为KL散度(Kullback-Leibler divergence),在机器学习中,相对熵的概念同样也非常重要。
假设 p ( x ) 、 q ( x ) p(x)、q(x) p(x)q(x)是离散变量 X X X中取值的两个概率分布模型,则我们定义 p p p q q q的相对熵为:
D K L ( p ∣ ∣ q ) = ∑ x p ( x ) l o g ( p ( x ) q ( x ) ) D_{KL}(p||q)=\sum_xp(x)log(\frac {p(x)}{q(x)}) DKL(pq)=xp(x)log(q(x)p(x))
相对熵具有以下几条性质:

  1. 如果 p ( x ) p(x) p(x) q ( x ) q(x) q(x)两个分布相同,那么相对熵为0
  2. 相对熵不具有对称性,即 D K L ( p ∣ ∣ q ) ≠ D K L ( q ∣ ∣ p ) D_{KL}(p||q)\neq D_{KL}(q||p) DKL(pq)̸=DKL(qp)
  3. D K L ( p ∣ ∣ q ) ≥ 0 D_{KL}(p||q)\ge 0 DKL(pq)0
    关于性质3的证明如下:
    D K L ( p ∣ ∣ q ) = ∑ x p ( x ) l o g ( p ( x ) q ( x ) ) = − ∑ x p ( x ) l o g ( q ( x ) p ( x ) ) ≥ − l o g [ ∑ x p ( x ) ( q ( x ) p ( x ) ) ] = − l o g [ ∑ x q ( x ) ] = 0 ( 因 为 ∑ x q ( x ) = 1 ) \begin{aligned} D_{KL}(p||q)&=\sum_x p(x)log(\frac {p(x)}{q(x)})\\ &=-\sum_x p(x)log(\frac {q(x)}{p(x)})\\ &\ge -log[\sum_xp(x)(\frac {q(x)}{p(x)})]\\ &=-log[\sum_x q(x)]\\ &=0(因为\sum_x q(x)=1) \end{aligned} DKL(pq)=xp(x)log(q(x)p(x))=xp(x)log(p(x)q(x))log[xp(x)(p(x)q(x))]=log[xq(x)]=0(xq(x)=1)

为了进一步理解相对熵的作用,我们将相对熵的公式进行展开:
D K L ( p ∣ ∣ q ) = ∑ x p ( x ) l o g ( p ( x ) q ( x ) ) = ∑ x p ( x ) l o g ( p ( x ) ) − ∑ x p ( x ) l o g ( q ( x ) ) = − ∑ x p ( x ) l o g ( q ( x ) ) − [ − ∑ x p ( x ) l o g ( p ( x ) ) ] = H c r o s s − H ( p ) \begin{aligned} D_{KL}(p||q)&=\sum_x p(x)log(\frac {p(x)}{q(x)})\\ &=\sum_x p(x)log(p(x))-\sum_x p(x)log(q(x))\\ &=-\sum_x p(x)log(q(x))-[-\sum_x p(x)log(p(x))]\\ &=H_{cross}-H(p) \end{aligned} DKL(pq)=xp(x)log(q(x)p(x))=xp(x)log(p(x))xp(x)log(q(x))=xp(x)log(q(x))[xp(x)log(p(x))]=HcrossH(p)
通过上述推导,我们可以看出, p p p q q q的相对熵就等于交叉熵与 p p p的熵之差。即用真实分布 q ( x ) q(x) q(x)得到的平均码长比真实分布 p ( x ) p(x) p(x)得到的平均码长多出的比特数就是相对熵。
我们已经证明了相对熵总是大于0的,并且可以直观的看出,当非真实分布 q ( x ) q(x) q(x)越接近真实分布 p ( x ) p(x) p(x)时,相对熵的值越接近0。

交叉熵和相对熵在机器学习中的应用

接着谈一谈相对熵和交叉熵在机器学习中的应用。在机器学习中,我们希望构建的模型在训练数据上学到的分布 P ( m o d e l ) P(model) P(model)和真实的数据分布 P ( r e a l ) P(real) P(real)越接近越好,即相对熵越小越好。
在实际的应用中,完整数据集的真实分布是没法得到的,所以我们在训练模型时,往往考虑的是得到的模型的分布 P ( m o d e l ) P(model) P(model)与训练数据的分布 P ( t r a i n ) P(train) P(train)越接近越好,这里存在一个假设作为前提,即训练数据是从总体分布中独立同分布采样得到的。
上述观点可以描述如下:

  1. 学习的目的,希望得到一个与真实分布一致的分布模型: p ( m o d e l ) ≃ p ( r e a l ) p(model)\simeq p(real) p(model)p(real)
  2. 由于真实分布未知,用训练数据的分布来近似表示真实分布: p ( t r a i n ) ≃ p ( r e a l ) p(train)\simeq p(real) p(train)p(real)
  3. 退而求其次,希望得到一个与训练数据分布一致的分布模型: p ( m o d e l ) ≃ p ( t r a i n ) p(model)\simeq p(train) p(model)p(train)

根据之前的描述,我们可以知道,要使 p ( m o d e l ) p(model) p(model) p ( t r a i n ) p(train) p(train)越接近,就是要使相对熵 D K L ( p ( t r a i n ) ∣ ∣ p ( m o d e l ) ) D_{KL}(p(train)||p(model)) DKL(p(train)p(model))最小,假设 p ( m o d e l ) p(model) p(model)由参数 θ \theta θ确定,则 θ \theta θ可根据以下关系求解:
min ⁡ θ D K L ( p ( t r a i n ) ∣ ∣ p ( m o d e l ) ) = min ⁡ θ H c r o s s − H ( p ( t r a i n ) ) \begin{aligned} &\min_{\theta}\quad D_{KL}(p(train)||p(model))\\ =&\min_{\theta}\quad H_{cross}-H(p(train)) \end{aligned} =θminDKL(p(train)p(model))θminHcrossH(p(train))
由于训练数据的分布 p ( t r a i n ) p(train) p(train)是已知的,所以 H ( p ( t r a i n ) ) H(p(train)) H(p(train))可以求出,是个常数,因此上述求解过程等价于求解使交叉熵 H c r o s s H_{cross} Hcross最小的 θ \theta θ
min ⁡ θ H c r o s s \min_{\theta}\quad H_{cross} θminHcross

下面以最常见的二项Logistic回归为例,说明上述过程。
二项Logistic回归是一种分类模型,由条件概率分布 P ( Y ∣ X ) P(Y|X) P(YX)表示,这里随机变量 X X X的取值为实向量, Y Y Y取值为1或0,我们构建的 P ( m o d e l ) P(model) P(model)的形式为:
{ P ( Y = 1 ∣ x ) = e x p ( ω ⋅ x + b ) 1 + e x p ( ω ⋅ x + b ) P ( Y = 0 ∣ x ) = 1 1 + e x p ( ω ⋅ x + b ) 其 中 需 要 求 解 的 参 数 为 ω 和 b \begin{cases} P(Y=1|x)=\frac {exp(\omega\cdot x+b)}{1 + exp(\omega\cdot x+b)}\\ \\ P(Y=0|x)=\frac {1}{1+exp(\omega\cdot x + b)} \end{cases} \\ \quad \\其中需要求解的参数为\omega和b P(Y=1x)=1+exp(ωx+b)exp(ωx+b)P(Y=0x)=1+exp(ωx+b)1ωb
训练数据的分布 P ( t r a i n ) P(train) P(train)可以表示为:
P ( Y = 1 ∣ X = x i ) = y i P ( Y = 0 ∣ X = x i ) = 1 − y i \begin{aligned} &P(Y=1|X=x_i)=y_i\\ &P(Y=0|X=x_i)=1-y_i \end{aligned} P(Y=1X=xi)=yiP(Y=0X=xi)=1yi

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值