当前位置: 首页 > 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音频处理器是一款高性能的数字信号处理器,专门用于音频信号的处理和增强。它采用先进的数字信号处理技术和算法,能够对音频信号进行实时处理,并且具有高效、稳定、可靠等特点。 该处理器具有以下主要功能: 均衡器:支持低音、中音、…...

docker搭建本地私有仓库

一、搭建本地私有仓库 有时候使用Docker Hub这样的公共仓库可能不方便,这种情况下用户可以使用registry创建一个本地仓库供私人使用,这点跟Maven的管理类似。 使用私有仓库有许多优点: 1)节省网络带宽,针对于每个镜像…...

Asp.net某店POS积分管理系统-清除履历表、日志表、月购买额(源代码+论文)

大型百货店作为日常生活中不可缺少的一部分,给人们的生活提供了很大的方便。而为这样一个庞大而复杂的购物平台,提供一套完备的管理系统支持是很必要的。在现代销售行业中,会员制、积分管理、代金消费的概念已经越来越普及。为了吸引更多消费者,加大销售企业的竞争力。就需…...

Baumer工业相机堡盟工业相机如何使用BGAPISDK的相机图像时间戳计算运行时间以及时间差(C#)

Baumer工业相机堡盟工业相机如何使用BGAPISDK的相机图像时间戳计算运行时间以及时间差(C#) Baumer工业相机Baumer工业相机BGAPI SDK和图像时间戳的技术背景Baumer工业相机使用BGAPISDK控制相机数据流的方式1.引用合适的类文件2.使用BGAPISDK获取时间戳的…...

python:消除已安装库在import导入时出现红线问题

问题 在pycharm中,对于已经安装的库文件,在进行import导入时出现红线,不影响运行, 简单有效的消除红线的方法。 解决办法 在工程目录中的程序可以采用Mark directory - Source Root方法。 对于安装的第三方库文件环境不在本工程…...

关闭nginx容器之后,再次启动,原来宿主机映射的端口失效的问题解决

最近用containerd在部署nginx的时候,发生了一个比较诡异的问题,当笔者通过nerdctl stop把原来的nginx容器关闭,然后再通过nerdctl run启动一个新的nginx容器的时候,把原来的宿主机端口映射到这个新容器上,但新启动的容…...

【小沐学Python】Python实现在线电子书(MkDocs + readthedocs + github + Markdown)

文章目录 1、简介2、安装3、创建新项目4、添加页面5、编辑导航页6、设置主题7、更改图标图标8、构建网站9、部署9.1 准备github项目9.2 注册登录Read the Docs9.3 导入github项目到 Read the Docs 10、Markdown语法10.1 横线10.2 标题10.3 段落10.4 文字高亮10.5 换行10.6 斜体…...

Python 中的短路评估

文章目录 Python 中的逻辑运算符or (或)运算符AND 运算符 什么是短路在 Python 中使用 AND 运算符进行短路在 Python 中使用 OR 运算符进行短路 本文是关于使用逻辑运算符在 Python 中显示短路行为。 Python 中的逻辑运算符 or (或)运算符 OR:两个操作数均使用 Py…...

LVGL源码分析(1):lv_ll链表的实现

在LVGL中难免需要用到链表:group中的对象需要用链表来存储,这样可以切换对象的焦点;再比如LVGL内部的定时器,多个定时器也是用链表进行存储的。这篇文章就来分析一下LVGL中链表的源码。 文章目录 1 链表结构体2 插入元素源码分析…...

js判断数据类型的几种方法及其局限性(typeof, instanceof, Object.prototype.toString.call())

​ js中判断了类型的方法有很多, 这篇文章主要来说一下常用的几种判断类型的方法,以及使用: 每个方法都各有优缺点,在日常使用的时候请结合这些优缺点进行斟酌: 1. 使用typeof判断数据类型 javaScript中typeof可以判断以下类型: undefined: 未定义的变量或者值 boolean: 布…...

【MySQL】一文带你掌握聚合查询和联合查询

文章目录 1. 聚合函数1.1 COUNT1.2 SUM1.3 AVG1.4 MAX,MIN 2. GROUP BY3. HAVING4. 联合查询4.1 内连接4.2 外连接4.3 自连接4.4 子连接 5.合并查询5.1 UNION5.2 UNION ALL 1. 聚合函数 概念: 聚合函数是一种用于处理数据集合的函数,它将多个…...

如何自己做网站手机软件/福州seo博客

通过最近对 Flutter 开发的大致了解,感受最深的简单概括就是:Widget 就是一切外加组合和响应式,我们开发的界面,通过组合其他的 Widget 来实现,当界面发生变化时,不会像我们原来 iOS 或者 Andriod 开发一样…...

三级 做爰免费网站/优化科技

写在前面的话 通过上一节,知道了 K8S 有 Master / Node 组成,但是具体怎么个组成法,就是这一节具体谈的内容。概念性的东西我们会尽量以实验的形式将其复现。 部署 K8S 集群 互联网常用的 K8S 集群部署方式: 1. kubeadm&#xff0…...

上海网站建设 公司案例/企业网站优化推广

Background 2021 关键词 : 认知 + 积累 2021 年已经过去了, 回顾过去的一年的主线任务, 上半年一直在找工作, 中期都在公司实习, 下半年也在找其他公司和准备paper。 整体来看我的2021年主线好像并没有做什么, 而且research 也停止了push。 然而事实不是这样的。 这一年…...

什么是网站站点建设介绍/沙洋县seo优化排名价格

如果参数传递的是文件路径&#xff1a;我们需要将文件的路径用encodeURIComponent(obj.url)转化一下即可成功解决上述异常 "<a href\"<%path%>/paperManager/toDownFile.do?filepath"encodeURIComponent(obj.url)"\">附件下载</a>…...

房屋租赁网站开发意义/模板建站的网站

1 auto_ptr auto_ptr模板定义了类似指针的对象&#xff0c;是一种智能指针&#xff0c;当auto_ptr对象过期时&#xff0c;其析构函数将使用delete来释放内存。 void test1() {int* ip new int(10); //动态内存未释放return; }void test2() {auto_ptr<int> ip(new int(…...

赤峰建设厅官方网站/舟山seo

在Ubuntu中vim的配置文件存放在/etc/vim目录中&#xff0c;配置文件名为vimrc在Fedora中vim的配置文件存放在/etc目录中&#xff0c;配置文件名为vimrc在终端 输入以下命令来编辑vimrc配置文件&#xff1a;sudo vim /etc/vim/vimrc或者 sudo gedit /etc/vim/vimrc1、显示行号 …...