©PaperWeekly 原创 · 作者|苏剑林

单位|追一科技

研究方向|NLP、神经网络

类别不平衡问题,也称为长尾分布问题,在之前的文章里已经有好几次相关讨论了,比如从 loss 的硬截断、软化到 focal loss [1] 、将“softmax+交叉熵”推广到多标签分类问题、通过互信息思想来缓解类别不平衡问题。

对于缓解类别不平衡,比较基本的方法就是调节样本权重,看起来“高端”一点的方法则是各种魔改 loss了(比如 Focal Loss、Dice Loss、Logits Adjustment 等),本文希望比较系统地理解它们之间的联系。

▲长尾分布:少数类别的样本数目非常多,多数类别的样本数目非常少。

从光滑准确率到交叉熵

这里的分析主要以 sigmoid 的 2 分类为主,但多数结论可以平行推广到 softmax 的多分类。设 x 为输入, 为目标, 为模型。理想情况下,当然是要评测什么指标,我们就去优化那个指标。对于分类问题来说,最朴素的指标当然就是准确率,但准确率并没有办法提供有效的梯度,所以不能直接来训练。

为此,我们一个光滑化的指标。从之前的文章函数光滑化杂谈:不可导函数的可导逼近 [2] ,准确率的光滑化近似是:

其中 是训练数据集合。所以按道理,我们应该以 为最小化的目标。但事实上,直接优化这个目标的效果并不好,更好的是去优化交叉熵:

这就有点耐人寻味了,明明 更接近我们的评测指标,为什么用交叉熵反而对评测指标更有利呢?

这需要用梯度来解释。对于 ,它通常是经过了 sigmoid 激活的,也就是 ,其中 ,它的导数 ,而 就是我们通常称的“logits”。

假设 y 是 1,那么对应的 就是 ,它的梯度是:

刚才说了,y 是 1,所以训练目标是 ,因此我们期望当 接近于0时(误差较大),会带来一个较大的梯度,当 接近于 1 时(误差较小),会带来一个较小的梯度。

但上述 显然不是如此,它的调节项 在 0.5 处取到最大值,至于 0 和 1 都是最小值,这就意味着如果误差太大了,梯度反而也小,这就带来优化效率的低下,最终导致整体效果不好。相反,对于交叉熵来说,有:

刚好把梯度里边带来负面作用的 因子去掉了,因此优化效率更高,最终效果也好些。上述分析针对的是 y=1,如果 y=0,那么结论也是一样的。

从光滑F1到加权交叉熵

从这个过程中,我们可以感觉到,对 loss 的各种魔改,本质上来说都只是在调整梯度,得到更合理的梯度,我们就能实现更有效的优化,得到更好的模型。此外,我们再思考上述转换过程,本来近似目标的梯度是 ,结果 效果更好。

如果我们不去仔细分析背后的原因,直接把 当作一个“公理”来使用,那能否成立呢?会不会带来一些有意思的结果呢?

举个例子,当负样本远远多于正样本时,我们的评测指标通常都不再是准确率了(不然直接全部输出 0 准确率就很高了),我们通常关心正类的 F1,而 F1 的直接优化也是不容易的,所以我们也需要一个光滑版,文章函数光滑化杂谈:不可导函数的可导逼近 [3] 同样也给出了结果:

所以我们的最小化目标原本是 。根据上述“公理”,我们先直接对 求梯度:

其中 是整体的一个缩放因子,我们主要关心的还是每个样本的梯度,所以结果是:

根据 “公理”(负样本则是 ),我们得到最后的梯度为:

这等价于优化目标:

的梯度(其中 不求梯度),所以这其实就是用 调节正样本的交叉熵,用 调节负样本的交叉熵。

一开始 F1 值会比较小,所以模型集中精力在优化正样本,后期 F1 比较大后,模型反而集中精力在优化负样本了,这其实正体现了 F1 指标的特殊性:对于 F1 来说,既要尽可能挖掘出正样本,但是负样本也不能错得太多,所以不大适合设置固定不变的调节因子,而是需要动态的调节。

从扩大边界到Logits调整

其实无论评测指标是什么,我们肯定都是希望每一个样本都尽可能预测对。问题在于,样本数目比较少的类别,因为学习得不够充分,所以泛化性能不会太好。

让我们从几何角度来思考这个问题。理想情况下,在编码空间里边,每一类样本都占据着自己的一个“地盘”,不同类的“地盘”是互不相交的。

样本数目较少的类别泛化性能不大好,主要就体现为其类别所占据的“地盘”比较小,而且往往还会受到类别数目较多的样本的“打压”,因此“生存”几乎都成了问题,更不用说照顾到训练集没有出现过的新样本了。

怎么解决这个问题呢?其实也很形象,如果样本数目少的类别,里边的样本个个都是“大佬”,一个打十个的那种,那么就算样本少,也能在“地盘之争”中不落下风。让我们考虑一个 n 分类问题,某个样本的编码向量为 ,类别向量为 ,那么该样本与类别向量的相似度,一般用内积 来度量。

假设每个样本能占据半径为 的“地盘”,这样就是说,满足 的任意z都算是该样本的编码向量,这也就意味着,满足这个条件的任意 z,它跟 的相似度都应该大于它跟其他类别的相似度。

现在我们考虑:

由于 ,所以显然有:

所以,为了达到“ z 跟 的相似度都应该大于它跟其他类别的相似度”这个目的,只需要“ z 跟 的最小相似度都应该大于它跟其他类别的最大相似度”,因此我们的优化目标变为:

可以看到,这其实就相当于 am-softmax、circle loss 等带有 margin 的 softmax 变种,具体形式其实不重要,只需要为类别小的类设置更大的 margin 就好(样本少的类别每个样本都更“能打”)。那怎么设计每个类的 margin 呢?

