随笔系列之 交叉熵(cross entropy) and KL divergence

有关交叉熵Cross Entropy 与KL 散度的一点点

cross entropy

我相信了解过机器学习的基本算法的人没有不知道交叉熵这个东西的;通常,我们在机器学习的模型训练中会使用交叉熵作为我们损失函数 log loss. 但是,我们可能大概的理解,只要这个交叉熵损失函数越小,我们的模型就会越准确,似乎是意见很神奇的事情;如果理解的多一点的可能会从其表达式来理解,比如:二分类问题的交叉熵: ylog(p)(1y)log(1p) − y l o g ( p ) − ( 1 − y ) l o g ( 1 − p ) ,直观的感受告诉我们:如果是正类那么显然p越大这个损失函数值越小;如果是反类,那么显然p越小,1-p越大,损失函数值越小;所以,可以从直觉上去解释这个损失函数为什么会work.

但是除此之外交叉熵还有别的物理意义吗? 答案是肯定的!

下面我打算简单聊聊交叉熵的物理意义:


  • 谈及交叉熵,必然离不开熵的定义 H(p)=plog(p) H ( p ) = ∑ p l o g ( p ) ,其所表达的是p所描述的数据的分布的杂乱程度,但是从另一个角度来说,其所表达的是编码p所需要传递的message所需要的bits数;对于概率较高的很明显应该给予较短的编码以便较少信息传递总量;
  • OK,那么交叉熵cross entropy,通常使用H(p,q)来表达,表示使用q分布的编码来编码来自q的message所需要的平均bits数.这里我们可以想象q是一个optimal coder,可以给出对p更好的编码,当然q本身的熵所传达的是最少的bits;从信息传输这个角度来说,交叉熵大概就有这样的含义;

进一步的思考:事实上这个q就是我们在构建的学习模型,我们的目标当然是为了学习目标数据的真实分布,但是当下的目标是学习数据的经验分布也就是学习给定的训练集上分布;因此我们的目标也就是为了让q更接近p;交叉熵此刻就可以这么理解:
我们的目标是使得交叉熵H(p,q)最小,当然是在p给定的情况下;按照之前所说,这里,交叉熵也就表达了如果用我们的模型估计q来描述p的话,他的熵为多少;显然,不会比原本的数据本身固有的熵小,因此,使得交叉熵最小,最终也就是达到了使得q更接近p的目的!

KL散度

关于KL散度的定义,其实很简单了,基本形式为 KL(p|q)=H(p,q)H(p) K L ( p | q ) = H ( p , q ) − H ( p ) ,其中 H(p,q)=plog(q) H ( p , q ) = ∑ p l o g ( q ) .H(p)定义如上.


  • KL散度是不对称的也就是KL(p|q) != KL(q|p)
  • 由其表达式可知,KL散度等于交叉熵与原数据熵的差.

从message传输的角度来看,KL散度表达的就是如果使用q的分布的code来描述或者编码从p中取出的数据,所带来的额外bits开销.

关于cross entropy和KL divergence之间的区别与联系

由这两者的表达式可以很清晰的看出两者之间的联系.下面从实际应用的角度来说明一下两者的使用场景的差异(机器学习):
在机器学习的模型优化策略损失函数的选择时,可以使用cross entropy,在这种情况下p是数据的经验分布,因此p是不变的constant;在这种情况下,KL散度中的p是不变的,因此后面的-H(p)的常量,因此,优化这两个目标是等价的. 但是如果p是变化的,那么这两者显然就不一样了.因此在未知p的情况下,想要让q去近似p,可以使用KL度量两个分布之间的距离.作为优化目标.

For Now,以上.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值