下面解释上述结论是如何推导出的,首先我们了解一下熵的定义:
熵是信息论中的概念,首先需要定义一个事件 X = x X=x X=x的信息量,要求满足以下两个条件:
同时满足以上两个条件的且最为简单的函数就是对数函数了,s.t. I ( x ) = − l o g P ( x ) I(x) = -logP(x) I(x)=−logP(x)
Proof: P ( x ) P(x) P(x)越大, I ( x ) = − l o g P ( x ) I(x) = -logP(x) I(x)=−logP(x)越小
I ( x 1 , x 2 , x 3 ) = − l o g P ( x 1 , x 2 , x 3 ) = − l o g P ( x 1 ) P ( x 2 ) P ( x 3 ) = − ( l o g P ( x 1 ) + l o g P ( x 2 ) + l o g P ( x 3 ) ) = I ( x 1 ) + I ( x 2 ) + I ( x 3 ) \begin{aligned} I(x_1,x_2,x_3) &= -logP(x_1,x_2,x_3)\\ &= -logP(x_1)P(x_2)P(x_3)\\ &= -(logP(x_1)+logP(x_2)+logP(x_3))\\ &= I(x_1)+I(x_2)+I(x_3) \end{aligned} I(x1,x2,x3)=−logP(x1,x2,x3)=−logP(x1)P(x2)P(x3)=−(logP(x1)+logP(x2)+logP(x3))=I(x1)+I(x2)+I(x3)
有了事件的信息量之后,可以定义熵为满足分布P的事件所产生的期望信息量:
H ( P ) = E x ∼ P [ I ( x ) ] = − E x ∼ P [ l o g P ( x ) ] = − ∑ i P ( x i ) l o g P ( x i ) H(P) = E_{x\sim P}[I(x)]= -E_{x\sim P}[logP(x)] = -\sum_{i}P(x_i)logP(x_i) H(P)=Ex∼P[I(x)]=−Ex∼P[logP(x)]=−i∑P(xi)logP(xi)
有两个概率分布P,Q,其中P为真实分布,Q为预测的分布。信息论指出,按分布P来识别一个样本所需的平均编码长度等于该分布的熵: H ( P ) = − ∑ i P ( x i ) l o g P ( x i ) H(P) = -\sum_{i}P(x_i)logP(x_i) H(P)=−∑iP(xi)logP(xi)
而由于现实当中,我们很难知道训练数据的真实分布P,而如果用预测分布Q来做同样的事情,所需平均编码长度为: H ( P , Q ) = − E x ∼ P [ l o g Q ( x ) ] = − ∑ i P ( x i ) l o g Q ( x i ) H(P,Q) = -E_{x\sim P}[logQ(x)] = -\sum_{i}P(x_i)logQ(x_i) H(P,Q)=−Ex∼P[logQ(x)]=−i∑P(xi)logQ(xi)
但单纯的交叉熵并没有实际的意义,有意义的是用预测分布Q所需的平均编码长度比用真实分布P所需的平均编码长度多多少,由此我们可以引入相对熵
相对熵的定义就是我们上面说的用预测分布Q所需的平均编码长度比用真实分布P所需的平均编码长度多多少。所以说相对熵可以用来衡量两个分布的差距,最小化相对熵就可以使得预测分布Q尽量逼近真实分布P,因此可以使用相对熵来作为机器学习的目标函数。
K L ( P ∣ ∣ Q ) = H ( P , Q ) − H ( P ) = ∑ i P ( x i ) l o g P ( x i ) Q ( x i ) KL(P||Q) = H(P,Q) - H(P) = \sum_iP(x_i)log\frac{P(x_i)}{Q(x_i)} KL(P∣∣Q)=H(P,Q)−H(P)=i∑P(xi)logQ(xi)P(xi)
但观察相对熵的公式,我们可以发现 H ( P ) H(P) H(P)其实是一个固定的量(尽管未知),因此:
a r g m i n Q K L ( P ∣ ∣ Q ) ⇌ a r g m i n Q H ( P , Q ) argmin_{Q}KL(P||Q) \rightleftharpoons argmin_{Q}H(P,Q) argminQKL(P∣∣Q)⇌argminQH(P,Q)
最小化KL散度等价于最小化交叉熵!!! 所以交叉熵也可以作为机器学习的目标函数!
最大似然估计应该是我们最熟悉,也最为广泛使用的目标函数了,那么它与最小化相对熵/交叉熵有什么不同呢?首先看最大似然的公式(P为真实分布,Q为预测分布,但因为我们只知道预测分布,所以用Q来求最大似然):
θ ∗ = a r g m a x θ ∏ i Q ( x i ; θ ) = a r g m a x θ ∑ i l o g Q ( x i ; θ ) = a r g m a x θ 1 m ∑ i l o g Q ( x i ; θ ) \begin{aligned} \theta^* & = argmax_{\theta}\prod_iQ(x_i;\theta)\\ & = argmax_{\theta} \sum_i logQ(x_i;\theta)\\ & = argmax_{\theta}\frac{1}{m}\sum_i logQ(x_i;\theta) \end{aligned} θ∗=argmaxθi∏Q(xi;θ)=argmaxθi∑logQ(xi;θ)=argmaxθm1i∑logQ(xi;θ)
当 m m m足够大时,由大数定律, 1 m ∑ i l o g Q ( x i ; θ ) → E x − P [ l o g Q ( x i ; θ ) ] \frac{1}{m}\sum_i logQ(x_i;\theta) \rightarrow E_{x-P}[logQ(x_i;\theta)] m1∑ilogQ(xi;θ)→Ex−P[logQ(xi;θ)],因此:
θ ∗ = a r g m a x θ ∑ i P ( x i ) l o g Q ( x i ; θ ) = a r g m i n θ − ∑ i P ( x i ) l o g Q ( x i ; θ ) = a r g m i n θ H ( P , Q ) \begin{aligned} \theta^* & = argmax_{\theta} \sum_{i}P(x_i)logQ(x_i;\theta) \\ &= argmin_{\theta} -\sum_{i}P(x_i)logQ(x_i;\theta)\\ &= argmin_{\theta}H(P,Q) \end{aligned} θ∗=argmaxθi∑P(xi)logQ(xi;θ)=argminθ−i∑P(xi)logQ(xi;θ)=argminθH(P,Q)
当数据量足够大时,最大似然估计也等价于最小化交叉熵!!
Note: 另一种常见的最大似然估计形式 ∏ i P ( x ) P ~ ( x ) \prod_i P(x)^{\tilde{P}(x)} ∏iP(x)P~(x)其实就来自于上面的化简式: ∑ i P ( x i ) l o g Q ( x i ; θ ) = l o g ∏ i Q ( x i ; θ ) P ( x i ) \sum_{i}P(x_i)logQ(x_i;\theta) = log\prod_i Q(x_i;\theta)^{P(x_i)} ∑iP(xi)logQ(xi;θ)=log∏iQ(xi;θ)P(xi),只不过这里把真实分布 P ( x ) P(x) P(x)用经验分布 P ~ ( x ) \tilde{P}(x) P~(x)代替了而已