熵,KL散度,交叉熵

在信息论中定义一个事件 X = x X=x X=x的自信息(self-information)为: I ( p ) = − l o g p I(p)=-logp I(p)=logp,表示以 P ( X = x ) = p P(X=x)=p P(X=x)=p的概率观测到的这事件时所包含的信息量,单位为奈特(nats),P(X=x)表示事件的概率其值为p,那么一奈特就是:以 1 / e 1/e 1/e的概率观察到一个事件时获取的信息量( − l o g ( 1 / e ) = 1 -log(1/e)=1 log(1/e)=1)。可以看出自信息和熵与事件的值无关 ,只与其概率有关。 深度学习中log底数通常为 e e e
熵(香农熵) 表示对整个概率分布中的不确定性总量的量化(说的通俗点就是表示随机变量不确定性的度量),表示为 H ( p ) = E x ∼ P [ I ( p ) ] = − E x ∼ P [ l o g p ] H(p)=E_{x\sim P}[I(p)]=-E_{x\sim P}[log p] H(p)=ExP[I(p)]=ExP[logp]。因为分别对应离散型随机变量和连续性随机变量,期望就是加权平均或积分,。

所以对于离散型随机变量 X X X其概率分布为 P ( X = x i ) = p i , i = 1 , 2... n P(X=x_i)=p_i,i=1,2...n P(X=xi)=pii=1,2...n
X X X的熵可以表示为:
H ( p ) = − ∑ i = 1 n p i l o g ( p i ) H(p)=-\sum_{i=1}^{n}p_ilog(p_i) H(p)=i=1npilog(pi)

对于连续型随机变量 X X X,其取值范围是 [ a , b ] [a,b] [a,b],则 X X X的熵可以表示为:
H ( p ) = − ∫ a b p ( x ) l o g ( p ( x ) ) d x H(p)=-\int_{a}^{b}p(x)log(p(x))dx H(p)=abp(x)log(p(x))dx
这里的 p ( x ) p(x) p(x)为分布函数。
如果对于同一个随机变量X,有两个概率分布,分别是Q和P,我们可以使用 KL散度 来衡量这两个分布之间的差异:
D K L ( P ∣ ∣ Q ) = E x ∼ P [ l o g ( P Q ) ] = E x ∼ P [ l o g p − l o g ( q ) ] = ∑ i = 1 n p i l o g ( p i ) − ∑ i = 1 n p i l o g ( q i ) ( 离 散 ) D_{KL}(P||Q)=E_{x\sim P}[log(\frac{P}{Q})]=E_{x\sim P}[logp-log(q)]=\sum_{i=1}^{n}p_ilog(p_i)-\sum_{i=1}^{n}p_ilog(q_i)(离散) DKL(PQ)=ExP[log(QP)]=ExP[logplog(q)]=i=1npilog(pi)i=1npilog(qi)()
当这两个离散分布是相同的,或者这两个连续分布是“几乎处处“”相同时,KL散度是为0的。KL散度并不是对称的,对于某些分布P和Q的 D K L ( P ∣ ∣ Q ) ≠ D K L ( Q ∣ ∣ P ) D_{KL}(P||Q)\neq D_{KL}(Q||P) DKL(PQ)=DKL(QP)。因此KL散度的选择有很大的影响。

在实际的应用中,若我们的训练数据的上的经验分布表示为 p d a t a p_{data} pdata(用经验分布来代表实际分布,因为实际分布是不知道的,我们可以用样本经验分布来近似得到),模型分布表示为 p m o d e l p_{model} pmodel,那么可以通过最小化KL散度来求得模型分布 p m o d e l p_{model} pmodel,KL散度表示为: D K L ( p d a t a ∣ ∣ p m o d e l ) = E x ∼ p d a t a [ l o g p d a t a − l o g p m o d e l ] D_{KL}(p_{data}||p_{model})=E_{x\sim p_{data}}[logp_{data}-logp_{model}] DKL(pdatapmodel)=Expdata[logpdatalogpmodel],相当于最小化 − E x ∼ p d a t a [ l o g p m o d e l ] -E_{x\sim p_{data}}[logp_{model}] Expdata[logpmodel],这是因为经验分布与参数无关, 所以最终的优化目标是模型的分布的熵。这从另外一个KL角度解释了 最大熵模型 的原理。

另外一个概念是 交叉熵 (cross-entropy),表示为熵和KL散度的和的形式:
H ( P , Q ) = H ( P ) + D K L ( P ∣ ∣ Q ) = − E x ∼ P [ l o g p ] + E x ∼ P [ l o g p − l o g q ] = − E x ∼ P [ l o g q ] = − ∑ i = 1 n p i l o g ( q i ) H(P,Q)=H(P)+D_{KL}(P||Q)=-E_{x\sim P}[log p]+E_{x\sim P}[logp-logq]=-E_{x\sim P}[logq]=-\sum_{i=1}^{n}p_ilog(q_i) H(P,Q)=H(P)+DKL(PQ)=ExP[logp]+ExP[logplogq]=ExP[logq]=i=1npilog(qi)(离散)我们可以看见,当 P P P为经验分布 p d a t a p_{data} pdata, Q Q Q为模型分布 p m o d e l 时 p_{model}时 pmodel,以交叉熵作为优化目标与最小化KL散度是等价的,所以交叉熵可以作为损失函数来使用。例如pytorch损失函数值之nn.BCELoss()(为甚么用交叉熵作为损失函数)

概率论与数理统计 浙大 第四版
Deep Learning 伊恩·古德费洛(中文)
Neural Network and Deep Learning ,Michael Nielsen(中文)

  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值