2.5 信息论的要素
机器学习问题还可以从信息传递或交换方面进行分析。问题的数据集由n个特征组成,这些特征被认为是独立地从n个不同的统计分布中抽取出来的。此处,独立是为了简单起见,即使它通常是一个现实的假设。因此,有n个概率密度函数pi(x)必须通过其他n个qi(x)函数进行近似。在任何机器学习任务中,了解两个对应的分布是否偏离以及在逼近原始数据集时丢失的信息量有多少是非常重要的。
2.5.1 熵
最有用处的方法是采用熵:
该值与X的不确定性成比例,以比特(bit)为单位进行测量。当对数有另一个基准时,该单位也可能改变。基于很多目的,优选高熵,因为这意味着某个特征包含了更多的信息。例如在抛硬币时,仅有两个可能的结果,此时H(X)=1 bit,但是如果结果的数量增加,即使都具有相同的概率,H(X)也会由于更多数量的不同值而增加,从而增加变数。可以证明,对于高斯分布使用自然对数,则有:
因此,对于高斯分布,熵与方差成比例,方差是单个特征携带的信息量的量度。在第3章中将讨论基于方差阈值的特征选择方法。高斯分布非常普遍,所以这个例子可以被认为是特征选择的一般方法:低方差意味着低的信息水平,并且模型可能经常丢弃所有这些特征。
图2-10中,高斯分布的H(X)的图以nat为单位表示,这是使用自然对数时的相应单位度量。
图2-10 作为标准差函数的正态分布的熵
例如,如果一个数据集由一些特征组成,这些特征的方差(在这里更为方便的是谈论标准差,STD)在8和10之间,而另外一些特征的STD<1.5,那么后者所表示的特征可能会因为信息损失而被丢弃。当现实生活中的问题组成的大数据集需要高效地进行清理和处理时,这些概念就显得非常重要。与熵相关的另一个重要指标称为困惑度(perplexity):
如果使用log2计算熵,则该度量可立即与具有相同概率的总的可能结果相关联。无论何时使用自然对数,该度量仍然与该数量成比例。困惑度对于评估分布中的不确定性非常有用(它可以是数据分布或模型的输出)。例如,如果有一个均匀的硬币(phead=ptail=0.5),则熵等于以下:
困惑度等于2,意味着我们期望2个同样可能的结果。由于类总数为2,这种情况是不可接受的,因为我们无法确定正确的结果(这是实验的整个目标)。另一方面,如果我们已经执行了先前的分析(假设模型已完成)并且phead=0.8,则熵变为以下:
困惑度降至约1.38,显然这种结果不比上一种更具有可能性。
2.5.2 交叉熵和互信息
如果有一个目标概率分布p(x),其由另一个分布q(x)近似,一个有用的度量是p和q之间的交叉熵(cross-entropy)。由于问题的求解需要采用数值计算,此处使用离散形式的定义:
如果对数以2为底,在优化Q时,上式得到解码从P抽取的事件所需要的比特数。在许多机器学习问题中,一般有一个源分布,需要训练一个估计器才能正确识别样本的类别。如果误差为零,则P=Q,交叉熵最小(对应于熵H(P))。然而,当使用Q代替P时,零误差几乎是不可能的,因此需要支付H(P,Q)比特数的价格以从预测开始确定正确的类。我们的目标往往是将其最小化,以便将这个价格降低到一个阈值,当不支付用H(P,Q)表示的比特数时该阈值不改变预测输出。换句话说,考虑一个二输出和一个sigmoid函数,阈值为0.5(这是我们可以支付的最大价格),使用阶跃函数(step function)来确定正确的类(0.6->1,0.1->0,0.4999->0,等等)。当我们不支付这个价格时,意味着分类器不知道原始的分布,所以有必要在可容忍的噪声-鲁棒性阈值内(这始终是最小的可实现的阈值)减少交叉熵。
为了解机器学习方法的运行方式,有必要引入条件熵或X的不确定性:
通过这个概念,可以引入互信息的概念,这是两个变量共享的信息量,因此,由Y知识提供的信息减少了X的不确定性:
直观地说,当X和Y独立时,它们不共享任何信息。然而,在机器学习任务中,原始特征与其预测之间的相关性很强,因此我们希望最大化两个分布的共享信息。如果条件熵足够小(Y能够很好地描述X),则互信息接近边界熵H(X),这个边界熵H(X)测量了我们想要学习的信息量。
基于信息论的一种有趣的学习方法,称为最小描述长度(Minimum Description Length,MDL),关于这些主题的更多信息在The Minimum Description Length Principle in Coding and Modeling一书中进行了讨论。
2.5.3 两个概率分布的散度
假设有一个离散数据生成过程pdata(x)和一个模型q(x),该模型是输出概率的函数。在许多机器学习任务中,目标是调整参数,使q(x)变得尽可能类似于pdata。一个非常有用的衡量标准是Kullback-Leibler散度:
该量(也称为信息增益)表示通过使用近似q(x)而不是原始数据生成过程获得的增益。如果q(x)=pdata(x)则DKL(pdata||q)=0,而当两者不匹配时,该值大于0(无界)。根据上面的表达式,可以进一步推导如下:
第一项是数据生成过程的负熵,它是一个常数。第二项是两个分布之间的交叉熵。因此如果最小化第二项,也最小化了Kullback-Leibler散度。在接下来的章节中,我们将基于此损失函数分析一些模型,这在多标签分类中非常有用。因此,希望不熟悉这些概念的读者在继续学习之前先充分理解这些理论基础。
在某些情况下,最好使用对称和有界的度量。Jensen-Shannon散度定义如下:
即使它看起来更复杂,它的作用也相当于Kullback-Leibler散度,主要区别在于现在可以交换两个分布,最重要的是,0≤DJS(pdata||q)≤log(2)。由于它表示为DKL(pdata||q)的函数,因此很容易证明其最小化与交叉熵的减少成正比。Jensen-Shannon散度用于高级模型(例如生成对抗网络(GAN)),但熟悉它是有益的,因为它在Kullback-Leibler散度可能导致溢出的某些任务中很有用(即两个分布没有重叠,q(x)→0)。