信息量
熵在信息学中的概念就是一个系统“内在的混乱程度”,也可以理解为系统中所含的信息量大小。比如说一句话:“杨倩在东京奥运会中夺得了金牌”,如果在东京奥运会之前说这句话,那么这句话包含的信息量就很大,因为在赛前杨倩能不能拿金牌是一件非常不确定的事;但是当奥运会结束后,这句话包含的信息量就非常小了,因为杨倩已经确定拿了金牌。所以信息量也可以定义为:事件又不确定变为确定的困难程度。假设将信息量定义为:f(x) := 信息量。
那么我们可以得到 f(杨倩赢得金牌)= f(杨倩进了决赛)+ f(杨倩赢了决赛)。根据概率论的方法,还可以得到:p(杨倩赢得金牌)= p(杨倩进了决赛)× f(杨倩赢了决赛)。这两个式子应该是等价的,那么 f(x)的表达式中一定含有log,才可以让相乘变相加。且符号为负,因为概率越大,信息量越小。即:
底数为2,就可以使计算结果的单位是比特。
熵
然后看信息量在一个系统中表现:假设在一场篮球比赛中,A队获胜的概率是50%,B队获胜的概率是50%,那这两个事件的信息量分别是:
而在另一场篮球比赛中,C队获胜的概率是99%,D对获胜的概率是1%,那这两个时间的信息量分别是:
从直观上看,C和D的比赛信息量应该更小,因为C获胜的概率非常大;A和B的比赛信息量应该更大,因为二者谁能赢很难说。但是这两场比赛的信息量该如何计算呢?如果简单的将系统的所有事件的信息量相加,那从上面这个例子来看肯定是不合适的。所以系统整体的信息量应该是每个事件的概率乘上它的信息量,再累加起来。这样计算下来,A和B的比赛的信息量是1,C和D的比赛的信息量大约是0.08079。也就是说A和B的系统的熵为1,C和D的系统的熵为0.08079。
从这个例子中可以知道熵实质上求的是系统内所有时间信息量的期望和。那么熵的公式就是:
相对熵(KL散度)
现在已经知道了如何求一个系统的熵,那我们就可以用熵来求两个系统的差别,即相对熵。假设有P和Q两个系统,现在以P为基准,考虑Q与P差多少。相对熵公式如下:
现在我们的计算是以P系统为基准的,那么式子最后一行减号后的那一项是固定不变的,现在要想让Q和P最接近,那么减号前一项就要越小越好,而这一项就是交叉熵。
神经网络中的交叉熵
在神经网络中,我们要比较的两个模型分别是神经网络所拟合出的模型和神经网络要逼近的那个真实概率模型。那么H(P,Q)中的Q就是神经网络所拟合出的模型,P就是要逼近的那个真实概率模型,现在我们要以神经网络要逼近的那个概率模型为基准,看看当下神经网络所拟合出的模型与真实概率模型的差别。神经网络输入的是一个长长的序列,也就是真实概率模型的真实数据,输出的是每个样本对应的输出
,那么交叉熵公式中的
就是
,
就是
。如下所示:
在二分类问题中,如果为1表示是正样本,
为0表示是负样本,而
表示的是一个概率,那么二者就是不同的事件,所以当
为1时,
要表示是正样本的概率;
为0时,
要表示不是正样本的概率。所以交叉熵最后的公式就是:
在多分类问题中,只需要计算每个分类的熵的期望即可,此时交叉熵的公式就是: