正负样本不平衡处理方法总结【转】

转自:watersink

1, Bootstrapping,hard negative mining
最原始的一种方法,主要使用在传统的机器学习方法中。
比如,训练cascade类型分类模型的时候,可以将每一级分类错误的样本继续添加进下一层进行训练。

比如,SVM分类中去掉那些离分界线较远的样本,只保留离分界线较近的样本。

2, heuristic sampling

标准的faster-RCNN中,假设正样本IOU(0.7~1.0)。负样本IOU(0.1~0.3),hard 负样本IOU(0.0~0.1)。比如实际的RPN网络中,实际最后的anchor经过NMS处理后的负样本是很多的,假如有100000个。而实际训练的正负样本比例为1:3,负样本大概只需要2000-3000个。这时就只选择那些hard负样本,这样实际训练出来的效果最好。

3, online hard example mining(OHEM)

出自,Training Region-based Object Detectors with Online Hard Example Mining这篇文章,

在faster RCNN这样的框架下,在原始的网络基础上,新接入了一个绿色的Read-only Layer,该网络对所有的ROI进行前向传播,并计算最后的loss,然后红色的网络对其中loss较大的ROI进行前向和后向传播,可以说是一种动态的选择性的传播梯度。优势也就显而易见,比原始的faster RCNN可以节省很大的运算量,训练速度回提升,最终模型准确性也提升。
其中,一个trick就是,在绿色的网络进行前向传播完,其中出来的好多ROI会存在一些Loss较高,但是这些ROI有很大的IOU的情况,这样就会使得梯度重复计算和传播,因此,这里,作者加入了NMS进行IOU的过滤。

4,Focal Loss
出自Focal Loss for Dense Object Detection这篇文章,
文章重点就是提出了focal loss这个cross entropy (CE) loss的改进版,实现了对于正负样本不平衡的调整。具体思路就是其公式,

从这个公式就可以分析出,
假设r=2,pt分数为0.9,那么这个easy example的loss将会被缩小0.01a倍
假设r=2,pt分数为0.968,那么这个easy example的loss将会被缩小0.001a倍
假设r=2,pt分数为0.1,那么这个hard example的loss将会被缩小0.81a倍
同样所有样本的loss都会缩小,但是hard example要不easy example缩小的小,从而取得好的训练效果。

从上图也可以反映出,r>0的曲线的loss要比r=0的曲线的更低,loss更小。

当然文章还提出了一个RetinaNet

RetinaNet以Resnet为基础结构,通过Feature Pyramid Network (FPN)产生多尺度的输出特征图,然后分别级联一个分类和回归的子网络。这点和faster RCNN有点区别,在faster中是只使用一个网络进行分类和回归操作,RetinaNet将2个任务分离后,也许会在精度上有一定提高吧,也更容易训练。
这里一个trick是RetinaNet的初始化,
(1)除了分类子网络的最后一层,其余层w全部初始化为u=0, σ = 0:01的高斯分布,b初始化为0。
(2)最后一个分类的卷积层,b初始化为- log((1 - π)/π),文中使用π = 0.01,这样初始化使得每个anchor被标记为前景的概率为0.01,
这里b的这个公式是怎么得出的呢?
最终的分类得分是一个逻辑回归,公式为,

这里的z=wx+b,由于w初始化为u=0, σ = 0:01的高斯分布,所以,z=b,最终的概率设为π,从而得出公式,

从而解出,b=- log((1 -π)/π)

这个初始化对于focal loss的训练很重要。

5,class balanced cross-entropy

出自Holistically-nested edge detection这篇文章, 主要用于FCN,U-net等分割,边缘检测的网络,用于对像素级别的2分类样本不平衡进行优化。

sigmoid_cross_entropy公式:

-y_hat* log(sigmoid(y)) - (1 - y_hat) * log(1 - sigmoid(y))

class_balanced_sigmoid_cross_entropy公式:

-β*y_hat* log(sigmoid(y)) -(1-β) * (1 - y_hat) * log(1 - sigmoid(y))

思想就是引入新的权值β,实现正负样本loss的平衡,从而实现对不同正负样本的平衡。

References:

https://github.com/abhi2610/ohem

原文地址:https://www.cnblogs.com/demian/p/9575735.html

时间: 2024-10-04 04:23:04

正负样本不平衡处理方法总结【转】的相关文章

机器学习中样本不平衡的处理方法

