深度学习数据对模型的影响
本人作为一个深度学习小白,往往读论文只关注文章的pipeline是如何work的。忘记考虑数据对于模型的影响,也就导致对于论文的实验部分不太重视。对于同一个模型在不同数据集上性能差距很大也没有关注,故本文简单介绍一下数据对于模型性能的影响。
一、数据增强
数据增强是很多论文在实验部分对数据进行预处理的常见操作,常见的让我不以为意。从数据增强的使用频率来看,不难看出数据对于模型性能的重要性。此外不少论文专门研究如何去进行数据增强,比如AlignMixup等。
数据增强简单的说就是基于现有的数据集,通过一些列变换产生不同的数据集以此来增强网络性能。常见的变换有裁剪、旋转、平移、遮盖等。
数据增强是有一定的目的性的,故不是所有数据增强都可以直接使用,需要具体问题具体分析。举两个例子。
- 比如想要训练一个分类网络去区分青和黄柠檬。数据集仅包含青和黄柠檬这两类图片。如果选择使用改变数据集颜色这种数据增强方式将会严重影响模型性能。因为分类模型区分这两类主要在于颜色。
-
卷积网络有一种特性叫纹理倾向性。举个例子中的例子。如下图,是一个卷积分类网络得到的分类结果,可以看出C应该被识别成为一个猫,但应为卷积网络倾向于纹理特征,故决策为印度象。这个时候有人也许会说正常数据集怎么会出现C这种图片呢。是的,但是这个现象反映出得到的网络主要依赖纹理特征而形状特征也是一个重要的决策特征。如果能够让网络同时依赖这两个特征进行决策,这是不是可以提高网络特征。
基于此,AlignMixup就采用对齐混合图像的方式进行数据增强,如下,获得狗的形状,企鹅的纹理的数据。这样也就提高了网络性能。
二、长尾分布
长尾分布比较常见,指的是数据集中少量类别占总数据集比重较大。如果使用带有长尾分布的数据集去直接训练分类网络的话,就会导致对于占比较大的类别能够较好的预测,占比较小的类别不能够较好的预测。这样做,模型整体性能就会下降。
三、数据量不足
数据量不足导致欠拟合,这是我们经常听到的,但是影响有多大呢。我们常用的数据集经过数据增强之后往往足够使用,这使得我们对于数据量不足这一情况欠考虑。尤其是当模型参数量很大,过于复杂时得到的性能比简单模型要差,这时候往往归结于模型的pipeline还是不够强大,却忽略了数据量的大小对模型性能的影响。
这里,我做了一个简单的实验——按比例去掉数据集来看看同一个模型得到的性能。结果如下.可以看到数据集数量对于模型性能影响较大。
数据占原数据集的比例 | Acc |
---|---|
100% | 95.6 |
50% | 90.6 |
10% | 87.5 |
5% | 80.2 |
上述只是数据集对于模型影响的一小部分,但足以看出数据集对于神经网络是比较重要的。只是可能我们平时跑实验都是拿处理好的数据集来做,比较理想化,容易忽略数据集对于模型的影响。