数据分布——长尾分布的处理

news2024/11/17 9:48:46

前言

长尾分布在分类任务中会提到这个名,这是因为长尾分布这个现象问题会导致在训练过程中会出现出错率高的问题,影响了实验结果。

这里要说的是,长尾分布是一种现象,有的地方说是一种理论或定律,我感觉这样说不太确切,因为长尾分布并非是一种普遍现象,不能将所有的数据分布或者现象都强加于长尾分布这个概念上。

这个概念是对于IT行业来说比较常见的,比如电商的销售现象——常见的产业巨头能够在实体产业上独树一帜,但是电商的发展,导致了很多小众或者说不太常见的商品的销售量很可能大于或者等于原来产业巨头的销售产量,这就是在IT产业上的长尾分布的现象。

在机器学习和视觉识别的实际应用过程中,长尾分布在某种程度上可以说是比正态分布更加广泛存在的一种自然分布,现实中主要表现在少量个体做出大量贡献(少量类别的样本数占据大量样本比例),人们经常提到的“二八定律”(Pareto法则)就是长尾分布的形象概括。

对于长尾分布这个现象在图像或者视觉等任务中是经常遇到的。

image-20211115144340223

现在也出现了NLP的领域,这里我想提一下我看到的一个名次——齐夫定律(Zipf's Law).这个是应用在自然语言处理当中的,主要是讲到了:在自然语言的语料库里,一个单词出现的频率与它在频率表里的排名成反比。所以,频率最高的单词出现的频率大约是出现频率第二位的单词的2倍,而出现频率第二位的单词则是出现频率第四位的单词的2倍。这个定律被作为任何与幂定律概率分布有关的事物的参考。

之所以提到这个齐夫定律是因为它和长尾分布一样,都是关于幂定律概率分布的一种分布,在自然语言处理中,也说明了经常出现的词或者字也很容易对模型产生我们不想要的结果。

在Brown语料库中,“the”、“of”、“and”是出现频率最前的三个单词,其出现的频数分别为69971次、36411次、28852次,大约占整个语料库100万个单词中的7%、3.6%、2.9%,其比例约为6:3:2。大约占整个语料库的7%(100万单词中出现69971次)。满足齐夫定律中的描述。仅仅前135个字汇就占了Brown语料库的一半。

至此,可以看出,对数据做一下平衡处理,是机器学习中需要考虑的一个问题了。

处理方法(相关工作)

下面的词汇和处理方法的划分来自于这篇文章:【Bag of Tricks for Long-Tailed Visual Recognition with Deep Convolutional Neural Networks】,其中里面说到的方法都是在CV方面上的应用,不过我认为这种现象也是可以迁移到其他的研究方向上的。

先说一下一些相关的词汇:

  • CE——交叉熵;

  • Imbalance factor——定义为数据集中数据量最大的类与数据量最小的类的比值;

  • CAM—— tailored for two-stage training and generates discriminative images by transferring foregrounds while keeping backgrounds unchanged.

  • These fine-tuning methods (Cao et al. 2019) can be divided into two sections:

    deferred re-balancing by re-sampling (DRS) and by re-weighting (DRW).DRS和DRW其实是两种训练方法,DRS是第一阶段使用 vanilla training schedule来训练,第二阶段使用re-sample来微调;而DRW在第二阶段使用re-weight来微调。

经典机器学习处理的方法

重采样法(Re-Sampling)

这里又分为两种方法——Over-Sampling和Under-Sampling

  • Over-Sampling,在训练的过程中多次采样数据集中数据量占比量较小的数据,使得这些数据在训练时被多次用到,从而缓解长尾数据分布的问题。
  • Under-Sampling,在训练中抛弃数据量占比较高的数据,从而达到各个类别数据量的平衡,以缓解长尾数据分布的问题。

【Bag of Tricks for Long-Tailed Visual Recognition with Deep Convolutional Neural Networks】一文中总结了一些方法:Class-balanced sampling、Random under-sampling、Progressively-balanced sampling等,本质上是修改了选择样本的概率P。

损失重加权(Re-Weight)

在训练模型的过程中,增加损失中长尾数据的权重,即是根据样本隶属类别“稀疏程度”来对该样本的损失进行加权,包含越多样本的类别通常会被分配更低的权重,从而平衡不同类别样本对损失函数的贡献。但该方法无法处理实际生活中的数据,一旦长尾数据分布很严重,该方法还容易引起优化的问题。

重新分配权重是根据不同类别的不同样本数决定其损失值的惩罚系数大小,比如对于少数样本类,其损失惩罚应该更大,通常的做法是为交叉熵损失加上各个类别的权重系数,该系数通常定义为类别样本数的倒数。

【Bag of Tricks for Long-Tailed Visual Recognition with Deep Convolutional Neural Networks】总结了相关的算法,本质上是通过修改了loss来达到平衡的效果。

为什么说上述两种方法有一定的效果呢?

在《BBN: Bilateral-Branch Network with Cumulative Learning for Long-Tailed Visual Recognition》一文中提到这样的常见方法虽然在分类效果上很好,但是在表征能力上就不是很好,原文内容如下:

We firstly discover that these rebalancing methods achieving satisfactory recognition accuracy owe to fifier learning of deep networks. However, at the same time,they will unexpectedly damage the representative ability of the learned deep features to some extent.

这也就是说这样的平衡方法在一定程度上是损失了数据的特征,也即表示特征的能力下降了:

In this paper,we reveal that the mechanism of these strategies is to signifificantly promote classififier learning but will unexpectedly damage the representative ability of the learned deep features to some extent.

具体来说的效果如下图:

image-20211115150424481

从图中可以看出,在平衡之后的数据特征开始分散了。

进一步的实验分析得到了下图的数据:

image-20211115150735637

两个图代表了两个数据集,这里就以左图为例子说一下这两张图说明了什么:

  • 首先,作者为了方便证明,将训练的方法分为了两个阶段:
    • representation learing,也就是特征提取器的训练过程(FP和BP阶段,不包含全联接层);
    • classifer learning,也就是分类器的训练阶段(最后的全联接层);
  • 分了三种训练方法——plain training(就是用交叉验证,这是分类常用的方法,PS:我认为这个交叉验证的作用就是充当了对照实验,也就是说不做任何技术处理的前提下来看得到的的训练结果)、re-sampling和re-weight;
  • 只看其中一列(固定其中一列,在representation learning一定的前提下),RS的分类效果最好;
  • 只看其中一行(同理),交叉验证CE的表示效果最好;

存在的问题

re-balance方法还是存在问题的,在文中提到:

  • re-sampling
    • 前提:在数据extreme不平衡的前提下;
    • over-sampling:存在过过拟合现象;
    • under-sampling: 存在欠拟合现象;
  • re-weight
    • 打乱原始数据的分布情况;

深度学习方法

两阶段微调策略

下面的BBN只是其中的一种模型,所谓的两阶段微调策略(Two-stage fifine-tuning strategies),所谓的两阶段是分为:1)不平衡的训练;2)平衡的微调;两个部分。

