交叉熵和相对熵(KL散度)

本文详细探讨了熵、相对熵(KL散度)与交叉熵在机器学习中的应用,重点解释了为何分类任务中多采用交叉熵作为损失函数,而非KL散度或距离相关方法。讨论了KL散度的局限性、交叉熵的优势以及在sigmoid激活函数场景下的梯度问题解决。
摘要由CSDN通过智能技术生成

一、熵


二、相对熵(KL散度)

 


P表示样本的真实分布,Q表示模型所预测的分布,那么KL散度就可以计算两个分布的差异,也就是Loss损失值。Q的分布越接近P(Q分布越拟合P),那么散度值越小,即损失值越小。

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

不对称;
不满足三角不等式。

 

三、交叉熵


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

 

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

在这里插入图片描述

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

四、目前分类损失函数为何多用交叉熵,而不是KL散度,也不是直接用距离相关的均方差?


不使用KL散度:
由于KL散度中的前一部分−H(y)不变(目标分布的熵为常数),故在优化过程中,只需要关注交叉熵就可以了。但是如果目标分布是有变化的(如同为猫的样本,不同的样本,其值也会有差异),那么就不能使用交叉熵。例如蒸馏模型的损失函数就是KL散度,因为蒸馏模型的目标分布也是一个模型,该模型针对同类别的不同样本,会给出不同的预测值(如两张猫的图片a和b,目标模型对a预测为猫的值是0.6,对b预测为猫的值是0.8)。

不直接用距离相关的均方差:
假设神经网络的最后一层激活函数为sigmoid,它的两头异常的平,也就是说在那些地方的导数接近于0。而反向传播是需要求导的,用了均方差损失函数之后求导结果包含y(y-1) ,y接近于0或者1的时候都趋于0,会导致梯度消失,网络训练不下去(梯度弥散)。但如果用相对熵衍生出来的交叉熵作为损失函数则没有这个问题。因此虽然相对熵的距离特性不是特别好,但总归好过直接梯度消失玩不下去,因此很多用sigmoid作为激活函数的神经网络还是选择了用相对熵衍生出来的交叉熵作为损失函数。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值