Anchor Loss: Modulating Loss Scale based on Prediction Difficulty

一篇比较有意思的文章,用来增强模型对易混淆样本的学习,有别于传统的CE和Focal Loss。
文章链接:arxiv
code: github

why need this
理由很简单,我们在做类似分类任务的时候,模型最终往往都会输出一个概率,我们会在输出的所有类别的概率中挑选其中最大的一个作为模型的输出。大部分情况下这种做法是没有问题的,但对于一些易混淆的任务来说,例如图片分类中一些看着相似但类别不一致的图片,人体姿态估计中两个相对的左右关节,这些都会对模型的输出造成一定的困扰。如文章中图1所示:Anchor Loss: Modulating Loss Scale based on Prediction Difficulty_第1张图片
对于人体姿态估计来说,我们想要识别出左膝盖点,但模型在这个分类的的输出上,除了左膝盖处响应值比较大之外,右膝盖出同样响应值也很大;对于图像分类任务来说,上图是一个bottle,但在can(罐头)类别响应值也很大。所以就会有个问题,虽然真正label的概率已经很大,但其它类别的概率同样很大,这就会造成模型只取最大值时发生错误。Anchor Loss就是要对类别预测错误但分值很高的时候,给予更大的惩罚。

How to do
Anchor Loss: Modulating Loss Scale based on Prediction Difficulty_第2张图片
上图中,三个图的意思分别为:

  1. 当设定的anchor probability为0.1时,可以看到如果其它类别的预测概率(probability of background class)大于0.1时,AL会比CE或FL有更大的loss值
  2. 当设定的anchor probability为0.5时,当其它类别的概率小于0.5时,AL的loss会比CE小但比FL大,当超过0.5的时候,AL的loss就会急速上升,对该项给予更大的惩罚
  3. 当设定的anchor probability为0.9时,说明网络在概率学习的还不错,属于easy sample,AL和CE及FL都差不多

Anchor Loss的公式:
Anchor Loss: Modulating Loss Scale based on Prediction Difficulty_第3张图片
modulator部分就是AL提出的改进点,我们可以根据论文里的附录来详细分析这个loss公式:Anchor Loss: Modulating Loss Scale based on Prediction Difficulty_第4张图片

  1. 对于正样本来说,将anchor probability设置为模型在其它所有负样本处预测的值最大的那个,即为 q p o s {q_{pos}} qpos,所以如果正样本处预测的概率值很小,即 p {p} p很小,那么AL就会惩罚它,使其产生更大的loss:Anchor Loss: Modulating Loss Scale based on Prediction Difficulty_第5张图片
  2. 对于负样本来说,将anchor probability设置为模型在正样本处预测的概率值,即 q n e g {q_{neg}} qneg,如果模型在负样本处预测的概率值比anchor probability还要大,那么AL就会惩罚它,使其产生更大的loss:在这里插入图片描述
  3. 正负样本惩罚和在一起,就是最终的AL:Anchor Loss: Modulating Loss Scale based on Prediction Difficulty_第6张图片

作者在github开源的代码也是按照这个思路来实现的。

ref
https://blog.csdn.net/stesha_chen/article/details/103930922

你可能感兴趣的:(深度学习)