BBN

这个方法将训练分为两个阶段。第一阶段像往常一样正常训练用于提取表征,第二个阶段使用较小的学习率以Re-balancing的方式微调网络。

这里我提一个我看到过的今年刚提出的一种Two-stage方法实现处理长尾分布的框架。

在《BBN: Bilateral-Branch Network with Cumulative Learning for Long-Tailed Visual Recognition》一文中就提出了BBN网络用于更好地处理长尾分布。

image-20211115160513841

如上图所示,在文中,作者将整个自己设计的BNN模型设计成为三个模块:

  1. conventional learning branch
  2. re-balancing branch
  3. cumulative learning(根据训练epochs的增加来不断修改参数 α \alpha α,通过这个参数来整合上述两个branch)

当然还有其他的方法很好的在长尾分布上效果很好的分类模型——LDAM和CB-Focal。

Mixup方法

【Bag of Tricks for Long-Tailed Visual Recognition with Deep Convolutional Neural Networks】一文中提出了两种Minxup方法,其中一种是已经存在的Mixup方法:

  • Input Mixup
    • image-20211117090822205
  • Maninfold Mixup

另一种就是作者提出的“fine-tuning after mixup training“的方法,其实就是分成了两个阶段,第一个阶段是mixup,第二阶段就是微调模型训练(至于是怎么实现的,文中没说明)。

