从GCN中学习的信息熵

之前在GCN中碰到的交叉熵损失函数是分类问题中经常使用的一种损失函数,对于其内部原理感觉没有完全懂,今天来深入理解一下。
从GCN中学习的信息熵

交叉熵简介

交叉熵 :信息论中的一个重要概念,主要用于度量两个概率分布间的差异性
信息是用来消除随机不确定性的东西”,衡量信息量的大小就是看这个信息消除不确定性的程度。
“太阳东升西落”,这条信息并没有减少不确定性,因为太阳肯定是从东边升起西边落下,这是一句人人都知道的话,信息量为0。
”2018年中国队成功进入世界杯“,从直觉上来看,这句话具有很大的信息量。因为中国队进入世界杯的不确定性因素很大,而这句话消除了进入世界杯的不确定性,所以按照定义,这句话的信息量很大。
根据上述总结:信息量的大小与信息发生的概率成反比。概率越大,信息量越小。
设某一事件发生的概率为P(x),其信息量表示为:
从GCN中学习的信息熵
其中 I(x)表示信息量,这里 log 表示以e为底的自然对数。
信息熵
信息熵也被称为熵,用来表示所有信息量的期望。

期望是试验中每次可能结果的概率乘以其结果的总和。

所以信息量的熵可表示为:(这里的 X是一个离散型随机变量)
从GCN中学习的信息熵
对0-1分布的问题,其结果只用两种情况,是或不是,设某一件事情发生的概率为 P ( x ) ,则另一件事情发生的概率为 1 − P ( x ) ,所以对于0-1分布的问题,计算熵的公式可以简化如下:
从GCN中学习的信息熵
相对熵(KL散度)
如果对于同一个随机变量 X X有两个单独的概率分布 P ( x ) 和 Q ( x ) ,则我们可以使用KL散度来衡量这两个概率分布之间的差异。
机器学习中,常常使用 P ( x ) P\left(x\right) P(x)来表示样本的真实分布, Q ( x ) Q \left(x\right) Q(x)来表示模型所预测的分布,比如在一个三分类任务中(例如,猫狗马分类器), x 1 , x 2 , x 3 分别代表猫,狗,马,例如一张猫的图片真实分布 P ( X ) = [ 1 , 0 , 0 ]预测分布
Q ( X ) = [ 0.7 , 0.2 , 0.1 ]计算KL散度:
从GCN中学习的信息熵
KL散度越小,表示 P ( x ) 与 Q(x)的分布更加接近,可以通过反复训练 Q ( x ) 来使 Q ( x ) 的分布逼近 P ( x )

交叉熵
首先将KL散度公式拆开:
从GCN中学习的信息熵
前者 H ( p ( x ) )表示信息熵,后者即为交叉熵,KL散度 = 交叉熵 - 信息熵
交叉熵公式表示为:
从GCN中学习的信息熵
在机器学习训练网络时,输入数据与标签常常已经确定,说明真实概率分布 P ( x )已经确定,即信息熵是一个常量。由于KL散度的值表示真实概率分布 P ( x ) 与预测概率分布 Q ( x ) 之间的差异,其值越小说明预测结果越好。因此需要最小化KL散度,而交叉熵等于KL散度加上一个常量(信息熵),且公式相比KL散度更加容易计算,所以在机器学习中常常使用交叉熵损失函数来计算loss。
总结:

交叉熵能够衡量同一个随机变量中的两个不同概率分布的差异程度,在机器学习中就表示为真实概率分布与预测概率分布之间的差异。交叉熵的值越小,模型预测效果就越好。

交叉熵在分类问题中常常与softmax是标配,softmax将输出的结果进行处理,使其多个分类的预测值和为1,再通过交叉熵来计算损失。
如GCN中预测:
从GCN中学习的信息熵