信息量,信息熵

  首先给出定义,信息量是对信息的度量。当我们观察到一个事件或者说一个变量的一个具体值后,我们接受到了多少的信息,这个程度用信息量来衡量。
  那信息量和什么有关呢,一般的想法是和事件的概率挂钩,一个事件发生的概率越小那么这个事件发生所产生的信息量越大。因此一个具体事件的信息量应该是随着其发生概率而递减的,且不能为负。此外,如果我们有俩个不相关的事件 x 和 y,那么我们观察到的俩个事件同时发生时获得的信息应 该等于观察到的事件各自发生时获得的信息之和,即:

  由于 x,y 是俩个不相关的事件,那么满足,

  由上可以看出来,h(x)和p(x)的对数有关,可以设成对数形式,且信息量要大于等于0,因此有信息量的定义

  信息量度量的是一个具体事件发生了所带来的信息,而熵则是在结果出来之前对可能产生的信息量的期望——考虑该随机变量的所有可能取值,即所有可能发生事件所带来的信息量的期望。如果一个系统的熵值越大,这个系统越不稳定,随机变量的取值越随机。公式即

相对熵

  相对熵也称为KL散度(Kullback-Leibler divergence),表示同一个随机变量的两个不同分布间的距离,如果两个分布完全相同,那么相对熵为0。设p(x),q(x)分别是离散随机变量X的两个概率分布,则p对q的相对熵是:

  此外相对熵有自己的性质,相对熵不具有对称性,并且大于等于0。在实际运用中,我们常常用p(x)代表真实的分布,q(x)代表预测得来的分布,如果要让这两个分布尽可能相同,就需要最小化KL散度。

交叉熵

  交叉熵定义中仍然有两种分布,一个是真实分布p(x),一个是预测的分布q(x),交叉熵表示用预测的分布去代替真实分布去计算信息量再在真实分布上计算期望。公式即:

  它和相对熵有联系,因为在真实情况下,p(x)是确定的,因此H(p)是一个定值,

  所以交叉熵越小,相对熵也越小。如果我们要想两个分布尽可能相似,可以去优化交叉熵,使其尽可能小。

交叉熵损失函数

  在多分类中,加入有N个类,对于一个样本,它属于哪一类是确定的,也就是p(x)是已知的。它是个one-hot向量,只有一个值为1,其他全为0。我们的q(x)是通过训练的来,对于每个类都学得一个概率,可以通过softmax使得所有类的概率和为1。因此计算p,q的交叉熵H(p,q)的公式可以化简为一个项。即,

  上述式子也可以称为负对数似然损失——nll loss
  torch.nn.LogSoftmax可以认为是先计算正确类别的$log{q(i)}$
问题解决:transformer训练中,nll losslabel smoothed crossentropy loss来的小,正常情况下,一个样本的类分布是一个one-hot向量,只有一个值为1,其他全为0,在这种情况下,两者计算得到的损失是一样的,但是因为加了label smoothed操作导致这个类分布向量不只有一个值,所以crossentropy loss中包括的正项更多了,因此就更大了。