熵(Entropy),交叉熵(Cross-Entropy),KL-松散度(KL Divergence)

1.介绍:

      当咱们开发一个分类模型的时候,咱们的目标是把输入映射到预测的几率上,当咱们训练模型的时候就不停地调整参数使得咱们预测出来的几率和真是的几率更加接近。api

      这篇文章咱们关注在咱们的模型假设这些类都是明确区分的,假设咱们是开发一个二分类模型,那么对应于一个输入数据,咱们将他标记为要么绝对是正,要么绝对是负。好比,咱们输入的是一张图片,来判断这张图片是苹果仍是梨子。函数

      在训练过程当中,咱们可能输入了一张图片表示的是苹果,那么对于这张输入图片的真实几率分布为y=(苹果:1,梨子:0),可是咱们的模型可能预测出来的是另外一种几率分布y`(苹果:0.4,梨子:0.6),而后咱们发现了在这张输入图片上的真实几率分布和预测出来的几率分布差异很大,因此咱们要调整参数,来使得这两个分布更加接近。工具

      可是咱们怎么定义这个接近呢?也就是咱们如何去衡量y,y`的接近程度?编码

      在这里咱们介绍一下一种衡量方式交叉熵(Cross-Entropy),而后说明一下为何这种方式适用于分类问题。3d

2.熵(Entropy):

      熵的概念来自物理中的热力学,表示热力学系统中的无序程度,咱们说的熵是信息论中的熵,表示对不肯定性的测量,熵越高,能传输的信息越多,熵越少,传输的信息越少。举个例子说,当你站在一条公路旁边,看着车流来来每每,而后,你想告诉你的朋友每一个车型号,可是只有一个二进制的信道,仅仅能够传输0,1序列,而后这个通信至关的昂贵,十元1bit。你须要不少个二进制序列来表示每个车型号。那么你该怎么来编码这些车的型号呢?会使用相同长度的bit来表示丰田Camry和奥迪Q7么? 固然不会了,由于你知道丰田Camry比奥迪Q7广泛多了,因此你会用更少的bit来编码丰田。换成数学的角度来看,其实就是咱们把这个随便通过一个车,把这个车是丰田Camry仍是奥迪Q7当作随机事件,用随机变量X表示,因此咱们在作的就是用X的分布来减小咱们发送的bit的平均长度。blog

      也就是咱们如今有了观测到的几率分布y,y_i = P(X=x_i)。咱们要使用平均最小的bit,因此咱们应该为x_i 分配log(1/y_i) 个比特。对全部的x_i 咱们都有一个对应的最小须要分配的bit长度,那么咱们对这个log(1/y_i)求指望也就获得了X的熵的定义了:事件

3.交叉熵(Cross-Entropy):

      假如说咱们用这个分布来做为咱们来对事件编码的一个工具,熵就衡量了咱们用这个正确的分布y来对事件编码所能用的最小的bit 长度,咱们不能用更短的bit来编码这些事件或者符号了。图片

      相对的,交叉熵是咱们要对y这个分布去编码,可是咱们用了一些模型估计分布y`。这里的话经过y`这个分布咱们获得的关于x_i的最小编码长度就变成了log(1/y`_i),可是呢,咱们的指望还是关于真是分布y的。因此交叉熵的定义就变成了:开发

      交叉熵是大于等于熵的,由于咱们使用了错误的分布y`会带来更多的bit使用。当y和y`相等的时候,交叉熵就等于熵了。数学

4.KL 松散度(KL Divergence):

       KL松散度和交叉熵的区别比较小,KL松散度又叫作相对熵,从定义很好看出区别:

       这个意思就是说咱们要编码一个服从y分布的随机变量,假设咱们使用了一些数据估计出来这个随机变量的分布是y`,那么咱们须要用比真实的最小bit多多少来编码这个随机变量。这个值是大于等于0的,而且当,y和y`相等的时候才为0。注意这里对交叉熵求最小和对KL松散度求最小是同样的。也就是咱们要调整参数使得交叉熵和熵更接近,KL松散度越接近0,也就是y`越接近y。

5.预测:

       经过上面的描述和介绍,咱们应该很高兴使用交叉熵来比较两个分布y,y`之间的不一样,而后咱们能够用全部训练数据的交叉熵的和来做为咱们的损失,假如用n来表示咱们训练数据的数量,则损失loss为:

       来对这个函数求最小值咱们就能够求到最好的参数来使得y和y`最接近。

6.似然(Likelihood):

      咱们来看看另外一种关于两个分布之间差别的测量标准–似然,这种标准更加直接,似然越大说明两个分布越接近,在分类问题中,咱们会选择那些多数时候预测对了的模型。由于咱们老是假设全部的数据点都是独立同分布的,对于全部数据的似然就能够定义为全部单个数据点的似然的乘积:

      对于第n个数据他的似然怎么算呢?其实很简单,就是简单的y*y,来看一下咱们最初的那个例子y={苹果:1,梨子:0},y`={苹果:0.4,梨子:0.6},因此似然就等于:

      因此这里咱们是否是能够考虑一下使用极大似然估计法来求最优参数呢?也就是求似然函数的极大值点。咱们来对这个似然函数动一点点手脚。

      咱们知道对数函数使连续单调函数,咱们要求似然函数的极大值等同于咱们要求对数似然函数的极大值,而后咱们取一个负,就等同于求负对数似然函数的极小值:

      这样,咱们就能够把似然函数中的累积连乘变成累加了。并且咱们知道咱们的观测结果y中两个元素必有一个元素是1,另外一个元素是0.则对数似然函数为:

     而后咱们看看全部的数据的负对数似然:

     看着有没有一点眼熟?这就是咱们上面的全部数据的交叉熵:

7.总结:

      当咱们作一个分类模型的时候,咱们须要一种方法去衡量真实几率分布y和预测几率分布y`之间的差别,而后在训练过程当中调整参数来减少这个差别。在这篇文章中咱们能够看到交叉熵是一种不错的可行的选择,经过上面的这些等式能够看到,咱们求交叉熵的极小值也就等同于咱们求负对数似然的极小值。

相关文章
相关标签/搜索