当前位置: 首页 > news >正文

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

前言

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

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

这个概念是对于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

相关文章:

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

前言 长尾分布在分类任务中会提到这个名,这是因为长尾分布这个现象问题会导致在训练过程中会出现出错率高的问题,影响了实验结果。 这里要说的是,长尾分布是一种现象,有的地方说是一种理论或定律,我感觉这样说不太确切&#xff0…...

集合导题、刷题、考试全套完整流程,专业强大的功能,提高刷题学习效率和企业的培训效率

土著刷题微信小程序v1.15,主要是迭代了考试模块的进阶功能,对考试模块进行了一次升级改造。 由于在v1.15开发期间,收到了违规内容整改的通告,为了遵守相关法律法规,让小程序能够平稳安全地运营下去,我们特此…...

【机器学习】采样方法

文章目录 采样方法11.1 简介11.2 常见采样方法11.2.1 均匀分布采样11.2.2 逆变换采样11.2.3 拒绝采样11.2.4 重要采样11.2.5 Metropolis方法11.2.6 Metropolis-Hasting 算法11.2.7 吉布斯采样 采样方法 11.1 简介 什么是采样 从一个分布中生成一批服从该分布的样本&#xff0c…...

Seata TCC 模式理论学习、生产级使用示例搭建及注意事项 | Spring Cloud55

一、前言 通过以下系列章节: docker-compose 实现Seata Server高可用部署 | Spring Cloud 51 Seata AT 模式理论学习、事务隔离及部分源码解析 | Spring Cloud 52 Spring Boot集成Seata利用AT模式分布式事务示例 | Spring Cloud 53 Seata XA 模式理论学习、使用…...

一文详解:Vue3中使用Vue Router

目录 安装和配置Vue Router安装Vue Router配置Vue Router Vue Router的基本概念Vue Router 的配置项介绍routes中的配置项介绍 路由跳转使用 router-link组件使用router.push函数 路由传参动态路由嵌套路由命名路由路由守卫全局路由守卫路由独享守卫 路由懒加载使用import()方式…...

C++开发—远程控制

C开发—远程控制 一,准备二,安装版本控制工具1,安装gitforwindows2,安装乌龟git1,安装乌龟git应用2,安装乌龟git对应的语言包 3,设置Visual Studio的git插件4,创建git项目 三&#x…...

【Python基础】Python数据容器(集合)

文章目录 数据容器:set(集合)集合的定义集合的常用操作-修改(1)添加新元素(2)移除元素(3)从集合中随机取出元素(4)清空集合(5)取出 两个集合的差集(6)消除 两个集合的差集(7)两个集合 合并(8)统计集合元素数量len()(9)集合的遍历 集合的特点 …...

高通 Camera HAL3:集成camxoverridesettings.txt到整机版本

camxoverridesettings.txt 是高通提供给开发者临时进行CAMX、CHI-CDK功能调试的一种方式,通过配置各种变量值然后写入到该文件,能控制Log打印、参数配置、数据dump等多种功能 这个文件需要集成在设备目录的vendor/etc/camera/里 因为camxoverridesetti…...

PHP面试题大全

一 、PHP基础部分 1、PHP语言的一大优势是跨平台,什么是跨平台? PHP的运行环境最优搭配为ApacheMySQLPHP,此运行环境可以在不同操作系统(例如windows、Linux等)上配置,不受操作系统的限制,所以…...

Linux发送接收邮件

目录 一、实验 1.linux用户发送给linux中的其它用户 2.linux用户发送给外网用户 一、实验 1.linux用户发送给linux中的其它用户 (1)使用命令 yum install -y sendmail 安装sendmail软件 (2)使用yum install -y mailx 安装 mail…...

SpringBoot-【回顾】

第一个SpringBoot程序 自动装配原理 Springboot的自动装配实际上就是为了从Spring.factories文件中获取到对应的需要进行自动装配的类,并生成相应的Bean对象,然后将它们交给Spring容器来帮我们进行管理 启动器:以starter为标记 EnableAuto…...

Python模拟试卷2023(1)

