Focal loss自从提出后,很多目标检测框架都采用了focal loss,那么它优秀在哪里呢?我们今天一起来看看这篇何凯明大神的paper。首先是这篇文章的motivation,这篇文章是为了解决样本类别不平衡问题提出的一个方法,在这篇文章前的解决此问题的方法有些过于复杂,有些仅仅是简单重采样方法,效果对于参数的选择有些许敏感等,因此提出了该方法。
我们可以先了解一下目标检测中的两种不平衡问题:样本数量不平衡,样本分类难度不平衡。如果仅仅是样本数量不平衡,那么为样本加入一个固定权值就能解决这个问题。而分类难度不平衡问题需要事先知道分类难度,一般先训练一个模型,通过预测概率来衡量分类难度,然后来调节模型的权重,如果了解boost算法的人就知道这个方法。
那么现在我们开始学习focal loss吧,相信学习过深度的人都知道交叉熵损失函数吧,那么我们从二分类交叉熵损失函数开始吧(binary cross entropy loss):
那么focal loss 是如何解决这个不平衡问题的呢?它用一种根据预测结果自动调节权重的方式来解决了这个问题:
其中(1-P)和P都为在交叉熵损失函数上加入的权重,α为一个超参数,调节权重曲线。当未加入权重时,所有的样本的权重都相等,通过统计,在这种情况下损失函数被易分样本主导,因此权值的导数也被易分样本主导,那么模型就很难关注到不易分辨样本。如果我们设置α为2,那么当一个正样本的置信度为0.9时,它的权重就是不加入权重时的损失函数的0.01倍;而如果置信度为0.1时,那么这应该是一个难分辨的样本,它贡献的损失就是不加入权重时的损失函数的0.81倍,几乎不受到影响,这就是focal loss的主要思想。
其实,在focal loss提出之前,就有很多的方法提出来解决样本不平衡问题,但是几乎都是通过重采样与多个级联(两阶段方法)的方式来解决的,但是这些方法会导致模型复杂度上升等问题。而focal loss较为简单,并且可以增加模型的泛化效果,这感觉起来有点像是soft-svm。SVM是一种稀疏学习方法,只有在支持面上的样本才会对决策模型有影响,而类似focal loss,它的易分样本损失权重较低,难分样本权重更高(此处的soft-svm是我自己根据其他概念自己提出的一个词,我并未做任何研究,也不知是否有这种方法)。
但在刚开始训练时,参数是随机的,模型还不能分辨出难分样本与易分样本。因此,此时目标检测中不平衡的问题非常严重,损失函数会比较大,会造成一定的训练困难。为了解决这个问题,可以为样本加入先验(正负样本数量比),进行样本数量的平衡,赋予负样本较小的权重。
本文暂时没有评论,来添加一个吧(●'◡'●)