机器学习-交叉熵与损失函数

一、信息是什么?

信息很抽象,看不见摸不着,却似乎又无处不在,一封邮件、一首歌、一则新闻、一本书、一张地图、一句话......

但信息究竟是什么?

朗文双解词典:

Information: Facts or details that tell you something about a situation, person, event, etc.

知乎大神:

1、从“你不知道”的状态变成“你知道”的状态,这个过程中传送的“东西”,就叫信息。

2、信息是发送者和解读者的相关knowledge base之间的diff。

3、让你搞清状况的东西。

但所有的以上答案,都可以用信息论之父香农的定义来概括:

信息是用来消除不确定的东西。

比如:

路标指示信息,可以消除岔路口方向的不确定性,帮助你选择正确的道路。

机器学习-交叉熵与损失函数

一封家书,可以告知你家里的情况,消除你对一些不确定状况的顾虑,让你安心的学习、工作。

机器学习-交叉熵与损失函数

天气预报可以帮你确定未来的天气,帮助你更好的决定下一步的安排。

机器学习-交叉熵与损失函数

二、信息的传递

信息传递的方式有很多中,比较古老的像周幽王烽火戏诸侯。那个时候,技术手段比较落后,而军情又十万火急,于是就想到了用烽火来进行传递。但由于烽火只有点燃和未点燃两种状态,所以能表达的内容十分有限。

机器学习-交叉熵与损失函数

后来有了电报,情况好很多。但由于发送接受需要编译码,操作复杂,效率比较低,也只能传输少量的信息。并且价格昂贵,通常是按字数收费。

机器学习-交叉熵与损失函数

所以电报的内容通常都很精炼。比如,你要发送:

“家里又急事儿,赶快回来一趟。”

为了省钱,结果可能就会变为:

“事急,速回。”

但有些情况,通过精简文字是行不通的。比如,你要发送一段诗:

“轻轻的我走了,

正如我轻轻的来;

我轻轻的招手,

作别西天的云彩。”

少一个字,诗的意境就会大打折扣。

但从诗的内容上来看,确实有很多重复的字,难道除了减字儿就没有其它辙了吗?

当然不是。

我们知道,电报是通过电报码来发送的,就是一个个的0和1的状态。分析一下,这段诗中我们一共用到了16个汉字。如果用二进制对其进行编码,需要:

机器学习-交叉熵与损失函数


个bit位。编码如下:

机器学习-交叉熵与损失函数

全诗一共有26个字,这样我们就需要发送:

26×4 = 104

个bit位。

如果我们换一种编码方式,用少的位表示出现概率大的字,多的位表示出现概率低的字,也就是哈夫曼编码,看看结果如何。

首先统计诗中文字出现的概率:

机器学习-交叉熵与损失函数

然后构造哈夫曼树如下:

机器学习-交叉熵与损失函数

编码结果:

机器学习-交叉熵与损失函数

这样,我们需要发送的bit数就变为:

6×2+4×3+3×3+1×5×10+1×4×3 = 95

比先前的编码少9个bit。同样达到了精简内容的目的。

再后来有了电话、手机、互联网,这种限制越来越小。现在我们可以通过互联网很轻松的传递以T计的内容,在线观看高清电影。

机器学习-交叉熵与损失函数

三、信息如何衡量?

在电报的发送中我们已经看到,找出一种衡量信息多少的方式非常重要。就像时间有秒,质量有克,距离有米等。那信息呢?既然信息是用来消除不确定的东西,如何衡量它的大小?也就是说如何知道在消除一个不确定事件的时候需要多少信息?

比如,要想知道明天太阳是否会照常升起,需要多少信息?

按以往的经验,太阳照常升起的概率几乎是1,所以几乎不需要猜测就能知道结果。

但如果是掷一枚硬币,想知道它是不是正面,需要多少信息?

硬币的结果只有两种,非正即反,概率都是1/2。所以只需要一次猜测就能知道结果。

假设实际结果为正面。

如果猜正面,结果正确,结束。如果猜反面,被告知结果错误,同样可以推测出来正确结果是正面。

