[ML] 交叉熵

1. 交叉熵定义

交叉熵(Cross Entropy)是Shannon信息论中一个重要概念,主要用于度量两个概率分布间的差异性信息。语言模型的性能通常用交叉熵和复杂度(perplexity)来衡量。交叉熵的意义是用该模型对文本识别的难度,或者从压缩的角度来看,每个词平均要用几个位来编码。复杂度的意义是用该模型表示这一文本平均的分支数,其倒数可视为每个词的平均概率。平滑是指对没观察到的N元组合赋予一个概率值,以保证词序列总能通过语言模型得到一个概率值。通常使用的平滑技术有图灵估计、删除插值平滑、Katz平滑和Kneser-Ney平滑。

2. 关于交叉熵在loss函数中使用的理解

交叉熵(cross entropy)是深度学习中常用的一个概念,一般用来求目标与预测值之间的差距。

交叉熵是信息论中的一个概念,要想了解交叉熵的本质,需要先从最基本的概念讲起。
(1)信息量
所以当越不可能的事件发生了,我们获取到的信息量就越大。越可能发生的事件发生了,我们获取到的信息量就越小。那么信息量应该和事件发生的概率有关。
假设X是一个离散型随机变量,其取值集合为χ,概率分布函数p(x)=Pr(X=x),x∈χ,则定义事件X=x0X=x0的信息量为:
I(x0)=−log(p(x0))

(2)熵
对于某个事件,有n种可能性,每一种可能性都有一个概率p(xi)
这样就可以计算出某一种可能性的信息量。
我们现在有了信息量的定义,而熵用来表示所有信息量的期望,即:
H(X)=−∑p(xi)log(p(xi))

(3)相对熵(KL散度)
相对熵又称KL散度,如果我们对于同一个随机变量 x 有两个单独的概率分布 P(x) 和 Q(x),我们可以使用 KL 散度(Kullback-Leibler (KL) divergence)来衡量这两个分布的差异。即如果用P来描述目标问题,而不是用Q来描述目标问题,得到的信息增量。
在机器学习中,P往往用来表示样本的真实分布,比如[1,0,0]表示当前样本属于第一类。Q用来表示模型所预测的分布,比如[0.7,0.2,0.1]

KL散度的计算公式:
DKL(p||q)=∑p(xi)log(p(xi))q(xi)
n为事件的所有可能性。
DKL的值越小,表示q分布和p分布越接近。

(4)交叉熵
对上式变形可以得到:
DKL(p||q)=∑p(xi)log(p(xi))−∑p(xi)log(q(xi))−H(p(x))+[−∑p(xi)log(q(xi))]
等式的前一部分恰巧就是p的熵,等式的后一部分,就是交叉熵:
H(p,q)=−∑p(xi)log(q(xi))

在机器学习中,我们需要评估label和predicts之间的差距,使用KL散度刚刚好,即DKL(y||y^),由于KL散度中的前一部分−H(y)不变,故在优化过程中,只需要关注交叉熵就可以了。所以一般在机器学习中直接用用交叉熵做loss,评估模型。

交叉熵用来衡量在给定的真实分布下,使用非真实分布所指定的策略消除系统的不确定性所需要付出成本的大小。交叉的字面意思在于:真实分布与非真实分布的交叉。

3. 为什么使用交叉熵作为损失函数?

在逻辑回归问题中,常常使用MSE(Mean Squared Error)作为loss函数,比如:
loss=1/2m∑(yi−yi^)2
这里的m表示m个样本的,loss为m个样本的loss均值。
MSE在逻辑回归问题中比较好用,那么在分类问题中还是如此么?

你可能感兴趣的:([ML] 交叉熵)