交叉熵(Cross Entropy)

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

信息量

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

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

\[p(x) = Pr(X=x), x\in 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) \not = D_{KL}(q||p)\),即KL散度也不是一种度量方式;
  • \(D_{KL}(p||q) \ge 0\)

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

交叉熵(Cross Entropy)

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

\[\begin{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:

posted @ 2021-04-25 10:50  chenzhen0530  阅读(3493)  评论(0编辑  收藏  举报