之前的文章通过互信息思想来缓解类别不平衡问题就提供了一个方案:,这里的 p(y) 是先验分布,那么就有:

这样我们就联系到了 logit adjustment loss 了,或者说给 logit adjustment loss 提供了一种几何直观理解。本质上来说,logit adjustment 也是在调节权重,只不过一般的调节权重是在损失函数的 之后调整,而 logit adjustment 则是在 之前调整。

感觉上可以小结一下了

本文就类别不平衡现象及其对策做了一些思考,主要是希望通过一些相对直观的引导,来揭示一些魔改 loss 的思路,从中我们也可以发现,其实这些方案本质上都算是在调节样本权重或者类权重。本文的分析思路相对来说比较散漫,基本上是笔者的头脑风暴内容,如果错漏之处,请读者见谅并指出。

参考文献

[1] https://kexue.fm/archives/4733

[2] https://kexue.fm/archives/6620

[3] https://kexue.fm/archives/6620

更多阅读

#投 稿 通 道#

 让你的论文被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得技术干货。我们的目的只有一个,让知识真正流动起来。

???? 来稿标准:

• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向)

• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接

• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志

???? 投稿邮箱:

• 投稿邮箱:hr@paperweekly.site

• 所有文章配图,请单独在附件中发送

• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通

????

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

关于PaperWeekly

PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。

再谈类别不平衡问题:调节权重与魔改Loss的综合分析相关推荐

  1. 利用类权重来改善类别不平衡

    作者|PROCRASTINATOR 编译|VK 来源|Analytics Vidhya 概述 了解类权重优化是如何工作的,以及如何在logistic回归或任何其他算法中使用sklearn实现相同的方法 ...

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

    作者 | 图像所浩南哥 来源 | CSDN博客 论文名称:< Focal Loss for Dense Object Detection > 论文下载:https://arxiv.org/ ...

  3. 再谈RetinaNet

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自知乎,经作者授权转载,请勿二次转载. https://zhuanlan.zhihu.com/p/68786098 Paper link: ht ...

  4. retinanet 部署_再谈RetinaNet

    我爱计算机视觉 标星,更快获取CVML新技术 本文转载自知乎,经作者授权转载,请勿二次转载. https://zhuanlan.zhihu.com/p/68786098 Paper link: htt ...

  5. Meta-Weight-Net[NIPS‘2019]:关于元学习/域自适应(meta learning/domain adaptation)优化噪声标签与类别不平衡的问题

    目录 研究背景 一.为什么存在类别不平衡现象? 二. Meta-Weight-Net[NIPS'2019] 1.Focal Loss 2.self-pacd learning 3.Meta-Weigh ...

  6. 【CV】RetinaNet:使用二分类类别不平衡损失 Focal Loss 实现更好的目标检测

    论文名称:Focal Loss for Dense Object Detection 论文下载:https://arxiv.org/abs/1610.02357 论文年份:ICCV 2017 论文被引 ...

  7. CVPR 2021|一个绝妙的想法:在类别不平衡的数据上施展半监督学习

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨kid丶@知乎(已授权) 来源丨https://zhuanla ...

  8. 【图像分类】 关于图像分类中类别不平衡那些事

    欢迎大家来到图像分类专栏,类别不平衡时是很常见的问题,本文介绍了类别不平衡图像分类算法的发展现状,供大家参考学习. 作者&编辑 | 郭冰洋 1 简介 小伙伴们在利用公共数据集动手搭建图像分类模 ...

  9. 如何解决NLP分类任务的11个关键问题:类别不平衡低耗时计算小样本鲁棒性测试检验长文本分类 JayLou娄杰

    原文链接:https://zhuanlan.zhihu.com/p/183852900 欢迎关注<高能AI>公众号- 声明:文中观点谨代表笔者个人立场,盲目搬运有风险- 在2020这个时间 ...

最新文章

  1. 根据keyName(如:result.data.name),无限深度遍历获取keyValue
  2. Java-线程间通信小结
  3. SpringBoot集成Druid不支持多条SQL
  4. glassfish_RIP GlassFish –感谢所有的鱼。
  5. excel的宏与VBA入门——代码调试
  6. Whoops, looks like something went wrong.
  7. Exchange系列之exchange2003sp2部署
  8. HTML之一天学会html(常用标签+网页架构)
  9. SCP,两台机器互相使用拷贝
  10. java/php/net/python高校教材管理系统设计
  11. C++:关于类以及h/cpp文件的一些实用知识
  12. 大学计算机教师招聘试讲什么,应聘高校教师面试,试讲注意事项
  13. Word查找和替换通配符(完全版)
  14. 阿里最强 Python 自动化工具开源了
  15. 写一个程序输入一个国家的国家名,输出该国的首都名。
  16. 笔记本屏幕30hz_扩展显示-(多屏幕)三屏显示方案全攻略
  17. 1.Java基础_Java入门--001
  18. 入门后指针进阶习题深度分析
  19. 用matlab实现理查森外推算法,Matlab数值积分(2)
  20. 关键链 (项目管理方法)

热门文章

  1. python history没有定义_python AttributeError:'Tensor'对象没有属性'_keras_history'_python_酷徒编程知识库...
  2. 《转》探讨:3D透视投影变换详解-兼谈视平面和屏幕的宽高比问题
  3. PCL中有哪些可用的PointT类型(4)
  4. [POJ2420]A Star not a Tree?(模拟退火)
  5. Java 并发:Executor ExecutorService ThreadPoolExecutor
  6. 会计日历-自动生成脚本
  7. 【转载】css3 content 生成内容
  8. splitter 使用
  9. TQ210裸机编程(2)——LED流水灯
  10. exe文件添加为服务