解决数据不匹配问题

假设你已经开发了一个语音识别系统,它在训练集和训练开发集上都做得很好。但是,它在你的开发集上做得很差:这表明有一个数据不匹配的问题。你会怎么做呢?

我建议你:(I)尝试理解数据属性在训练集和开发集分布之间的差异。(ii)尝试找到更多的训练数据,以便更好地匹配你的算法碰到的开发集样本。

也有一些关于“域适应”的研究——如何在一个分布上训练算法,并将其推广到不同的分布。这些方法通常只适用于特殊类型的问题,并且用得比本章中所描述的理论要少得多。

例如,假设你在语音识别的开发集中进行误差分析:手动地遍历 100 个样本,并尝试理解算法错出在哪。你会发现你的系统做得的确很差,因为在开发集中,大部分的音频剪辑都是在一辆车里录制的,而大多数的训练样本都是在一个安静的环境下录制的。引擎和道路噪音极大地恶化了你的语音系统的性能。在这种情况下,你可能会尝试获得更多的训练数据,包括在汽车里拍摄的音频片段。误差分析的目的是了解训练集和开发集之间的显著差异,这正是导致数据不匹配的原因。

不幸的是,这个过程没有任何保证。例如,如果你没有任何方法获得更多的训练数据,来更好地匹配开发集数据,那么你可能没有一条明确的路径来提高性能。


改进当前页面