Focal loss和Label smoothing
2019-04-15 本文已影响0人
VanJordan
Focal loss
-
目的是对于
well trained examples
减少他的loss
,在一个负样本比正样本多很多的情况,典型的就是目标检测中的框,一般目标框才十个,而背景框有上千个,如果还是采用原来的cross entropy
的话有这样一个问题,对于背景框哪怕已经学习的非常好了就假设分类器的置信度有0.8
吧,那么一个框对应的loss
是0.2
,1000
个框对应的总的loss
就是200
,而目标还不能很好的分类假设分类器的置信度是0.1
那么10
个目标对应的loss
是30
,显然背景框对应的loss
占主导地位,因此会让分类器将什么不是背景框判断的更准,而目标框因为缺乏loss
导致学习速率明显跟不上背景框的学习速率。
-
focal loss
是对分类中标准的损失函数交叉熵进行改造,我们可以先看一下标准的交叉熵损失函数,y
是类别,p
是判别概率
-
focal loss
做的事情是对交叉熵函数进行scale
,做法是加入一个系数因此让loss
变得陡峭,就是如果分类器置信度很大的样本的loss非常小,趋近于0,因此可以让分类器的学习目的集中在一些难分的样例上。下面的蓝线是当lambda
为2
(论文中效果最好的超参数)
-
一个启示:就是没有必要让分类器的置信度过高,应该设置一个阈值如果分类器的置信度高于一个阈值那么就不让分类器继续学习这个目标了,因为置信度从
0.9-0.999
的可能让其他类别学习的不好,这个感觉和SVM
有点像,尽量让他margin
大一点,这样泛化能力才强,总体获得的收益也是最大的。
Label smoothing
-
Label smoothing
是将one-hot
向量中的1
拿出0.1
(超参数)然后均匀的分给其他类别,然后在用交叉熵得到损失函数,这个的出发点是人工标记中许多数据虽然标记是1
但是他们的效用不是一样的,但是感觉本质和local loss
一模一样啊。