交叉熵、相对熵(KL散度)
信息量
任何事件都会承载着一定的信息量,包括已经发生的事件和未发生的事件,只是它们承载的信息量会有所不同。如昨天下雨这个已知事件,因为已经发生,既定事实,那么它的信息量就为0。如明天会下雨这个事件,因为未有发生,那么这个事件的信息量就大。
已知某个事件的信息量是与它发生的概率有关,可以通过如下公式计算信息量:
假设$X$是一个离散型随机变量,其取值集合为$\chi$,概率分布函数$ p ( x ) = Pr(X = x) , x \in \chi $,则定义事件$X=x_0$的信息量为:
熵
当一个事件发生的概率为$p(x)$,那么它的信息量是$-log(p(x))$。
把这个事件的所有可能性罗列出来,就可以求得该事件信息量的期望,信息量的期望就是熵,所以熵的公式为:
假设事件X共有n种可能,发生$x_i$的概率为$p(x_i)$,那么该事件的熵$H(X)$为:
然而有一类比较特殊的问题,比如投掷硬币只有两种可能,字朝上或花朝上。买彩票只有两种可能,中奖或不中奖。我们称之为0-1分布问题(二项分布的特例),对于这类问题,熵的计算方法可以简化为如下算式:
相对熵(KL散度)
相对熵又称KL散度,如果我们对于同一个随机变量 x 有两个单独的概率分布 P(x) 和 Q(x),我们可以使用 KL散度(Kullback-Leibler (KL) divergence)来衡量这两个分布的差异。
在机器学习中,P往往用来表示样本的真实分布,Q用来表示模型所预测的分布,那么KL散度就可以计算两个分布的差异,也就是Loss损失值。
从KL散度公式中可以看到Q的分布越接近P(Q分布越拟合P),那么散度值越小,即损失值越小。
- 不是一个对称量,即$KL(p||q) \neq KL(q||p)$。
- KL散度大于等于0。KL 散度看做两个分布 p(x) 和 q(x)之间不相似程度的度量。
- 最小化 Kullback-Leibler 散度等价于最大化似然函数。
交叉熵
将KL散度公式进行变形:
等式的前一部分就是p的熵,等式后一部分就是交叉熵:
- 在机器学习中,我们需要评估label和predicts之间的差距,使用KL散度刚刚好,即$D_{KL(y||\widetilde{y})}$。
- 由于KL散度中的前一部分熵−H(y)不变,故在优化过程中,只需要关注交叉熵就可以了。所以一般在机器学习中直接用交叉熵做loss,评估模型。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 养猫的少年~!