交叉熵(Cross Entropy)

本文介绍交叉熵的概念,涉及到信息量、熵、相对熵、交叉熵;

信息量

信息量是用来衡量一个事件发生的不确定性,一个事件发生的概率越大,不确定性越小,则信息携带的信息量则越小;

假设(X)是一个离散随机变量,其取值为集合(X=x_0, x_1, cdots,x_n),其概率分布函数为:

[p(x) = Pr(X=x), xin X ]

则定义事件(X=x_0)的信息量为:

[I(x_0) = -log(p(x_0)) ]

(p(x_0) = 1)时,该事件必定发生,其信息量就为0;

下面详细说明为什么选择(log)用于计算信息量:
单调递减:

首先,事件的概率越大,不确定性越小,则携带的信息量越小;所以是一个单调递减的函数;

随机变量独立性:

假设(x_1, x_2)是两个独立的随机变量,则其联合概率有:

[p(x_1, x_2) = p(x_1) cdot p(x_2) ]

那么,对于两个独立的事件(X=x_1)(X=x_2),其联合后的信息量就有:

[I(x_1, x_2) = I(x_1) + I(x_2) ]

因此,考虑随机变量的独立性,概率的乘法能转换到信息量的加法,可以使用(log)方法,同时为了满足单调递减的性质,再取负;

就有了:

[I(x) = -log(p(x)) ]

其中(p(x))的取值为([0, 1])

如下图所示,横轴表示事件发生的概率,纵轴表示其携带的信息量;

熵是用来衡量一个系统的混乱程度,代表系统中信息量的总和;

熵值越大,则表明这个系统越不稳定;

信息量是衡量一个事件的不确定性,而熵是衡量一个系统(所有事件)的不确定性;

熵的计算公式如下:

[H(x) = -sum_{i=1}^{n}p(x_i) log(p(x_1)) ]

其中,(p(x_i))表示事件(X=x_i)发生的概率,(-log(p(x_i)))表示事件(X=x_i)的信息量;

可以看出,熵是信息量的期望值,是一个随机变量不确定性的度量;

熵值越大,随机变量的取值就越难确定,系统就越不稳定;

熵值越低,随机变量的取值就越容易确定,系统就越稳定;

相对熵(Relative Entropy)

相对熵也称为KL散度(Kullback-Leibler divergence),表示同一个随机变量的两个不同分布间的距离;

假设,(p(x), q(x))分别是 离散随机变量(X)的两个概率分布,则(p)(q)的相对熵是:

[D_{KL}(p||q) = sum_i p(x_i) log(dfrac{p(x_i)}{q(x_i)}) ]

具有以下性质:

  • 如果(p(x))(q(x))的分布相同,则相对熵为0;
  • 相对熵不具有对称性,即(D_{KL}(p||q) ot = D_{KL}(q||p)),即KL散度也不是一种度量方式;
  • (D_{KL}(p||q) ge 0)

总的来说,相对熵是用来衡量同一个随机变量的两个不同分布之间的距离;在实际应用中,(p(x))表示目标分布,(q(x))表示预测得到的分布,任务的目标就是让两个分布尽可能的相似,这就需要最小化KL散度;

交叉熵(Cross Entropy)

对相对熵的计算公式做一步拆分:

[egin{align} D_{KL}(p||q) & = sum_i p(x_i) log(dfrac{p(x_i)}{q(x_i)}) \ & = sum_i p(x_i)log p(x_i) - sum_i p(x_i) log q(x_i) \ end{align} ]

在机器学习中,假设(p)是目标分布,则分布(p)的熵就是一个固定的值,其计算方式就是上式的第一项;

那么,上式的第二项,即

[H(p, q) = - sum_i p(x_i) log q(x_i) ]

称为交叉熵;

(p(x))是目标分布,我们的目标就是让训练得到的分布(q(x))尽可能地接近(p(x)),这时候就可以最小化(D_{KL}(p||q)),等价于最小化交叉熵(H(p, q))

因此,交叉熵衡量的是两个部分之间的差异,所以在用于分类任务的深度卷积神经网络中,常在最后一层中加上Softmax层;

Reference:

原文地址:https://www.cnblogs.com/chenzhen0530/p/14699463.html