交叉熵概念
交叉熵是信息论中的概念,主要用于度量两个概率分布间的差异性,要理解交叉熵,需要先了解下面几个概念。
信息量
信息奠基人香农(Shannon)认为“信息是用来消除随机不确定性的东西”,也就是说衡量信息量的大小就是看这个信息消除不确定性的程度。
“我中午吃饭了”,这条信息并没有减少不确定性,因为中午基本都吃饭,信息量接近为0。
”2022年中国队成功进入世界杯“,从直觉上来看,这句话具有很大的信息量。因为中国队进入世界杯的不确定性因素很大,而这句话消除了进入世界杯的不确定性,所以按照定义,这句话的信息量很大。
根据上述可总结如下:信息量的大小与信息发生的概率成反比。概率越大,信息量越小。概率越小,信息量越大。
设某一事件发生的概率为P(x),其信息量表示为:
其中I ( x )表示信息量,这里log 表示以e为底的自然对数。
信息熵
信息熵也被称为熵,用来表示所有信息量的期望。
期望是试验中每次可能结果的概率乘以其结果的总和。
所以信息量的熵可表示为:
使用足球比赛胜负概率来计算其信息熵:
序号 | 事件 | 概率P | 信息量 |
---|---|---|---|
1 | 比赛胜利 | 0.5 | − log ( 0.5 ) -\log \left ( 0.5 \right )−log(0.5) |
2 | 比赛失利 | 0.2 | − log ( 0.2 ) -\log \left ( 0.2 \right )−log(0.2) |
3 | 平局 | 0.3 | − log ( 0.3 ) -\log \left ( 0.3 \right )−log(0.3) |
对于0-1分布的问题(是0或者是1的二分类问题),由于其结果只用两种情况,例如是男人还是女人,设该事情发生的概率为P ( x ) ,则另一件事情发生的概率为1 − P ( x ),所以对于0-1分布的问题,计算熵的公式可以简化如下:
相对熵(KL散度)
如果对于同一个随机变量X 有两个单独的概率分布P ( x )和Q ( x ) ,则我们可以使用KL散度来衡量这两个概率分布之间的差异。
公式如下:
例子,P( x )来表示样本的真实分布,Q( x ) 来表示预测分布,比如在一个三分类任务中(例如,汽车的分类为:轿车、SUV和卡车分类器),x 1 , x 2 , x 3 分别代表轿车,SUV,卡车,例如一张汽车的图片真实分布P ( X ) = [ 1 , 0 , 0 ], 预测分布Q ( X ) = [ 0.7 , 0.2 , 0.1 ] ,计算KL散度:
KL散度越小,P ( x ) 与Q ( x ) 的分布更加接近。
交叉熵
首先将KL散度公式拆开:
前者H ( p ( x ) )表示信息熵,KL散度= 交叉熵 - 信息熵。
交叉熵公式表示为:
在机器学习中,信息熵在这里就是一个常量。由于KL散度表示真实概率分布与预测概率分布的差异,越小表示预测的结果越好,所以最小化KL散度的值;交叉熵等于KL散度加信息熵(常量),相比KL散度更加容易计算,所以一般在机器学习中直接用交叉熵做loss。
交叉熵在单分类问题中的应用
在线性回归问题中,常常使用MSE(Mean Squared Error)作为loss函数,而在分类问题中常常使用交叉熵作为loss函数。
下面通过一个例子来说明如何计算交叉熵损失值。
假设我们输入一张汽车的图片,标签与预测值如下:
* | 轿车 | SUV | 卡车 |
---|---|---|---|
Label | 0 | 1 | 0 |
Pred | 0.2 | 0.7 | 0.1 |
则:
所以,一个batch的loss为
m为当前batch的样本数,n为类别数。
总结:
交叉熵表示为真实概率分布与预测概率分布之间的差异,并且交叉熵的值越小,说明模型越策结果越好。其通常与softmax搭配进行分类任务的损失计算。