交叉熵的理解

1.信息量的定义

一文搞懂交叉熵在机器学习中的使用,透彻理解交叉熵背后的直觉_史丹利复合田的博客-CSDN博客关于交叉熵在loss函数中使用的理解交叉熵(cross entropy)是深度学习中常用的一个概念,一般用来求目标与预测值之间的差距。以前做一些分类问题的时候,没有过多的注意,直接调用现成的库,用起来也比较方便。最近开始研究起对抗生成网络(GANs),用到了交叉熵,发现自己对交叉熵的理解有些模糊,不够深入。遂花了几天的时间从头梳理了一下相关知识点,才算透彻的理解了,特地记录下来,以便日后查阅。https://blog.csdn.net/tsyccnh/article/details/79163834

信息量公式:I(x0)=−log(p(x0)) ,代表概率越小的事件信息量越大,发生概率越小的样本越有价值

这里写图片描述

2.熵的定义

熵用来表示所有信息量的期望,也就是对所有样本发生概率的期望,其本质是对概率的期望

3.相对熵(KL散度)

      相对熵又称KL散度,如果我们对于同一个随机变量 x 有两个单独的概率分布 P(x) 和 Q(x),我们可以使用 KL 散度(Kullback-Leibler (KL) divergence)来衡量这两个分布的差异,即:如果用P来描述目标问题,而不是用Q来描述目标问题,得到的信息增量。换一句话说,对于同一个数据集,真实数据分布的概率密度不变,我们用另外一个分布替换真实分布后得到的熵的差异,也就是两个分布对应的信息量的差异。同一个样本的概率差异越大差值越大。

 

KL散度的计算公式:

其中n为事件的所有可能性。KL散度的值越小,表示q分布和p分布越接近

4.交叉熵

对KL散度公式变形:

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

对交叉熵的进一步理解:

假如label标签p(x)的都是{0, 1},通常计算loss前,q(x)是经过softmax或者sigmoid归一化后分布在(0,1)之间的预测值,取-log q(x)之后,全部分布在(0, +∞)。

越是接近真值label=1的预测值,-log q(x)越接近0,对应的loss = -p(x) * logq(x) 也就越小;越是接近真值label=0的预测值,-log q(x)越接近+∞,对应的loss =  -p(x) * logq(x) = 0。

这也是torch中NLLLoss的原理:

Pytorch详解NLLLoss和CrossEntropyLoss_豪哥123的博客-CSDN博客_nll loss

二分类的理解:

只有两种类别:[0, 1],对于任何一个样本,真值为p,如果网络预测为0的概率是q, 则预测为1的概率为 1-p,对总共两个类别[0, 1]的交叉熵loss = -p log(q) - (1-p) log(1-q)

如果样本真值为0,则对应loss = -0 * log(q) - (1-0) *log(1-q) = -log(1-q); 如果真值为1,则对应loss = -1* log(q) - (1-1) * log(1-q) = -log(q)

三分类及更多分类也是类似的公式。

Understanding Categorical Cross-Entropy Loss, Binary Cross-Entropy Loss, Softmax Loss, Logistic Loss, Focal Loss and all those confusing names

machine learning - The cross-entropy error function in neural networks - Data Science Stack Exchange

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值