理解Cross entropy

搬运自friendly-intro-to-cross-entropy-loss

概述

......

本文当中我们关注那些相互之间的分类互相排斥的情况。比如说,我们对一副图片当中是否有陆上景观,或者马或者其他的什么东西感兴趣,那么我们的模型就会把图片当做输出,然后输出三个数字,其中每个数字表征对应类别的概率。

在训练过程中,假设我们放了一个景观图,我们希望我们的概率输出能够接近于 。如果我们的模型预测了三个不同的分布,然后输出,比如说,那么我们就想怎么继续训练网络的参数,使其尽量接近准确输出

但是“接近”要如何评判,我们怎么评判之间的不同呢?

交叉熵 Cross entropy

假如说你在高峰时段站在魔都的高速公路上,你想你看到的每个车的种类高速你在高速公路另一头的室友。你必须通过发送二进制码的方式,但是你不能乱发,因为每发一个就要花费10元人民币。

我们假设道路上有种车,如果你给每个车都标定一个比特,当然可以。但是似乎不够好。

考察一下civic和tesla两种车,因为马路上Civic的车辆远远多于Tesla,如果你被告知了更具体的分布信息,或者提前做了抽样调查,那么是不是能够节省一大笔通讯费。

我们假设Civic的数量是Tesla的128倍,那么我们在使用码元编码的时候就会这样做

学过通信原理你就会明白其实这里就是信息量的定义,全部来自香农的理论。

那么信息熵就可以写成

这里也许你能看出了什么,交叉熵与信息熵本身其实也就是 之间的区别。也就是说我们使用错误工具与正确工具结合,计算出的不小于准确情况下的平均码元数目。

所以交叉熵表述为

KL divergence是交叉熵与信息熵的插值,也就是我们比完全准确情况下多了几个码元。那么我们似乎在最上文找到了答案,如果说要满足最小的关系的话,那么我们只要考察KL divergence最小就可以了。

......

预测能力

在我们以上的讨论之后,也许我们能够很兴奋的使用交叉熵来估计两个分布之间的差异,并且使用基于总的训练样本之上的交叉熵作为我们的损失函数(loss)。特别的,如果我们用来索引训练例子,那么总的loss就可以写成,

让我们再来看看另一种方法:如果我们使用一个函数来直接测量模型的预测能力会怎么样。

比较常用的方法是调节参数使得我们的模型得到的数据结果的似然性最优。......如果我们假设我们的样本是独立同分布的,那么我们例子当中的最大似然估计可以写成单个例子似然估计的乘积形式

那么第n个例子的似然函数怎么表示呢?它是对应于样本特定的样本的熵

比方说,我们有一个分布,那么似然函数就是我们所得到的模型估计的第一个熵值(比如说,,在其中,请注意虽然这里看起来像是第一个值而已,但是事实上并不是,要注意这里等于0.4,是因为对应的的值是1而已,似然函数对应于e为低的指数函数,见后文)

如果能最大化似然函数的话,那么我们就能找到合适的参数,使得我们的模型的预测能力最强,事实上最大化似然函数也就是最小化,最小化似然函数倒数的对数值,即

那么

也就是说

猜你喜欢

转载自blog.csdn.net/Obitoo/article/details/80060406