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

信息量

一个事件x的信息量是:
I ( x ) = − l o g ( p ( x ) ) I(x)=-log(p(x)) I(x)=log(p(x))
解读:如果一个事件发生的概率越大,那么信息量就越小。如果是1,也就是100%发生,那么信息量为0。

就是对信息量求期望值。
H ( X ) = E [ I ( x ) ] = − ∑ x ∈ X p ( x ) log ⁡ p ( x ) H(X)=E[I(x)]=-\sum\limits_{x∈X}p(x)\log p(x) H(X)=E[I(x)]=xXp(x)logp(x)
举例: 如果10次考试9次不及格,一次及格。 假设事件为 x A x_A xA代表及格事件,那么这个事件的熵为:
H A ( x ) = − [ p ( x A ) log ⁡ ( p ( x A ) ) + ( 1 − p ( x A ) ) log ⁡ ( 1 − p ( x A ) ) ] = 0.4690 H_A(x)=-[p(x_A)\log(p(x_A))+(1-p(x_A))\log(1-p(x_A))]=0.4690 HA(x)=[p(xA)log(p(xA))+(1p(xA))log(1p(xA))]=0.4690

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

KL散度

相对熵(relative entropy)又称为KL散度(Kullback-Leibler divergence),KL距离,是两个随机分布间距离的度量。记为DKL(p||q)。它度量当真实分布为p时,假设分布q的无效性。
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 ) ] D_{KL}(p||q)=E_p[\log \frac{p(x)}{q(x)}]\\ =\sum\limits_{x∈\mathcal{X}} p(x)\log \frac{p(x)}{q(x)} \\ =\sum\limits_{x∈\mathcal{X}} [p(x)\log p(x)-p(x)\log q(x)]\\ =-H(p)-\sum\limits_{x∈\mathcal{X}} p(x)\log q(x)\\ =-H(p)+E_p[-\log q(x)] DKL(pq)=Ep[logq(x)p(x)]=xXp(x)logq(x)p(x)=xX[p(x)logp(x)p(x)logq(x)]=H(p)xXp(x)logq(x)=H(p)+Ep[logq(x)]
当p=q的时候,散度为0.

交叉熵

假设有两个分布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 ) CrossEntropy(p,q)=E_p[-\log q]\\ =-\sum\limits_{x∈\mathcal{X}} p(x)\log q(x)\\ =H(p)+D_{KL}(p||q) CrossEntropy(p,q)=Ep[logq]=xXp(x)logq(x)=H(p)+DKL(pq)
当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.[贝努力分布]

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 ) ) ] CrossEntropy(p,q)\\=-\sum\limits_{x∈\mathcal{X}} \textbf{p(x)}\log \textbf{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)]\\ =-[\textbf{y}\log \textbf{h}_{\theta}(x)+(1-\textbf{y})\log (1-\textbf{h}_{\theta}(x))] \\ 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))]
这里q则是假设函数。


对所有的训练样本平均值交叉熵为:
J = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ h θ ( x ( i ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ] J = -\frac{1}{m}\sum\limits_{i=1}^m[y^{(i)}\log h_{\theta}(x^{(i)})+(1-y^{(i)})\log (1-h_{\theta}(x^{(i)}))] J=m1i=1m[y(i)loghθ(x(i))+(1y(i))log(1hθ(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
  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值