目录
一、前言
首先说明,本文不包括样本不均衡问题的解决方法,只是对其本质影响尝试做一个阐述。其中不妥当的地方,欢迎在评论区交流。
二、样本不均衡的定义
为简化起见,以下均在二分类问题中展开讨论。
所谓“样本不均衡”,指的是在training dataset中,正负类样本的数量不均衡。
三、样本不均衡的影响
Firstly,在训练样本分布和测试样本分布(或真实样本分布)之间出现较大差异时,样本不均衡才会产生问题。
在印象中,如果train过程中,正类样本很少,负类样本很多,那么在test过程中,model会倾向于将data分类为负类。
但是到底为什么?
在参考对这个问题的分析时,我见到了以下几个说法:
①样本不均衡,导致model学习到了“真实世界”中,“正类样本远比负类样本少”的先验信息
②样本不均衡,影响模型学习到更本质的特征
③样本不均衡,使得我们应该更关注召回率recall
有些说法我觉得很有启发意义,有些我持观望态度,下面将提出我自己的思考。
四、 样本不均衡的本质:影响决策面
样本不均衡会导致在某个特征空间中,model学习到的决策面更靠近少样本一侧。
我们知道,机器学习或深度学习的某个实质,就是将低维空间线性不可分的样本,通过某种映射到高维空间变得线性可分。
如CNN中的卷积层,就是将原始输入encode到一个feature space,如VGG得到一个7×7×512的tensor,再通过全卷积FC(大小为 7×7×512,数量为4096)到1×1×4096的tensor,后面可输出分类。这里encoder后得到的tensor,相当于某个特征空间中的样本点;全卷积,相当于判别函数。
在不均衡的training dataset中,model要想得到较低的loss实现正确分类,就要在正类样本和负类样本之间找到一个决策面,这个决策面将两类数据分隔开。
- 不是说样本不均衡100%会导致model不好
①如果最后学习到的model恰好紧贴着负类样本,和正类样本之间有较大的margin,那么train的样本不均衡就没有影响,如图1.
②同样,在一些简单task上(正负样本之间天然有很大的margin),样本不均衡也不会产生很大影响,如图2.
-
样本不均衡,影响的是test过程中“困难样本”的分类
In other words, 样本不均衡影响的是在margin附近的样本,即困难样本。因为在很多情况下,model学习到的决策面并不能如图1、2那样,而是很普通的在两类样本之间,而正类样本数量又很少,这就导致决策面会“自然”地向数量少的样本推进。这样test时,决策面两侧判别函数的计算,就会满足一个>0, 一个<0(或者以概率上的0.5为准,是一样的)。
- 上述分析与解决方法的呼应
在数据不均衡的解决方法中,存在着这样的对应:
①过采样/欠采样:努力使得数据分布均衡;
②改变分类阈值/loss加权:努力改变决策面位置,向数量多的类别推;
五、我的疑问:样本不均衡对encoder是否有影响?
上述分析的是 样本不均衡对决策面的影响。但是有个很重要的问题,那就是对encoder出来的特征空间(feature)有无影响?思路可以如下:
①在一个样本不均衡的dataset中,对已经pre-trained的model,freeze住前面encoder的参数,只训练后面的参数,再test:估计效果肯定不好,应该可以证实决策面的分析
②在一个样本不均衡的dataset中,from-scratch训练一个model,包括encoder和后面的分类器,看看encoder出来的feature和pre-trained模型提出来的feature是否差异很大?
由于时间原因本人没有验证,欢迎交流讨论。