最大似然估计与交叉熵

最大似然估计与交叉熵

  • 交叉熵
  • 相对熵(KL散度)
  • 最大似然估计

首先说结论: 当数据量足够大时,最大似然估计等价于最小化交叉熵

下面解释上述结论是如何推导出的,首先我们了解一下熵的定义:

熵是信息论中的概念,首先需要定义一个事件 X = x X=x X=x的信息量,要求满足以下两个条件:

  1. 越不可能发生的事情,信息越大
  2. 几个独立事件同时发生的信息量=每一个事件的信息量之和

同时满足以上两个条件的且最为简单的函数就是对数函数了,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)=ExP[I(x)]=ExP[logP(x)]=iP(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)=ExP[logQ(x)]=iP(xi)logQ(xi)

但单纯的交叉熵并没有实际的意义,有意义的是用预测分布Q所需的平均编码长度比用真实分布P所需的平均编码长度多多少,由此我们可以引入相对熵


相对熵(KL散度)

相对熵的定义就是我们上面说的用预测分布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(PQ)=H(P,Q)H(P)=iP(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(PQ)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θiQ(xi;θ)=argmaxθilogQ(xi;θ)=argmaxθm1ilogQ(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)] m1ilogQ(xi;θ)ExP[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θiP(xi)logQ(xi;θ)=argminθiP(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;θ)=logiQ(xi;θ)P(xi),只不过这里把真实分布 P ( x ) P(x) P(x)用经验分布 P ~ ( x ) \tilde{P}(x) P~(x)代替了而已

你可能感兴趣的:(机器学习,机器学习)