交叉熵

在讨论什么是交叉熵之前,我们先来看看什么是信息熵。

【1】信息熵

信息是个很泛化的概念,很难去明确度量某个事件含有的信息是大还是小。比如本草纲目这本书中包含的信息量我们知道很大,但具体有多大?和少年维特之烦恼相比呢?为了解决信息的度量问题,香农借用物理学中用以表示分子状态混乱程度的“熵”概念来描述一段消息中包含信息的平均量,又被称为信息熵

在物理学中熵是用来度量热力学系统的无序程度,但是在信息论中,一个消息的熵越大,代表其携带的信息越大。比如英文文本数据流的熵就非常低,因此英文很容易被预测。英文熵低容易被预测的原因是因为英文字母中很多词汇的组合总比其他组合更常见,比如字母$e$总是比字母$z$多,或者$qu$字母组合的可能性总是超过$q$与任何其它字母的组合。因此即使我们不知道具体的内容,随便猜测为字母$e$有很大概率能猜中,很容易被预测因此英文文本的熵相对较低。

信息熵的计算例子——抛硬币

假设完美的硬币只有两面,正面和反面概率分别为$p=\frac{1}{2}$和$q=\frac{1}{2}$,对于每次抛硬币的结果,我们是不可预测的,熵一定存在,熵的具体大小为

需要一个比特的编码长度,因此熵实际是对随机变量的比特量和顺次发生概率相乘再总和的数学期望,即整个系统的平均消息量

【2】交叉熵

在信息理论中,在两个概率分布$P$和$Q$的交叉熵代表的含义是:对于同一个数据集合,从中分辨出相对应事件的平均编码长度。交叉熵的定义如下:

离散分布:

连续分布:

其中,$H(P)$是$P$分布的熵,$D_{KL}(P||Q)$是$P$ 到$Q$的KL散度(也可以表述为$P$相对于$Q$的相对熵),KL散度是用来度量使用分布$Q$的编码来编码来自分布$P$的样本平均所需的额外的比特数。通常$P$表示数据的真实分布,$Q$表示数据的预测分布。

【3】KL散度

连续分布:

离散分布:

【4】逻辑回归交叉熵损失函数

首先,明确一点,交叉熵是定义在分布上的,而不是定义单个样本或者事件上。对于离散分布$p$和$q$来说,交叉熵的公式为:

当交叉熵损失与“硬”分类标签(如0/1标签)一起使用时,实际上我们把$p$当做该标签上的条件经验分布,这个分布的特点是对于观测到的标签概率为1,而对于其他未观测的类别概率是0,$q$是我们的分类器学习到的条件分布(给定输入$x$向量,输出条件概率$q$,如下所示,其中$ I\{⋅\}$是示性函数,当条件为真时为1,否则为0(参考文献):

因此,我们可以根据该公式进行推导:假设我们有$m$组已知的训练样本,$(x^{(i)}, y^{(i)})$表示第$i$组训练样本,其中$x^{(i)}=(1,x_{1}^{(i)},x_{2}^{(i)},…,x_{p}^{(i)})$是一个$p+1$的特征向量,$y^{(i)}$是该样本对应的标记,模型的参数为$\theta=(1,\theta_{1},\theta_{2},…,\theta_{p})^T$,因此:

假设函数定义为:

对于0/1分类的logistic问题:

根据上述“硬”分类标签的交叉熵表达形式,并且对其取log函数,以简化运算并保持单调不变性,对于单个样本的交叉熵为:

可得整个样本训练集熵的交叉熵表达式为:

对于上述式子,我们希望其值越小越好,熵越小表示我们预测的分布$q$与原始分布更接近。

【5】logistic回归参数更新式的求导

上述的逻辑回归交叉熵损失函数的推导限定了预测函数的表达式必须是线性函数$\theta^{T}x^{(i)}$,让我们首先忽略明确的预测函数的具体表达形式,泛化的将其表示:

采用logistic函数包裹后完整的预测函数为:

取对数:

从而损失函数为:

这就是logitic框架下对数交叉熵损失函数的一般通用形式,对于不同的模型$f(x)$直接带入即可,下面我们对其求导,以求得参数的更新式:

由上式子可见,逻辑回归的交叉熵损失函数得到的最后更新式,只需将$f_{\theta}{x^{(i)}}$对每个参数$\theta_j$进行求导即可。$f$函数可以选择最简单的线性函数,也可以选择考虑特征交叉的因子分解机模型FM,还可以是神经网络等等。

参考文献:

[1]http://blog.csdn.net/jasonzzj/article/details/52017438

[2]http://blog.csdn.net/u014313009/article/details/51045303

[3]http://blog.csdn.net/u014313009/article/details/51043064