理解交叉熵损失函数

什么是熵

熵是对一个随机变量的不确定性的“数学性度量”,就像我们使用kg来表示物体的重量、用m来表示物体的长度等方式一样的数学度量。信息就是减少这种不确定的事物,如帮助调整概率、排除干扰或者确定具体属于哪一类。熵和信息数量相等,意义相反,获取信息意味着消除这种不确定性。

概率是表示随机变量是某个可能情况的确定性,而熵是随机变量属于某种可能情况的不确定性。

信息熵

信息熵代表的是随机变量或整个系统的不确定性,熵越大,随机变量或系统的不确定性就越大。根据真实分布,我们能够找到一个最优策略,以最小的代价消除系统的不确定性,而这个代价大小就是信息熵。信息熵衡量了系统的不确定性,而我们要消除这个不确定性,所要付出的【最小努力】(比如猜题次数、编码长度等)的大小就是信息熵。

信息熵计算公式怎么来的

我们测量物体时,其实是有一个参照物。比如说测量物体的重量是2kg,这个2kg其实参照国际通用的1kg的参照来计算的。如果国际通用的1kg其实是目前的2kg的重量,那这个物体标出来的重量就是1kg了是不是?

同样的,信息消除的是不确定性,就用另一个事件的不确定性作为参照来计算。我们选择的参照事件是抛硬币这样的只有两种等概率可能的不确定事件时,测量使用的信息量的单位就是bit,比如抛掷3枚硬币产生的可能情况是8种,是指数关系,因此当知道可能情况为m,想要知道是有多少个参照产生的时,使用对数运算\log_{2} m来计算,这样8种可能情况就相当于3个硬币抛出的结果,就是3bit,但是这里有个前提就是所有可能情况都是等概率事件,因为参照事件是有两种可能性的等概率事件。

如果几种可能情况是非等概率事件怎么办呢?那就是分别测量几种可能情况的信息量后分别乘上他们的概率再相加。但是怎么分别计算可能情况的信息量呢?实际情况下可能不是像这种抛硬币的事件,但是我们知道1%的概率相当于100个等概率情况下确定一个情况的概率,所以用1/1%就获得了等概率事件的可能情况100.于是,如果事件x发生的概率是p,那等概率事件的可能性数量就是1/p,所以可以用\log_{2}\frac{1}{p}来计算每种情况的信息量,然后分别乘以各自的概率再相加就得到了信息熵(信息量的期望)\sum p*\log_{2} \frac{1}{p}    。

什么是交叉熵

交叉熵,其用来衡量在给定的真实分布下,使用非真实分布所指定的策略消除系统的不确定性所需要付出的努力的大小,也就是两个概率分布之间的距离.给定两个概率分布p和q,通过q来表示p的交叉熵就是通过概率分布q来表达概率分布p的困难程度,p代表正确答案,q代表的是预测值,交叉熵越小,两个概率的分布约接近。

H(p,q)=\sum p*\log_{2} \frac{1}{q}    

交叉熵计算公式怎么来的

我们可以用"相对熵"(或称KL散度)来衡量两个分布的距离。在机器学习中,P往往用来表示样本的真实分布, Q是我们训练模型得到的分布。当 P的分布与 Q相同时,它们的距离为 0。

\tiny \dpi{200} \tiny D{_{KL}}(p,q)=\sum p*\log_{2}\frac{p}{q}=\sum p*\log_{2}p- \sum p*\log_{2}q=-H(P)- \sum p*\log_{2}q

机器学习中结果左边是由样本真是分布获得的,右边就是交叉熵。

 

另外,在神经网络中怎样把前向传播得到的结果也变成概率分布呢?Softmax回归就是一个非常有用的方法。(所以面试官会经常问你,为什么交叉熵经常要个softmax一起使用?)

假设原始的神经网络的输出为\tiny y_{1},y_{2},...y_{n},那么经过Softmax回归处理之后的输出为: \tiny softmax(y)_{i}=\frac{e^{y_{j}}} {\sum_{n}^{j=1}e^{y_{j}}},这样就把神经网络的输出也变成了一个概率分布,从而可以通过交叉熵来计算预测的概率分布和真实答案的概率分布之间的距离了。

使用交叉熵作为损失函数

以上讲了一下交叉熵的由来,下面讲一下什么是交叉熵损失函数。

先来看一下什么是损失函数:

损失函数:损失函数就是对一个具体的样本而言,模型预测的值与真实值之间的差距。
对于一个样本(xi,yi)其中yi为真实值,而f(xi)为我们的预测值。使用损失函数L(f(xi),yi)来表示真实值和预测值之间的差距。两者差距越小越好,最理想的情况是预测值刚好等于真实值,差距为0。

categorical_crossentropy(交叉熵损失函数)

由以上描述可知,交叉熵是用来评估两个样本分布之间的距离,我们可以使用交叉熵来评估当前训练得到的概率分布与真实分布的差异情况,也就是使用交叉熵损失函数刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两个概率分布就越接近。

 

 参考博客文章如下:

1、信息熵是什么

2、经典交叉熵损失函数

3、交叉熵损失介绍

4、交叉熵的推导

感谢以上博主

你可能感兴趣的:(人脸识别,机器学习,交叉熵,交叉熵误差)