专栏首页机器学习炼丹术五分钟学会:焦点损失函数 FocalLoss 与 GHM

五分钟学会:焦点损失函数 FocalLoss 与 GHM

1 focal loss的概述

焦点损失函数 Focal Loss(2017年何凯明大佬的论文)被提出用于密集物体检测任务。

当然,在目标检测中,可能待检测物体有1000个类别,然而你想要识别出来的物体,只是其中的某一个类别,这样其实就是一个样本非常不均衡的一个分类问题。

而Focal Loss简单的说,就是解决样本数量极度不平衡的问题的。

说到样本不平衡的解决方案,想必大家是知道一个混淆矩阵的f1-score的,但是这个好像不能用在训练中当成损失。而Focal loss可以在训练中,让小数量的目标类别增加权重,让分类错误的样本增加权重

先来看一下简单的二值交叉熵的损失:

  • y’是模型给出的预测类别概率,y是真实样本。就是说,如果一个样本的真实类别是1,预测概率是0.9,那么
-log(0.9)

就是这个损失。

  • 讲道理,一般我不喜欢用二值交叉熵做例子,用多分类交叉熵做例子会更舒服。

【然后看focal loss的改进】:

这个增加了一个

(1-y')^\gamma

的权重值,怎么理解呢?就是如果给出的正确类别的概率越大,那么

(1-y')^\gamma

就会越小,说明分类正确的样本的损失权重小,反之,分类错误的样本的损权重大


【focal loss的进一步改进】:

这里增加了一个

\alpha

,这个alpha在论文中给出的是0.25,这个就是单纯的降低正样本或者负样本的权重,来解决样本不均衡的问题

两者结合起来,就是一个可以解决样本不平衡问题的损失focal loss。


【总结】:

\alpha

解决了样本的不平衡问题;

\beta

解决了难易样本不平衡的问题。让样本更重视难样本,忽视易样本。

  1. 总之,Focal loss会的关注顺序为:样本少的、难分类的;样本多的、难分类的;样本少的,易分类的;样本多的,易分类的。

2 GHM

  • GHM是Gradient Harmonizing Mechanism。

这个GHM是为了解决Focal loss存在的一些问题。

【Focal Loss的弊端1】让模型过多的关注特别难分类的样本是会有问题的。样本中有一些异常点、离群点(outliers)。所以模型为了拟合这些非常难拟合的离群点,就会存在过拟合的风险。

2.1 GHM的办法

Focal Loss是从置信度p的角度入手衰减loss的。而GHM是一定范围内置信度p的样本数量来衰减loss的。

首先定义了一个变量g,叫做梯度模长(gradient norm)

可以看出这个梯度模长,其实就是模型给出的置信度

p^*

与这个样本真实的标签之间的差值(距离)。g越小,说明预测越准,说明样本越容易分类。

下图中展示了g与样本数量的关系:

【从图中可以看到】

  • 梯度模长接近于0的样本多,也就是易分类样本是非常多的
  • 然后样本数量随着梯度模长的增加迅速减少
  • 然后当梯度模长接近1的时候,样本的数量又开始增加。

GHM是这样想的,对于梯度模长小的易分类样本,我们忽视他们;但是focal loss过于关注难分类样本了。关键是难分类样本其实也有很多!,如果模型一直学习难分类样本,那么可能模型的精确度就会下降。所以GHM对于难分类样本也有一个衰减。

那么,GHM对易分类样本和难分类样本都衰减,那么真正被关注的样本,就是那些不难不易的样本。而抑制的程度,可以根据样本的数量来决定。

这里定义一个GD,梯度密度

GD(g)=\frac{1}{l(g)}\sum_{k=1}^N{\delta(g_k,g)}
GD(g)

是计算在梯度g位置的梯度密度;

\delta(g_k,g)

就是样本k的梯度

g_k

是否在

[g-\frac{\epsilon}{2},g+\frac{\epsilon}{2}]

这个区间内。

l(g)

就是

[g-\frac{\epsilon}{2},g+\frac{\epsilon}{2}]

这个区间的长度,也就是

\epsilon

总之,

GD(g)

就是梯度模长在

[g-\frac{\epsilon}{2},g+\frac{\epsilon}{2}]

内的样本总数除以

\epsilon

.

然后把每一个样本的交叉熵损失除以他们对应的梯度密度就行了。

L_{GHM}=\sum^N_{i=1}{\frac{CE(p_i,p_i^*)}{GD(g_i)}}
CE(p_i,p_i^*)

表示第i个样本的交叉熵损失;

GD(g_i)

表示第i个样本的梯度密度;

2.2 论文中的GHM

论文中呢,是把梯度模长划分成了10个区域,因为置信度p是从0~1的,所以梯度密度的区域长度就是0.1,比如是0~0.1为一个区域。

下图是论文中给出的对比图:

【从图中可以得到】

  • 绿色的表示交叉熵损失;
  • 蓝色的是focal loss的损失,发现梯度模长小的损失衰减很有效;
  • 红色是GHM的交叉熵损失,发现梯度模长在0附近和1附近存在明显的衰减。

当然可以想到的是,GHM看起来是需要整个样本的模型估计值,才能计算出梯度密度,才能进行更新。也就是说mini-batch看起来似乎不能用GHM。

在GHM原文中也提到了这个问题,如果光使用mini-batch的话,那么很可能出现不均衡的情况。

【我个人觉得的处理方法】

  1. 可以使用上一个epoch的梯度密度,来作为这一个epoch来使用;
  2. 或者一开始先使用mini-batch计算梯度密度,然后模型收敛速度下降之后,再使用第一种方式进行更新。

本文分享自微信公众号 - 机器学习炼丹术(gh_2df5b9e311b9),作者:陈亦新

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【小白学AI】八种应对样本不均衡的策略

    分类(classification)问题是数据挖掘领域中非常重要的一类问题,目前有琳琅满目的方法来完成分类。然而在真实的应用环境中,分类器(classifier...

    机器学习炼丹术
  • 【评价指标】详解F1-score与多分类MacroF1&MicroF1

    首先,要背住的几个概念就是:accuracy, precision, recall, TP,FP,TN,FN

    机器学习炼丹术
  • 【评价指标】详解F1-score与多分类F1

    首先,要背住的几个概念就是:accuracy,precision,recal, TP,FP,TN,FN

    机器学习炼丹术
  • 【小白学AI】八种应对样本不均衡的策略

    分类(classification)问题是数据挖掘领域中非常重要的一类问题,目前有琳琅满目的方法来完成分类。然而在真实的应用环境中,分类器(classifier...

    机器学习炼丹术
  • 机器学习中样本比例不平衡的处理方法

    原创干货文章第一时间送达! 推荐阅读时间:5min~12min 主要内容:机器学习中样本比例不平衡的处理方法 在机器学习中,常常会遇到样本比例不平衡的问题,如对...

    企鹅号小编
  • CVPR2020 | 京东AI研究院提出统一样本加权网络,提升通用目标检测性能

    论文地址:https://arxiv.org/pdf/2006.06568.pdf

    AI算法修炼营
  • 机器学习常用性能度量中的Accuracy、Precision、Recall、ROC、F score等都是些什么东西?

    为什么有了Accuracy还要提出Precision的概念呢?因为前者在测试样本集的正负样本数不均衡的时候,比如正样本数为1,负样本数为99时,模型只要每次都将...

    程序员一一涤生
  • 机器学习常用性能度量中的Precision、Recall、ROC、F score等都是些什么东西?

    为什么有了Accuracy还要提出Precision的概念呢?因为前者在测试样本集的正负样本数不均衡的时候,比如正样本数为1,负样本数为99时,模型只要每次都将...

    程序员一一涤生
  • RS Meet DL(75)-考虑CPM的评估方法csAUC

    在点击率预估中,AUC是最常用的评估指标,这一指标衡量的是任取一个正例和负例,正例的得分高于负例的概率。那么点击率预估中,正例和负例分别是什么呢?很显然,正例就...

    石晓文
  • 剖析Focal Loss损失函数: 消除类别不平衡+挖掘难分样本 | CSDN博文精选

    论文名称:《 Focal Loss for Dense Object Detection 》

    AI科技大本营

扫码关注云+社区

领取腾讯云代金券