从交叉熵(CE)到Focal Loss(FL)完整解析

本文分为两部分,第一部分总结了交叉熵的定义及推导思路,第二部分总结了Focal Loss(实质上是交叉熵的一种改进)的定义及基本性质。文中的CE指的是交叉熵CrossEntropyFL指的是Focal Loss

Reference:

1、https://adventuresinmachinelearning.com/cross-entropy-kl-divergence/

2、https://arxiv.org/abs/1708.02002

一、交叉熵

交叉熵是深度学习中很常见的一种Loss,下面分4步从最基础的信息量出发,直到给出交叉熵的定义,展示了交叉熵这个概念的渊源。

1、信息量

信息的内在含义是某个事件发生的"惊喜程度",比如该事件发生的概率为P,那么该事件包含的信息量为:

I(P)=-log(P)

一般而言,这里的log是自然对数,文章开始的参考1中提到了某些情况下这里的log可以是以2为底。当事件发生概率为0的时候,信息量是无穷大,而当概率是1的时候,板上订钉的事情,自然没有什么惊喜的,信息量就是0。

2、信息熵

信息熵是信息量的期望值,计算公式如下:

H(P)=-\sum_{i=1}^{n}P(x_{i})\times log(P(x_{i}))

从上面公式可以看出,熵就是事件所有可能发生的情况对应的信息量的加权求和(权重就是对应的概率)。以投硬币为例,只有两种可能性,正面和反面出现的概率都是0.5,那么投硬币的信息熵就是-0.5\times log(0.5)-0.5\times log(0.5)

信息熵本质上度量了一个单独的概率分布的性质。

3、KL散度(Kullback–Leibler divergence)

上面的信息熵度量一个概率分布的性质,而KL散度度量两个概率分布的相似程度,定义如下:

D_{KL}=\sum_{i=1}^{n}P(x_i)\times log(\frac{P(x_i)}{Q(x_i)})

两个概率分布越不相似,KL散度越大,两个概率分布越相似,KL越小,当概率分布P和Q完全相等的时候,KL散度等于0。KL散度是非负的,证明过程见 https://blog.csdn.net/root_clive/article/details/103941412

4、交叉熵(CrossEntropy,简称CE)

交叉熵在机器学习中经常作为分类任务的Loss,交叉熵可以从KL散度定义中导出。设定P是真实的概率分布,Q是预测的概率分布,对KL散度的公式进行变形:

\small D_{KL}=\sum_{i=1}^{n}P(x_i)\times log(\frac{P(x_i)}{Q(x_i)})=\sum_{i=1}^{n}P(x_i)\times log(P(x_i))-\sum_{i=1}^{n}P(x_i)\times log(Q(x_i))

\small =-H(P)-\sum_{i=1}^{n}P(x_i)\times log(Q(x_i))

可以看到KL散度由两部分组成,第一部分\small -H(P)是真实概率分布信息熵的相反数,第二部分就是交叉熵的定义,一般记为:

\small H(P,Q)=-\sum_{i=1}^{n}P(x_i)\times log(Q(x_i))

由于真实的概率分布是固定的,所以\small -H(P)值是固定不变的,在目标优化过程中可以忽略,因此交叉熵实际上也是对两个概率分布相似程度的度量。

当标签是onehot的情况下,例如真实概率分布P=[0,0,1,0,0],而经过softmax之后的预测分布为Q=[0.3,0.4,0.7,0.5,0.2],计算交叉熵的时候实际上只用了一个概率值,即\small H(P,Q)=-1\times log(0.7)。这里虽然只用了一个概率值,但是由于预测的概率是通过softmax计算的,所以这一个概率值随着优化变大,其他的概率值相应的就会变小,所以整体上还是实现了对整个概率分布进行优化的目标。因此在onehot情况下就可以将CE的公式简化为:

\small H(P,Q)=-log(Q(x_i))

其中下标\small i对应onehot向量中等于1的位置。

二、Focal Loss

实际数据很有可能会存在类别不平衡的情况,这时候交叉熵的效果就会受到限制,下面介绍的Focal Loss是在CE基础上进行了改进,解决了样本不平衡的问题,Focal Loss来自于论文"Focal Loss for Dense Object Detection"。

1、\small \alpha-balanced CE

这是最直接改善类别不平衡时CE效果的方法,实际上\small \alpha-balanced CE就是加权的交叉熵,公式如下:

\small CE(p_t)=-\alpha_t log(p_t)

这里的\small p_t就是类别t的预测概率值,上式就是给不同的类别计算Loss的时候增加了一个权重,样本稀少的类别权重高一些,这样在一定程度上可以改善模型效果。

2、Focal Loss(FL)

上面的加权CE只解决了不同类别的权重分配,例如某一个类别样本较少,那么就把该类别对应的权重设置高一些,但是对于easy和hard样本的区分就无能为力了,论文里说,Loss大部分来自简单的负样本并且梯度方向由这些样本主导,为了解决这个问题,文章提出了下面的Focal Loss:

\small FL(p_t)=-(1-p_t)^{\gamma} log(p_t)

上面式子中的\small \gamma是超参数,如果\small \gamma=0,那么FL就和CE等价了。当某一个样本预测错误的时候,概率\small p_t很小,那么FL的加权部分就很接近1,该样本对Loss的贡献就不受惩罚。如果预测已经很成功,概率\small p_t很接近1,那么加权部分就很接近于0,该样本对Loss的贡献就很小,这就是一种困难样本挖掘的思路。

3、将\small \alpha-balanced CE和FL结合在一起

实际中使用的是将上面两种对抗样本不平衡的方法结合在一起,公式如下:

\small FL(p_t)=-\alpha_t (1-p_t)^{\gamma} log(p_t)

这个式子综合了上述的优点,不再赘述。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值