熵、交叉熵、KL散度、损失函数

信息量

一个事件x的信息量是:

I(x)=log(p(x)) I ( x ) = − l o g ( p ( x ) )

解读:如果一个事件发生的概率越大,那么信息量就越小。如果是1,也就是100%发生,那么信息量为0。

就是对信息量求期望值。

H(X)=E[I(x)]=xXp(x)logp(x) H ( X ) = E [ I ( x ) ] = − ∑ x ∈ X p ( x ) log ⁡ p ( x )

举例: 如果10次考试9次不及格,一次及格。 假设事件为 xA x A 代表及格事件,那么这个事件的熵为:
HA(x)=[p(xA)log(p(xA))+(1p(xA))log(1p(xA))]=0.4690 H A ( x ) = − [ p ( x A ) log ⁡ ( p ( x A ) ) + ( 1 − p ( x A ) ) log ⁡ ( 1 − p ( x A ) ) ] = 0.4690

其实也和后续的逻辑回归的二分类的损失函数有类似。

KL散度

相对熵(relative entropy)又称为KL散度(Kullback-Leibler divergence),KL距离,是两个随机分布间距离的度量。记为DKL(p||q)。它度量当真实分布为p时,假设分布q的无效性。

DKL(p||q)=Ep[logp(x)q(x)]=xXp(x)logp(x)q(x)=xX[p(x)logp(x)p(x)logq(x)]=H(p)xXp(x)logq(x)=H(p)+Ep[logq(x)] D K L ( p | | q ) = E p [ log ⁡ p ( x ) q ( x ) ] = ∑ x ∈ X p ( x ) log ⁡ p ( x ) q ( x ) = ∑ x ∈ X [ p ( x ) log ⁡ p ( x ) − p ( x ) log ⁡ q ( x ) ] = − H ( p ) − ∑ x ∈ X p ( x ) log ⁡ q ( x ) = − H ( p ) + E p [ − log ⁡ q ( x ) ]

当p=q的时候,散度为0.

交叉熵

假设有两个分布p,q,则它们在给定样本集上的交叉熵定义如下:

CrossEntropy(p,q)=Ep[logq]=xXp(x)logq(x)=H(p)+DKL(p||q) C r o s s E n t r o p y ( p , q ) = E p [ − log ⁡ q ] = − ∑ x ∈ X p ( x ) log ⁡ q ( x ) = H ( p ) + D K L ( p | | q )

当p分布是已知,则熵是常量;于是交叉熵和KL散度则是等价的。最小化交叉熵等价于最小化KL距离。

对应到logistic regression

在逻辑回归中我们用交叉熵来定义损失函数的。那么来再推导一次。详细参考:
https://blog.csdn.net/iterate7/article/details/78992027
p:真实样本分布,服从参数为p的0-1分布,即X~B(1,p)
q:待估计的模型,服从参数为q的0-1分布,即X~B(1,q)

0-1分布,我们把其中一种事件的结果发生的概率定为p,那么另一种结果的概率就是1-p,两者的概率和是1.[贝努力分布]

CrossEntropy(p,q)=xXp(x)logq(x)=[Pp(x=1)logPq(x=1)+Pp(x=0)logPq(x=0)]=[plogq+(1p)log(1q)]=[yloghθ(x)+(1y)log(1hθ(x))] C r o s s E n t r o p y ( p , q ) = − ∑ x ∈ X p(x) log ⁡ q(x) = − [ P p ( x = 1 ) log ⁡ P q ( x = 1 ) + P p ( x = 0 ) log ⁡ P q ( x = 0 ) ] = − [ p log ⁡ q + ( 1 − p ) log ⁡ ( 1 − q ) ] = − [ y log ⁡ h θ ( x ) + ( 1 − y ) log ⁡ ( 1 − h θ ( x ) ) ]

这里q则是假设函数。


对所有的训练样本平均值交叉熵为:
J=1mi=1m[y(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))] J = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ h θ ( x ( i ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ]

总结

  1. 信息量代表的是一种不确定性;
  2. 熵代表的是不确定性的期望值;
  3. 确定的事件的熵为0;
  4. KL散度代表的是利用熵的概念来表示分布之间的距离;
  5. 交叉熵等价于KL散度;熵是常量,因为训练数据的分布已知。
  6. 在逻辑回归中用交叉熵作为损失函数的原因是:交叉熵可以等价于KL散度;交叉熵越小,则p和q分布差异越小,拟合更好。
  7. 用最大似然方法推导的损失函数和最大熵的方式结果是一致的,最大似然方法的推导可以参考:https://blog.csdn.net/iterate7/article/details/78992027
  8. 实际中,选用交叉熵易于计算。

引用

  • https://blog.csdn.net/iterate7/article/details/78992027
  • https://en.wikipedia.org/wiki/Cross_entropy
  • https://www.zhihu.com/question/65288314/answer/244601417

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