简要解释为什么要使用交叉熵作为损失函数。用简短的话来解释就是:我们需要得到最大似然估计,即模型得到的预测分布应该与数据的实际分布情况尽可能相近。KL散度(相对熵)是用来衡量两个概率分布之间的差异。模型需要得到最大似然估计,乘以负Log以后就相当于求最小值,此时等价于求最小化KL散度(相对熵)。所以得到KL散度就得到了最大似然。又因为KL散度中包含两个部分,第一部分是交叉熵,第二部分是信息熵,即KL=交叉熵−信息熵。信息熵是消除不确定性所需信息量的度量,简单来说就是真实的概率分布,而这部分是固定的。所以优化KL散度就是近似于优化交叉熵。
即:最小化交叉熵完全等价于极大似然估计;
求最小化交叉熵等价于求KL散度。
首先推导最小化交叉熵完全等价于极大似然估计,具体的证明公式参考:最小化交叉熵损失与极大似然 - 知乎。给出简单的推导:
第一步是最大似然估计,通俗来讲就是我们需要从参数集中找出一组参数,使得观察到的概率值最大。最后一步就是我们的最小化交叉熵,也是一般神经网络的优化目标。
然后推导最小化交叉熵等价于求KL散度。
1.KL散度(相对熵)
相对熵就是KL散度,用来衡量两个概率分布之间的差异。对于两个概率和
,其相对熵计算公式如下:
KL 越小,表示p(x)和q(x)的分布越近。
相对熵的特点就是只有当 =
时,其值为0。当两者不同时,其值大于0。这个利用了
为严格的凸函数的性质。
我们可以将上诉公式拆成两部分,第一部分就是交叉熵,第二部分就是信息熵(常数)。
2.交叉熵
公式的前半部分就是交叉熵。在中,
代表真实的概率分布,
代表预测的概率分布。我们模型预测目的就是使交叉熵最小,即
最接近于
。因为模型的后半部分是一个常数。所以当相对熵最小时,即意味着交叉熵达到了最小。反过来,当我们模型预测得到一个最小的交叉熵时,也就得到了最小的相对熵,也就等效于得到了最大似然估计(最大似然估计的目的就是:利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值。这个是统计学中的知识,想了解的同学自行百度,不多解释)。
3.信息熵
公式的后半部分就是信息熵。信息熵是消除不确定性所需信息量的度量。
信息熵 = (信息x发生的概率×验证信息x需要的信息量)
简而言之:信息熵是信息量乘以其发生概率。而真实的概率分布是固定的,所以这一部分是一个常数。
首先了解一下信息量:信息量是对信息的度量,就跟时间的度量是秒一样,当我们考虑一个离散的随机变量 x 的时候,当我们观察到的这个变量的一个具体值的时候,我们接收到了多少信息呢?
多少信息用信息量来衡量,我们接受到的信息量跟具体发生的事件有关。
信息的大小跟随机事件的概率有关。越小概率的事情发生了产生的信息量越大,如湖南发生地震了;越大概率的事情发生了产生的信息量越小,如太阳从东边升起来了(肯定发生嘛, 没什么信息量)。这很好理解!
信息量度量的是一个具体事件发生了所带来的信息,而熵则是在结果出来之前对可能产生的信息量的期望——考虑该随机变量的所有可能取值,即所有可能发生事件所带来的信息量的期望。
总结:
虽然最小化的是交叉熵,但其实我们实际上的目的是最大似然,但我个人喜欢从KL散度的方向去分析交叉熵。
最大似然有两个非常好的统计性质:
样本数量趋于无穷大时,模型收敛的概率会随着样本数m的增大而增大。这被称为一致性。
一个一致性估计器能够在固定数目的样本m下取得更低的泛化误差(generalization error),或者等价的,需要更少的样本就可以得到固定水平的泛化误差。这被称作统计高效性。
题外话:最大似然估计是频率派提出的观点,而贝叶斯派则认为贝叶斯才是真实的分布情况。贝叶斯公式中包含了最大似然函数,并且在最大似然函数后面乘以了一个先验概率。