kl散度定义_信息、熵 、交叉熵、KL散度

KevinCK:交叉熵、相对熵(KL散度)、JS散度和Wasserstein距离(推土机距离)

信息量:

昨天下雨这个事件,因为已知,那么它的信息量就为0。

明天会下雨这个事件,因为未知,那么这个事件的信息量就大。

事件发生的概率越小,(但对其进行预测,那么)其信息量越大。(比如,告诉我,赛马中哪匹是第一,信息量很大(有价值)。告诉我明天太阳会升起,信息量很小(说了等于没说))

假设

是一个离散型随机变量,其取值集合为
,概率分布函数
,

定义

这个事件的信息量为:

单调递减,因为,事件发生的概率越小,(但对其进行预测,那么)其信息量越大

熵:

信息量的期望就是熵

假设 事件

共有n种可能,发生
的概率为
,那么该事件的熵
为:

(计算某随机变量的熵的前提:知道这个变量的真实分布)

0-1分布问题,熵的计算方法可以简化为如下算式:(p是成功概率)

import matplotlib.pyplot as plt  #画图包
import numpy as np
x = np.linspace(0,1,50)
y = -(x * np.log(x) + (1-x)* np.log(1 - x))
plt.plot(x,y)
plt.show()

#y = -x * np.log(x)
#<stdin>:1: RuntimeWarning: divide by zero encountered in log

879f298935c196ada18bc3a3f20b0aa2.png

抛硬币,它是均匀的时候,最难预测结果,正反面的概率都是1/2,它是完全随机的!

此时熵为log2, 最大。

如果一张图,猫狗二分类,label是[0, 1],熵是-1乘log1 - 0乘log 0,等于0?

log 0,

RuntimeWarning: divide by zero encountered in log

相对熵(KL散度):

如果同一个随机变量 x 有两个单独的概率分布 P(x) 和 Q(x),可以使用 KL 散度来衡量这两个分布的差异。

P往往用来表示样本的真实分布,Q用来表示模型所预测的分布,那么KL散度就可以计算两个分布的差异,经常作为损失值

Q的分布越接近P(Q分布越拟合P),那么散度值越小。

因为对数函数是凸函数,所以KL散度的值为非负数。(需要推一下)

有时会将KL散度称为KL距离,但它并不满足距离的性质:

  1. KL散度不是对称的;
  2. KL散度不满足三角不等式。

交叉熵:

我们将KL散度公式进行变形:

等式的前一部分恰巧就是p的熵,等式的后一部分,就是交叉熵:

计算模型分布与目标分布间的差异,KL散度是最合适的。即

由于KL散度中的前一部分−H(y)不变,故在优化过程中,只需要关注交叉熵就可以了。所以一般在机器学习中直接用用交叉熵做loss,评估模型。

某一事件的标签是已知的,不变的(例如设置猫的label为1,那么所有关于猫的样本都要标记为1),即目标分布的熵为常数

不用计算KL散度,只需要计算交叉熵,就可以得到模型分布与目标分布的损失值。(交叉熵代替KL散度)

2. 如果目标分布是有变化的,那么就不能使用交叉熵

例如蒸馏模型的损失函数就是KL散度,因为蒸馏模型的目标分布也是一个模型,该模型针对同类别的不同样本,会给出不同的预测值(如两张猫的图片a和b,目标模型对a预测为猫的值是0.6,对b预测为猫的值是0.8)。 (毕竟没用到ground truth?)

交叉熵和KL散度应用方式不同的另一种解释(暂时没理解):

交叉熵: 衡量在给定的真实分布下,使用 非真实分布所指定的策略 消除系统的不确定性 所需要付出的努力的大小 (模型在推断阶段,需要付出的努力是什么?)
最小化交叉熵,诱导由算法产生的策略 接近最优策略, KL散度(相对熵):
衡量不同策略( 模型分布?)之间的差异
https://towardsdatascience.com/understanding-binary-cross-entropy-log-loss-a-visual-explanation-a3ac6025181a​towardsdatascience.com

→把真值q换成预测概率p,得到交叉熵

→ 交叉熵 - 熵 =(定义为) KL散度

交叉熵大于等于熵【预测的分布只能接近真实分布,但永远不会严格相等?】(KL散度非负)

binary cross-entropy / log loss

cross-entropy即log loss?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值