交叉熵(cross entropy)
交叉熵在机器学习中的地位十分重要,常在Logistic回归或者神经网络中作为Loss Function来使用,下面先详细谈一谈交叉熵的定义。
假设现在有关于样本集的两个概率分布
p(x)和
q(x),其中
p(x)为真实分布,
q(x)为非真实的分布(可以理解为我们通过该样本集训练得到的分布)。如果我们用真实分布
p(x)来编码该样本,则编码的期望长度为:
H(p)=x∑p(x)log(p(x)1)
但是真实分布往往是不可知的,这时我们可以用非真实分布
q(x)来计算来自真实分布
p(x)的平均编码长度,这就是交叉熵:
Hcross=x∑p(x)log(q(x)1)
因为用
q(x)来编码的样本来自于分布
p(x),所以上述式子中求期望的概率为
p(x)。
举个例子,考虑一个随机变量
x,真实分布
p(x)为(21,41,81,81),非真实分布
q(x)为(41,41,41,41),则依据真实分布求得的平均编码长度为
H(p)=1.75bits,交叉熵为:
Hcross=21log24+41log24+81log24+81log24=2bits
相对熵(relative entropy)
相对熵也称为KL散度(Kullback-Leibler divergence),在机器学习中,相对熵的概念同样也非常重要。
假设
p(x)、q(x)是离散变量
X中取值的两个概率分布模型,则我们定义
p对
q的相对熵为:
DKL(p∣∣q)=x∑p(x)log(q(x)p(x))
相对熵具有以下几条性质:
- 如果
p(x)和
q(x)两个分布相同,那么相对熵为0
- 相对熵不具有对称性,即
DKL(p∣∣q)̸=DKL(q∣∣p)
-
DKL(p∣∣q)≥0
关于性质3的证明如下:
DKL(p∣∣q)=x∑p(x)log(q(x)p(x))=−x∑p(x)log(p(x)q(x))≥−log[x∑p(x)(p(x)q(x))]=−log[x∑q(x)]=0(因为x∑q(x)=1)
为了进一步理解相对熵的作用,我们将相对熵的公式进行展开:
DKL(p∣∣q)=x∑p(x)log(q(x)p(x))=x∑p(x)log(p(x))−x∑p(x)log(q(x))=−x∑p(x)log(q(x))−[−x∑p(x)log(p(x))]=Hcross−H(p)
通过上述推导,我们可以看出,
p对
q的相对熵就等于交叉熵与
p的熵之差。即用真实分布
q(x)得到的平均码长比真实分布
p(x)得到的平均码长多出的比特数就是相对熵。
我们已经证明了相对熵总是大于0的,并且可以直观的看出,当非真实分布
q(x)越接近真实分布
p(x)时,相对熵的值越接近0。
交叉熵和相对熵在机器学习中的应用
接着谈一谈相对熵和交叉熵在机器学习中的应用。在机器学习中,我们希望构建的模型在训练数据上学到的分布
P(model)和真实的数据分布
P(real)越接近越好,即相对熵越小越好。
在实际的应用中,完整数据集的真实分布是没法得到的,所以我们在训练模型时,往往考虑的是得到的模型的分布
P(model)与训练数据的分布
P(train)越接近越好,这里存在一个假设作为前提,即训练数据是从总体分布中独立同分布采样得到的。
上述观点可以描述如下:
- 学习的目的,希望得到一个与真实分布一致的分布模型:
p(model)≃p(real)
- 由于真实分布未知,用训练数据的分布来近似表示真实分布:
p(train)≃p(real)
- 退而求其次,希望得到一个与训练数据分布一致的分布模型:
p(model)≃p(train)
根据之前的描述,我们可以知道,要使
p(model)与
p(train)越接近,就是要使相对熵
DKL(p(train)∣∣p(model))最小,假设
p(model)由参数
θ确定,则
θ可根据以下关系求解:
=θminDKL(p(train)∣∣p(model))θminHcross−H(p(train))
由于训练数据的分布
p(train)是已知的,所以
H(p(train))可以求出,是个常数,因此上述求解过程等价于求解使交叉熵
Hcross最小的
θ:
θminHcross
下面以最常见的二项Logistic回归为例,说明上述过程。
二项Logistic回归是一种分类模型,由条件概率分布
P(Y∣X)表示,这里随机变量
X的取值为实向量,
Y取值为1或0,我们构建的
P(model)的形式为:
⎩⎪⎨⎪⎧P(Y=1∣x)=1+exp(ω⋅x+b)exp(ω⋅x+b)P(Y=0∣x)=1+exp(ω⋅x+b)1其中需要求解的参数为ω和b
训练数据的分布
P(train)可以表示为:
P(Y=1∣X=xi)=yiP(Y=0∣X=xi)=1−yi