文本分类中的长尾分布问题

上述的解决方法都是针对图像或CV领域来解决的,但是在NLP中也有长尾分布的问题,比如在【Balancing Methods for Multi-label Text Classification with Long-Tailed Class Distribution】一文中提出了在多标签的文本分类问题的结局方法——提出新的Loss函数:

image-20211123011302812

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/634482.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

取石子游戏——算法与编程

取石子游戏 目录 问题描述输入输出格式输入格式:输出格式: 输入输出样例输入样例#1:输出样例#1:提示信息 算法尼姆博奕 代码 问题描述 A l i c e Alice Alice和 B o b Bob Bob在玩取石子游戏,摆在他们面前的有 n n n堆…

GIS入门进阶之012

一、引言 空间数据可视化是有效传输与表达地理信息,挖掘空间数据之间的内在联系,揭示地理现象内在规律的重要手段。它通过运用地图学、计算机图形学和图像处理技术,将地学信息的输入、处理、查询、分析与预测的结果采用符号、图形、图像并结合…

OpenGL 材质实现

1.简介 在现实世界里,每个物体会对光产生不同的反应。比如,钢制物体看起来通常会比陶土花瓶更闪闪发光,一个木头箱子也不会与一个钢制箱子反射同样程度的光。有些物体反射光的时候不会有太多的散射,因而产生较小的高光点&#xf…

35岁被淘汰?软件测试工程师职业生涯规划,从技术到管理...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 入门阶段&#xf…

Parallel Desktop中按照的centos在切换root用户时,密码正确,但一直切换不成功,显示su: Authentication failure

目录 一、出现问题二、分析问题三、解决问题四、参考资料 一、出现问题 我的密码明明是输入正确的,但又一直给我报下面的错误 二、分析问题 我怀疑是我密码记错了,所以我点击Log Out,重新去输入了一下密码,发现是正确的我确认…

[学习笔记] [机器学习] 9. 朴素贝叶斯(概率基础、联合概率、条件概率、贝叶斯公式、情感分析)

视频链接数据集下载地址:无需下载 学习目标: 4. 说明条件概率与联合概率 5. 说明贝叶斯公式、以及特征独立的关系 6. 记忆贝叶斯公式 7. 知道拉普拉斯平滑系数 8. 应用贝叶斯公式实现概率的计算 9. 会使用朴素贝叶斯对商品评论进行情感分析 1. 朴素贝叶…

对象进阶-继承、原型-原型链