模拟试卷(1) 一、简答题 (共8题,100分) 1、已知有列表lst[54,36,75,28,50],请完成一下操作: 1、在列表尾部插入元素42 2、在元素28前面插入66 3、删除并输出28 4、将列表按降序排序 5、清空整个列表 lst[54,3…...

常量接口 vs 常量类 vs 枚举区别

把常量定义在接口里与类里都能通过编译,那2者到底有什么区别呢? 那个更合理? 常量接口 public interface ConstInterfaceA {public static final String CONST_A "aa";public static final String CONST_C "cc"; } 存在…...

第二章 模态命题:必然、可能

第二章 模态命题:必然、可能 第一节 模态命题-句式转换-逻辑转换 题-模态命题-句式转换-逻辑转换:①不一定不可能;②不一定可能不未必。 1.唐代韩愈在《师说》中指出:“孔子曰:三人行,则必有我师。是故…...

Selenium 必了解—如何测试REST API

目录 前言: Web UI测试存在的问题: REST API测试: 依赖包 程序示例: 1-获取联系人 2-GET Request: 3-POST Request: 4- 编辑请求 5- 删除请求 前言: Selenium WebDriver 可以用于测试 Web 应用的…...

pytorch安装老版本

比如1.7.1, cuda 10.1 pip install torch1.7.1cu101 -f https://download.pytorch.org/whl/torch_stable.html官网查看有哪些可以装的: https://download.pytorch.org/whl/torch_stable.html...

怎么自学电脑编程

首要之首:不要急于选择一种语言 新手们有一个常见的错误就是犹豫于判断哪种编程语言是做好的、最该先学的。 我们有很多的选择,但你不能说那种语言最好。 我们应该理解:说到底,什么语言并不重要。 重要的是理解数据结构、控制逻辑…...

【华为OD统一考试B卷 | 100分】斗地主之顺子(C++ Java JavaScript Python)

文章目录 题目描述输入描述输出描述用例C++JavajavaScriptpython题目描述 在斗地主扑克牌游戏中, 扑克牌由小到大的顺序为:3,4,5,6,7,8,9,10,J,Q,K,A,2,玩家可以出的扑克牌阵型有:单张、对子、顺子、飞机、炸弹等。 其中顺子的出牌规则为:由至少5张由小到大连续递增的扑…...

案例39:基于Java办公自动化管理系统开题报告设计

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…...

基于山景BP10128音频处理器高通滤波器算法设计

+ hezkz17进数字音频答疑 山景BP10128音频处理器是一款高性能的数字信号处理器,专门用于音频信号的处理和增强。它采用先进的数字信号处理技术和算法,能够对音频信号进行实时处理,并且具有高效、稳定、可靠等特点。 该处理器具有以下主要功能: 均衡器:支持低音、中音、…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...

企业如何增强终端安全?

在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

从零开始了解数据采集(二十八)——制造业数字孪生

近年来,我国的工业领域正经历一场前所未有的数字化变革,从“双碳目标”到工业互联网平台的推广,国家政策和市场需求共同推动了制造业的升级。在这场变革中,数字孪生技术成为备受关注的关键工具,它不仅让企业“看见”设…...

echarts使用graphic强行给图增加一个边框(边框根据自己的图形大小设置)- 适用于无法使用dom的样式

pdf-lib https://blog.csdn.net/Shi_haoliu/article/details/148157624?spm1001.2014.3001.5501 为了完成在pdf中导出echarts图,如果边框加在dom上面,pdf-lib导出svg的时候并不会导出边框,所以只能在echarts图上面加边框 grid的边框是在图里…...

从零手写Java版本的LSM Tree (一):LSM Tree 概述

🔥 推荐一个高质量的Java LSM Tree开源项目! https://github.com/brianxiadong/java-lsm-tree java-lsm-tree 是一个从零实现的Log-Structured Merge Tree,专为高并发写入场景设计。 核心亮点: ⚡ 极致性能:写入速度超…...

RushDB开源程序 是现代应用程序和 AI 的即时数据库。建立在 Neo4j 之上

一、软件介绍 文末提供程序和源码下载 RushDB 改变了您处理图形数据的方式 — 不需要 Schema,不需要复杂的查询,只需推送数据即可。 二、Key Features ✨ 主要特点 Instant Setup: Be productive in seconds, not days 即时设置 :在几秒钟…...

SQL进阶之旅 Day 22:批处理与游标优化

【SQL进阶之旅 Day 22】批处理与游标优化 文章简述(300字左右) 在数据库开发中,面对大量数据的处理任务时,单条SQL语句往往无法满足性能需求。本篇文章聚焦“批处理与游标优化”,深入探讨如何通过批量操作和游标技术提…...