在现实收集的样本中,正负类别不均衡是现实数据中很常见的问题.一个分类器往往 Accuracy 将近90%,但是对少数样本的判别的 Recall 却只有10%左右.这对于我们正确找出少数类样本非常不利. 举例来说:在一波新手推荐的活动中,预测用户是否会注册的背景下,不注册的用户往往是居多的,这个正负比例通常回事1:99甚至更大.一般而言,正负样本比例超过1:3,分类器就已经会倾向于负样本的判断(表现在负样本Recall过高,而正样本 Recall 低,而整体的 Accuracy依然会有很好的表现)

处理样本不平衡的LOSS—Focal Loss

0 前言 Focal Loss是为了处理样本不平衡问题而提出的,经时间验证,在多种任务上,效果还是不错的.在理解Focal Loss前,需要先深刻理一下交叉熵损失,和带权重的交叉熵损失.然后我们从样本权利的角度出发,理解Focal Loss是如何分配样本权重的.Focal是动词Focus的形容词形式,那么它究竟Focus在什么地方呢?详细的代码请看Gitee. 1 交叉熵 1.1 交叉熵损失(Cross Entropy Loss) 有\(N\)个样本,输入一个\(C\)分类器,得到的输出为\(X

人脸检測流程及正负样本下载

人脸检測做训练当然能够用OpenCV训练好的xml.可是岂止于此.我们也要动手做! ~ 首先是样本的选取. 样本的选取非常重要.找了非常久才发现几个靠谱的. 人脸样本:http://www.vision.caltech.edu/Image_Datasets/Caltech_10K_WebFaces/   网上抓取的逾10,000个人脸样本 http://vis-www.cs.umass.edu/lfw/  13.000个人脸 负样本(背景环境衣服动物乱七八糟的):http://groups.cs

人脸检测流程及正负样本下载

人脸检测做训练当然可以用OpenCV训练好的xml,但是岂止于此.我们也要动手做!~ 首先是样本的选取.样本的选取很重要,找了很久才发现几个靠谱的. 人脸样本:http://www.vision.caltech.edu/Image_Datasets/Caltech_10K_WebFaces/   网上抓取的逾10,000个人脸样本 http://vis-www.cs.umass.edu/lfw/  13,000个人脸 负样本(背景环境衣服动物乱七八糟的):http://groups.csail.

解决sklearn 随机森林数据不平衡的方法

Handle Imbalanced Classes In Random Forest Preliminaries # Load libraries from sklearn.ensemble import RandomForestClassifier import numpy as np from sklearn import datasets Load Iris Flower Dataset # Load data iris = datasets.load_iris() X = iris.da

gluoncv rpn 正负样本

https://github.com/dmlc/gluon-cv/blob/master/gluoncv/model_zoo/rpn/rpn_target.py def forward(self, ious): """RPNTargetSampler is only used in data transform with no batch dimension. Parameters ---------- ious: (N, M) i.e. (num_anchors, num_

不平衡学习方法理论和实战总结

原文:http://blog.csdn.net/hero_fantao/article/details/35784773 不平衡学习方法 机器学习中样本不平衡问题大致分为两方面: (1)类别中样本比率不平衡,但是几个类别的样本都足够多: (2)类别中某类样本较少. 对第二个问题,其实不是我们重点,因为样本不足的话,覆盖空间是很小,如果特征足够多的话,这种数据对模型学习的价值也不大,所以,对这个问题,好的方法只能是找尽量多的小类样本来覆盖样本空间. 现在主要讨论第一个问题. 一: 采样方法 1. 

CCJ PRML Study Note - Chapter 1.5 : Decision Theory

Chapter 1.5 : Decision Theory Chapter 1.5 : Decision Theory Christopher M. Bishop, PRML, Chapter 1 Introdcution 1. PRML所需要的三论: Probability theory: provides us with a consistent mathematical framework for quantifying and manipulating uncertainty. Deci

AUC与ROC

ROC(Receiver Operating Characteristic) 主要分析工具是一个画在二维平面上的曲线--ROC curve. 平面的横坐标是 false positive rate(FPR),纵坐标是 true positive rate(TPR). 相关概念 True Positive Rate(真正率 , TPR)或灵敏度(sensitivity) TPR=正样本预测结果数正样本实际数 TPR=TPTP+FN False Positive Rate (假正率, FPR) FP