【样本不均衡】本质影响分析

目录

一、前言

二、样本不均衡的定义

三、样本不均衡的影响

四、 样本不均衡的本质:影响决策面

五、我的疑问:样本不均衡对encoder是否有影响?


一、前言

        首先说明,本文不包括样本不均衡问题的解决方法,只是对其本质影响尝试做一个阐述。其中不妥当的地方,欢迎在评论区交流。


二、样本不均衡的定义

        为简化起见,以下均在二分类问题中展开讨论。

        所谓“样本不均衡”,指的是在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是否差异很大?

        由于时间原因本人没有验证,欢迎交流讨论。