CNN文本分类数据不平衡的处理

用CNN做文本分类有一段时间了,关于训练数据不平衡的问题,我一直使用一个简单的方法,复制样本数据少的类别,在训练的时候,每个mini-batch都能相对均匀的抓取每个类别的信息。

今天一个偶然,去查了查CNN数据不均衡的问题,发现网上资料不少,主要围绕过采样的方法,看了下定义,原来就是我的这个操作方式,这种方式不适合在SVM里面使用,因为数据表现的信息恒定不变,可是为啥在CNN里面效果好呢?复制样本并没有添加任何的信息。只是为了让mini-batch更均衡的使用每个类别数据。

跟着疑问,追逐mini-batch的痕迹,在梯度下降的时候,由于计算量和机器的限制,无法一次性读入所有数据,而1个样本1个样本的处理,根本无法收敛,采用mini-batch,可以找到合适的下降步长和方向,快速收敛。同时,我们在使用mini-batch的时候,是用的sample batch,每一个batch,随机从总训练样本中抽取,这样每一个batch在梯度下降中的表现就不一样了。说到这,应该能联系上过采样在CNN中的好处了,一方面较为均匀的分配给每一个batch每一类别的信息,另一方面,增加了mini-batch的多样性,梯度下降能更好的找到最优或局部最优解。

当然,最好的方式还是增加信息量,即样本多样性,让模型的准确率更高,这个就是数据量大的说法了。

下次有机会做个对比实验。