怎么处理数据不匹配问题

在上一篇 的文章中,提到了为了增大数据,可能会引入数据不匹配问题,介绍了如何来分析数据不匹配问题。

本篇文章主要介绍如何来处理数据不匹配问题,文章主要内容来自于deeplearning ai视频教程。

数据不匹配

当我们的训练集和开发集来自不同分布时,通过误差分析,确定发现我们的数据存在数据不匹配问题时,我们应该如何处理?

目前还没有很系统的方法可以解决这个问题,不过我们可以从下面几个方面进行尝试来解决这个问题。

  • 分析训练集和开发集的差异

通过误差分析发现我们的数据存在数据不匹配问题时,应该先去观察训练集和开发集数据之间的差异,需要注意的是在进行误差分析的时候不要在测试集上进行分析,以避免算法在测试集上发生过拟合。

下面举例说明一下,假如你正在开发一个汽车语音导航系统,通过误差分析发现存在数据不匹配问题时,此时你需要先听一听训练集和开发集的语音,来帮助你分析训练集和开发集之间的差异。

听完之后发现,开发集中的语音可能存在较多的噪声而训练集中则没有,当说到街道地址时经常识别错误。此时,我们已经知道了开发集数据与训练集数据的不同之处,发现开发集比训练集更难识别。这时,可以将我们的训练集变的更像开发集。比如说,可以试着收集更多的像开发集那样的数据、收集更多街道地址的语音信息。

  • 人工合成数据
怎么处理数据不匹配问题

我们在分析训练集与开发集数据的差异时发现,开发集数据中汽车的语音比较严重,而此时我们又无法收集到更多像开发集那样含有噪音的语音数据。此时可以考虑使用人工合成数据

我们可以通过录制大量清晰的导航语音数据,然后再收集汽车的噪声语音,通过将清晰导航语音数据与汽车噪声进行合成生成类似于开发集那样含有汽车噪声的导航语音。

通过这种方式,我们就可以快速制造大量的训练数据,就像真实场景(开发集)下的数据一样。

!!注意!!

在使用人工合成数据的时候,有一个地方需要特别注意。假如我现在有10000个小时清晰的导航语音数据,有1个小时的汽车噪声语音,通过将1小时汽车噪音的语音数据进行回放来叠加作为清晰导航语音数据的背景就能够获得10000个小时含有噪声背景的导航语音数据了。

这样合成数据,可能会导致一个问题就是算法可能会在这一个小时的噪声数据上过拟合,最好的做法是尽量收集多的噪音数据然后再叠加到清晰的语音数据中,来提高算法的性能。

因为如果收集的噪声数据过少,此时我们可能只是模拟了整个空间中一个很小的子集,在人工合成数据的时候应该尽可能多的考虑可能性,避免发生过拟合,人工合成数据目前在语音识别领域已经取得了非常不错的效果。当遇到数据不匹配问题时,可以考虑使用人工合成数据来进行处理。


最近开通了微信公众号,在微信公众号上,分享了一些资料,搜索"Python机器学习之路"关注我即可获取,有什么问题欢迎咨询。


分享到:


相關文章: