【看看这长尾效应】长尾效应综述
Deep Long-Tailed Learning: A Survey
- 引言
- 长尾学习
- 介绍
- 问题定义与基本概念
- 问题定义
- 类平衡方法
- 类重平衡
- Re-Sampling
- Cost-sensitive Learning Cost-sensitive
- Logit Adjustment
- Information Augmentation
- Transfer Learning
- Data Augmentation
- Module Improvement
- Representation Learning
- Decoupled Training
Deep Long-Tailed Learning: A Survey-论文地址
引言
长尾数据是指数据失衡,数据集中类别数量存在分布不均衡问题,典型的长尾数据集数据分布如下图所示:
长尾学习
- 在数据分布不平衡的情况下,能够训练良好的深度学习模型。
- 在长尾数据集中,通用的视觉识别模型容易偏向Head部数据,而忽视tail数据。
- 长尾数据的学习研究主要分为三大类:
- 类重新平衡(class re-balancing)
- 数据增强(informaton augmentation)
- 模块改进(module improvement)
介绍
在实际应用中,训练样本通常呈现长尾类分布,其中一小部分具有大量样本点,而其他类仅有少数样本。在这种训练集下,经过训练的模型很容易偏向于具有大量训练数据的头部类别,导致在数据有限的尾部类上模型性能较差。
下面是长尾数据集学习的方式如下:
本文通过一个全新的指标“相对准确度”(Relative accuracy metric),对长尾效应解决的SOTA方法进行评估
问题定义与基本概念
问题定义
长尾学习寻求从具有长尾类分布的训练数据集中学习深度神经网络模型,即其中一小部分类具有大量样本,其余类仅与少量样本关联。主要面临挑战是:
- 数据数量不平衡使得深度模型偏向于头类,而在尾类上表现不佳
- 尾类样本的缺乏使得训练模型进行尾类分类更具挑战性。
- 类不平衡:类不平衡可以看做是包含长尾效应的,但是类不平衡有时候类别数目比较少,而长尾学习中有大量的类并且尾部数据更加的稀少
- 少样本学习:少样本学习可以看作是长尾学习的一个子任务,在长尾学习中尾部样本数目通常非常少。
- 域外泛化学习:指的是训练集和测试集分布不一致,包括数据边际分布、不一致类别分布、以及两种的组合情况。长尾学习可以看作域外泛化的特定任务。
类平衡方法
现在的长尾学习方法,主要包含类别重平衡、信息增强、模型提升。
- 类平衡:重采样、重新加权分类损失、逻辑调整
- 信息增强:数据增强、迁移学习
- 模型增强:特征学习、分类器设计、解耦训练、集成学习
类重平衡
Re-Sampling
常见的采样平衡方式主要是有Random under-sampling和random over-sampling,通过减少头部数据的采样或者过多的采样尾部数据,可能分别导致头部数据的检测表现下降或者尾部数据出现过拟合。另外有两种现阶段的方法如下:
- Class-balanced re-sampling:Instance-balanced sampling 表示每个实例抽样概率相同,Class-balanced sampling表示每个类别选取的概率是相同。
· Square-Root sampling(文献117) — 取样本的平方根概率。
· Progressively balanced sampling(文献32) — 在Instance-balanced sampling 和 Class-balanced sampling中渐进插值。
· bi-Level class-balanced(文献34) — 结合图像级采样和实例级采样。
· Dyanmic curriculum learning(文献75) — 从一个类中抽样越多,一个类的的概率越低。
· Balanced meta-softmax(文献86) — 提出元学习方法,通过平衡元验证集优化模型分类器性学习最佳样本分布参数。
· FASA(文献103)— 通过使用平衡元验证集上的模型分类损失(作为度量)来调整不同类别的特征采样率。
· LOCE(文献33)— 建议使用平均分类预测分数(即运行预测概率)来监控不同类别上的模型训练,并指导记忆增强特征采样以增强尾部类别性能。
· VideoLT(文献38)— FrameStack在训练期间根据运行模型的性能动态调整不同类的采样率,以便可以从尾部类(通常运行性能较低)中采样更多的视频帧,从头部类中采样更少的帧。 - Scheme-oriented sampling:为长尾学习提供一些特定的学习方案,如度量学习和集成学习
· LMLE (文献66)— 提出一个五元采样器,对四组对比,一组正样本,三组负样本
· Truplet loss (文献118)— 两两对比样本
· Partitioning reservoir sampling(文献82) — 提出一种在线记忆算法,能动态维护数据
· Bilateral-branch network (文献48)— BBN对传统分支采用均匀采样,模拟原始长尾训练分布;同时,BBN在重平衡分支上采用了反向采样器来采样更多的尾类样本,以提高尾类性能。最后的预测是两个网络分支的加权和。
·LTML (文献77) — 将双边分支网络扩展到长尾多标签分配问题。
· GIST (文献102)— 也探索了头部到尾部的迁移学习问题。
· BAGS(文献78)— 将数据按样本数目划分为多个小组,分别进行预测
· LST(文献77)— Class balanced data reply strategy进行数据平衡
Cost-sensitive Learning Cost-sensitive
处理类别不平衡的方式主要包括class-level re-weighting 和 class-level re-margining.
- Class-level re-weighting:优化标签频率对损失的影响
· (文献105)— 基于样本的影响
· (文献29)— 模型预测和平衡之间的对齐
· (文献86)— 提出使用标签频率调整训练过程中的模型预测
· LADE(文献31)— 介绍了标签分配Disentangling loss学习训练过程中的长尾分布
· CB(文献16)— 引入effective number(训练样本数量的指数函数),通过与有效样本数反比的方式进行类平衡
· Focal loss (文献68) — 将更高的权重分配给尾部数据,头部数据获得更低的权重。
· Meta-Weight-Net (文献76)— 通过学习得到类别权重,元学习
· DisAlign(文献29)— 通过最小化调整后的预测分布和给定平衡参考分布之间的KL-Divergence
· EQL(文献19)— 当尾部样本使用头部样本作为负样本时,减少loss权重
` EQLV2(文献91) — 分为子任务,每个子任务专注一个类
· Seesaw loss(文献92)— 使用两个参数提高Loss和抑制Loss
· Adaptive class suppression loss(文献93)— 根据输出的置信度是抑制梯度 - Class-level re-margining :调整不同类学习功能与模型分类器之间的最小边界(距离)
· label-distribution-aware margin (LDAM)(文献18)
· Bayesian estimate (文献72)
Logit Adjustment
Information Augmentation
Transfer Learning
- 迁移学习-Transfer Learning:在长尾学习领域,主要在头部到尾部的迁移学习、模型预训练学习、知识蒸馏、自训练。
Data Augmentation
- 数据增强:对数据进行增强,但是常规的增强手段往往不能直接应用,需要对类别进行调整。
Module Improvement
主要分为四个部分:
- (1) representation learning improves the feature extractor—基于表征学习的特征提取器;
- (2) classifier design enhances the model classifier—分类器设计的增强分类器模型;
- (3) decoupled training boosts the learning of both the feature extractor and the classifier—解耦训练提高特征提取和分类器学习;
- (4) ensemble learning improves the whole architecture—集成学习改善整个架构
Representation Learning
主要包含 Metric Learning、Sequential trianing、Prototype Learning 和Transfer Learining
- Metric Learning:目的是建立物体之间相似性或者不相似性,在长尾学习中是探索目标之间的距离损失,学习更具判别特征空间
- Sequential trianing:数据不同的排布训练模式,按照特定顺序进行训练,感觉有点像两阶段解耦训练的方式。
- Prototype Learning :新的网络结构,开放世界检测/记忆力等方式
- Transfer Learining:权重文件的不同加载
Decoupled Training
第一阶段学习特征的表达,第二阶段学习分类
【看看这长尾效应】长尾效应综述相关推荐
- 什么是长尾关键词?长尾关键词优化方法和技巧
做网站SEO优化想必你也已经发现,一个网站的主要流量80%是来自长尾关键词.长尾关键词最常见的是分布在网站内容页,其次是栏目title.标签页.专题页.那么什么是长尾关键词呢?其实长尾关键词就是词比较 ...
- 长尾关键词-长尾关键词挖掘工具-长尾关键词优化排名软件
长尾关键词,长尾关键词的作用:网站的绝大部分流量是由长尾关键词带来的,所以长尾关键词的优化对于提高网站的流量具有很重要的作用,同时它和核心关键词相比竞争性也比较小,容易做优化.我们已经知道长尾关键词具 ...
- 《墨菲定律(Murphy‘s Law)》(Yanlz+Unity+SteamVR+云技术+5G+AI=VR云游戏=黄金法则+生存智慧+马太效应+口红效应+羊群效应+二八法则+人工智能+立钻哥哥+==)
<墨菲定律> <墨菲定律> 版本 作者 参与者 完成日期 备注 YanlzLaw_Murphy_V01_1.0 严立钻 2019.10.01 ##<墨菲定律>发布说 ...
- R语言线性混合效应模型(固定效应随机效应)和交互可视化3案例
最近我们被客户要求撰写关于线性混合效应模型的研究报告,包括一些图形和统计输出. 视频:线性混合效应模型(LMM,Linear Mixed Models)和R语言实现案例 线性混合效应模型(LMM,Li ...
- 什么是长尾关键词?长尾关键词的含义
什么是长尾关键词? 网站上非目标关键词但也可以带来搜索流量的关键词,称为长尾关键词. 其带来的总流量是非常大的. 很多网站其实都是靠长尾关键词做起来的,更多的客户也都是靠长尾关键词进入网站,最终达成转 ...
- 长尾词-长尾词软件-长尾词挖掘工具免费
长尾词,什么是长尾词?简单来说长尾词通过核心展开出来的一个关键词.长尾词有流量吗?相信这些大家很关心的一点.长尾词不仅有流量,而且流量好不少.相信大家都用过百度搜索答案,当你输入一半的时候百度是不是会 ...
- R语言非线性混合效应 NLME模型(固定效应随机效应)对抗哮喘药物茶碱动力学研究
最近我们被客户要求撰写关于非线性混合效应 NLME模型的研究报告,包括一些图形和统计输出. 相关视频:线性混合效应模型(LMM,Linear Mixed Models)和R语言实现 线性混合效应模型( ...
- 块效应 振铃效应 呼吸效应
1.块效应: (1)概念: 主要是由视频图像采用基于块的编码方式和量化造成相邻块之间存在明显差异的现象,在视频编码中人眼察觉到的小块边界处的不连续. (2)产生原因: 1.编码过程中对残差进行DCT变 ...
- html 德罗斯特效应,德罗斯特效应有尽头吗?怎么打造镜子无限循环现象
德罗斯特效应简单的来说就是一张照片的某一部分和整张照片相同,其实只是一种递归的视觉形式,从理论上来说没有尽头,但是作为一张图片肯定是有的,只要你拿着一面镜子站在另一面镜子前,以平行的姿势相对站立,就能 ...
- html 德罗斯特效应,德罗斯特效应:无限旋转你的视觉
原标题:德罗斯特效应:无限旋转你的视觉 所谓"德罗斯特效应Droste Effect"是一种递归的图片形式,它让一张图片的某个部分与整张图片相同,如此产生无限循环.就好像是说,你拿 ...
最新文章
- php ajax mysql 分页查询_基于PHP_MySql_Ajax的分页技术方案
- 设计模式 | 工厂方法模式及典型应用
- 数论概论(Joseph H.Silverman) 定理39.2 连分数相邻收敛项之差定理
- 小白初学ABP框架,着实累啊
- python list遍历定位元素_python for循环,第二遍定位不到元素?
- java 获取本机的ip和mac_java获取本机ip和mac地址
- pdf转html插件~~~pdf2htmlEX安装,配置及使用
- myeclipse自带tomcat
- django-rest-framework-jwt的使用
- hdu3709——数位dp+枚举
- html中将正方形动画变成圆形,css中把正方形变成圆形的方法
- python画正多边形_少儿python编程之画正多边形代码优化教程
- 爬取北邮人论坛美食帖子
- python编写移动平均_如何在Python中编写不同类型的移动平均线。
- ​特拉华大学彭曦教授招收2021 Fall全奖博士生
- matlab的shading,matlab colormap,caxis,shading,hsv,pcolor, alpha
- SpringMVC使用websocke
- C:\WINDOWS\system32\Macromed\Flash\Flash32_11_5_502_110.ocx
- python中如何判断大小写_用python如何判断字符的大小写
- 使用Python 封装一个简单的Mysql工具类