所以只需猜测一次。

再比如,一道选择题有A、B、C、D四个选项,要猜出正确结果,又需要多少信息呢?

四个选项概率相等,都是1/4,假设正确答案为C。

我们先将选项分成两组:

第一组:A、B

第二组:C、D

第一次猜测:如果猜第一组,被告知错误,那么就知道答案在第二组。如果猜第二组,正确。

第二次猜测:如果猜C,得出结果,猜测结束。如果猜D,被告知错误,于是得出C为正确答案。

可以看出,需要猜测两次。

由以上例子可以看出,事件发生的概率越小,不确定性越大,消除不确定性需要的信息量就越大。所以信息量和概率有关系,并且是反相关。

回过头来看上面的例子,

太阳照常升起的概率为1:

机器学习-交叉熵与损失函数

硬币为正面的概率为​:

机器学习-交叉熵与损失函数

答案为C的概率为​:

机器学习-交叉熵与损失函数

将上面三个等式两边以2为底取对数,并添加负号,有:

机器学习-交叉熵与损失函数

0、1、2正好对应我们获取正确答案的猜测次数。也就是消除不确定性需要的信息量。

进一步推广出去,香农把:

机器学习-交叉熵与损失函数

定义为信息量。对数的底为2只是其中的一种情况,此时信息量的单位为bit。

有了这个式子,就可以量化信息了。

四、什么是信息熵?

有了信息量为什么还要信息熵呢?信息熵又是个啥?

假设你是一个经验丰富的工程师,在维修一台电子设备,引发设备故障的原因有A、B、C、D四种。

如果四种原因的概率相同,都是1/4,根据之前信息量的计算公式,很容易就能算出来:

机器学习-交叉熵与损失函数

最多两次能排查出故障原因。

但如果引发故障原因的概率不等呢?比如,A的概率为1/2,B的概率是1/4,C、D的概率是1/8。

直觉告诉我们应该先排查A,然后是B,最后才是C、D。需要排查的次数是四种原因信息量的期望,为:

机器学习-交叉熵与损失函数

小于2。

等概率情况信息量的期望为:

机器学习-交叉熵与损失函数

等于单个选项的信息量。

所以,有些情况,仅有信息量是不够的。还需要知道信息量的期望,这就是信息熵。

信息熵:平均信息量,信息量的期望。

五、什么是相对熵?

如何衡量两个随机变量概率分布的相似程度?

我们已经有了信息熵的概念,就是信息量的期望,也叫平均信息量。那能不能简单的就用信息熵来衡量呢?

显然不能。

比如,两个随机变量x和y的概率分布如下:

机器学习-交叉熵与损失函数

二者的信息熵:

机器学习-交叉熵与损失函数

是相等的,

机器学习-交叉熵与损失函数

但概率分布明显差异很大。所以,简单的用信息熵来衡量概率分布的相似程度是行不通的。

但是不是意味着信息熵就不能用了呢?

不是,只不过要变一变。

选用一个固定的概率分布来求信息熵:

机器学习-交叉熵与损失函数

或者

机器学习-交叉熵与损失函数

于是,便有:

机器学习-交叉熵与损失函数

或者:

机器学习-交叉熵与损失函数

这样用来衡量概率分布的差异就没问题了。而:

机器学习-交叉熵与损失函数

就称为p对q的相对熵。

总结起来:

相对熵就是:描述两个概率分布P和Q差异的一种方法。

六、损失函数与交叉熵

机器学习中,实际分布为p,预测分布为q。训练的过程就是调整参数使q不断逼近p的过程。调整的依据就是q与p的差。

如何衡量这个差呢?

就可以用相对熵:

机器学习-交叉熵与损失函数

但由于实际分布的熵:

机器学习-交叉熵与损失函数

固定不变。

所以可以省略简化,只优化:

机器学习-交叉熵与损失函数

部分就可以了。

​H(p||q)又被称为交叉熵。交叉熵主要度量两个概率分布间的差异性信息。

(注:本文部分图片来自于网络,如有侵权请联系作者删除。)


分享到:


相關文章: