问题
- 很多时候都会存在验证、测试集数据与训练集数据分布不同的问题,目前并没有系统的方法来解决这样的问题,但是往往可以通过人工的方式,找出训练数据和验证测试数据的差别,然后试图对数据进行一些操作来平衡这些差别。
- 例如语音识别,可能测试集数据语音有很多背景噪声,而训练集没有,当然,实际的语音识别环境肯定是有一些背景噪声的,所以对于训练集,我们可以进行一些操作,有人说可以适用合成声音,为清洗的训练集数据添加噪音。
- 但是这么做是有潜在问题的,比如训练集某条数据声音长达1h,而你的噪音是10mins,有一种选择是将10mins的噪音重叠6次来匹配这一条训练数据的声音。这么做对于人耳来说,你可能分辨不出来你听到的其实是重复的噪音,但是对于机器来说,它当然是清楚的。这样做产生的问题就是,机器会对这段噪音过拟合。
后果
- 本身噪音是一个无穷大的集合,然而你只选取这一种噪音,或者几百几千种噪音,重叠播放等等,在机器眼里它只能认识这些噪音,对这些噪音的训练达到了过拟合的程度,而对于其他的自然噪音可能效果并不好。
拓展
- 其实相同的问题不只是出现在语音识别上,图像识别也是如此,有人说,让电脑生成一些带有“汽车”的图片拿去训练,不就有足够的数据了嘛?图像合成的确可以做到,然而再怎么做,也是在一定的集合范围内,它永远无法涵盖所有的汽车,所以机器对于这些图片中的车辆进行了过拟合的训练。
- 不过当然,人工合成数据有时候也是可行的,不过你要在心里知道,你提供的数据可能没有涵盖所有的可能。