工厂方法创建对象 我们之前已经学习了如何创建一个对象,那我们要是想要创建多个对象又该怎么办?聪明的同学可能会说,直接在写几个对象不就好了吗?比如下边的代码: var person1 {name: "孙悟空",age: 18,s…

APP自动化测试,Appium+PO模式+Pytest框架实战—项目案例

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 PO模式&#xff1…

如何解决GEE导出影像的Nodata值在ArcGIS中无法正常显示?

目录 01 ArcGIS对于GEE掩膜影像的Nodata值的说明 02 处理方法 2.1 方法1-GEE修改掩膜值 Arguments: Returns: Image 2.2 方法2-ArcGIS重新赋值Nodata(推荐) 01 ArcGIS对于GEE掩膜影像的Nodata值的说明 当在GEE中进行掩膜后,将影像在Ar…

打造极简风格动效 —— 5 分钟轻松实现惊艳、震撼人心的视觉效果

前期回顾 是不是在为 API 烦恼 ?好用免费的api接口大全呼之欲出_免流接口api_彩色之外的博客-CSDN博客APi、常用框架、UI、文档—— 整理合并https://blog.csdn.net/m0_57904695/article/details/130459417?spm1001.2014.3001.5501 👍 本文专栏&…

20道嵌入式经典面试题(附答案)

1.嵌入式系统中经常要用到无限循环,如何用C编写死循环 答:while(1){} 或者 for(;;) 2.程序的局部变量存在于哪里,全局变量存在于哪里,动态申请数据存在于哪里。 答:程序的局部变量存在于栈区;全局变量存在…

【Linux】浅谈文件原理与操作

目录 问题引入 浅谈文件原理 文件操作 文件的打开与关闭 open close write与read 再谈C库文件操作 问题引入 🌸以前我们学过C语言的文件操作,而不同语言的文件操作都是不一样的,我们该如何理解这一现象,能不能用一种统一…

有关 string 类的练习(下)

目录 一、反转字符串 II 二、反转字符串中的单词 III 三、找出字符串中第一个只出现一次的字符 四、字符串相乘 五、把字符串转换成整数 一、反转字符串 II 给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转…

Spring,注解开发

Spring是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架 1、组成 spring七大模块详解 2、IOC理论推导 传统的开发 (pojo层、DAO层和业务层) (1)UserDao (2) UserDaoImpl (3)…

天狼星-大熊座 Ursa Major SIRIUS

大熊座 Ursa Major SIRIUS 键盘说明 客制化键盘: 大熊座 Ursa Major SIRIUS 配列: 75 键帽:KCA-HelloWorld-Black 双模: 蓝牙-分裂方案 驱动配置:Link Lab 驱动设置软件 键盘操作 键盘说明参考:键位配…

利用WinDbg查看堆栈中方法入参的值4(C#)

由于作者水平有限,如有写得不对的地方,请指正。 使用WinDbg的过程中,坑特别的多,对版本要求比较严格,如: 1 32位应用程序导出的Dump文件要用32位的WinDbg打开,想要没有那么多的问题&#xf…

海底光缆位置探测技术的应用概述

1. 概述 海底光缆运行在地质环境复杂的海洋环境中,地震、海床塌陷、滑坡、洋流变化、海洋生物及船只抛锚都有可能造成光缆断裂、破损,影响光缆的安全运行。海底光缆一旦遭受损坏,其造成的经济损失无法估量。因此在海洋开发工程实施前&#xf…

Web转化为APP——YonBIP(APICloud迁移版)

目录 平台注册 平台使用 设计封面(端设置) APP证书 代码上传 移动打包 运营管理和移动插件 众所周知,APP开发是一件非常麻烦的事,很多擅长Web开发的人未必擅长APP开发。那么作为一个Web开发者,可不可以有很方便…

基于prefix tuning + Bert的标题党分类器

文章目录 背景一、Prefix-Tuning介绍二、分类三、效果四、参阅 背景 近期, CSDN博客推荐流的标题党博客又多了起来, 先前的基于TextCNN版本的分类模型在语义理解上能力有限, 于是, 便使用的更大的模型来优化, 最终准确率达到了93.7%, 还不错吧. 一、Prefix-Tuning介绍 传统的…

Redis之Redisson原理详解

文章目录 1 Redisson1.1 简介1.2 与其他客户端比较1.3 操作使用1.3.1 pom.xml1.3.2 配置1.3.3 启用分布式锁 1.4 大致操作原理1.5 RLock1.5.1 RLock如何加锁1.5.2 解锁消息1.5.3 锁续约1.5.4 流程概括 1.6 公平锁1.6.1 java中公平锁1.6.2 RedissonFairLock1.6.3 公平锁加锁步骤…