Focal Loss本质
Focal Loss本质上解决了分类问题中类别不均衡、分类难度差异的一个损失函数,使得训练更加聚焦在困难样本上。
Focal Loss的发展演化
Focal Loss是从二分类问题出发,同样的思想可以迁移到多分类问题上。
标准交叉熵
我们知道二分类问题的标准loss是交叉熵:
对于二分类问题我们也几乎适用sigmoid激活函数,所以上面的式子可以转化成:
这里有。
作者在论文中给出的式子如下:
其中是真实标签,是预测概率。
我们再定义:
上面的交叉熵的式子可以转换成:
均衡交叉熵
最初论文中引入了均衡交叉熵函数:
要对类别不均衡问题对loss的贡献进行一个控制,即加上一个控制权重即可,最初作者的想法即如下这样,对于属于少数类别的样本,增大即可。但这样有一个问题,它仅仅解决了正负样本之间的平衡问题,并没有区分易分/难分样本。
为什么上述公式只解决正负样本不均衡问题
因为增加了一个系数,跟的定义类似,当label=1的时候 ;当label=-1的时候,,的范围也是。因此 可以通过设定的值(如果这个类的样本数比这个类的样本数少很多,那么会取来增加这个类的样本的权重)来控制正负样本对总的loss的贡献。
Focal Loss
上面的交叉熵是硬截断型的loss,我们通常设定一个阈值,超过这个阈值我们就不在更新参数了。这样的话下一次更新训练这个预测值坑又变回小于阈值了,这样会使得训练变得困难,迭代次数大大增加。
所以交叉熵为基础,对loss进行软化,我们不只是要告诉模型正样本的预测值大于阈值就不更新了,而是要告诉模型当其大于阈值后只需要保持就好。
硬截断致命的缺陷是loss的权重因子不可导,对梯度没有任何帮助,软化就是把一些本来不可导的函数用一些可导函数来近似,数学角度叫“光滑化”。
Focal Loss雏形
所以伟大的Focal Loss雏形就出现了:
用于平衡难易样本的比例不均,起到了对的放大作用。减少易分样本的损失,使模型更关注于困难易错分的样本。例如当时,模型对于某正样本预测置信度为,这时,也就是FL值变得很小;而当模型对于某正样本预测置信度为0.3时,,此时它对loss的贡献就变大了。当时变成交叉熵损失。
Focal Loss最终版本
为了应对正负样本不均衡的问题,在上面的式子中再加入平衡交叉熵的因子,用来平衡正负样本本身的比例不均,最终得到如下式子:
Focal Loss论文的作者给出的实验最佳取值为,。