训练集误差分析

你的算法必须先在训练集上表现得很好,才能期望它在开发集和测试集上也有良好的表现。

除了先前提到的用于处理高偏差的技术外,我通常也会在训练数据上进行误差分析,处理方式类似于在开发集上设置一个 Eyeball 开发集。当你的算法有着高偏差时(例如算法没能很好的拟合训练集)这将有所帮助。

举个例子,假设你正在为一个应用程序构建一个语音识别系统,并收集了一组志愿者提供的音频片段。如果系统在训练集上表现不佳,你可能会考虑选取那些算法处理得很差的样本,以100 个左右作为一组并人为去听它们,从而知道训练集误差的主要种类。类似于开发集上的误差分析,你可以计算不同类别的错误样本数量:

音频片段背景噪音很大语速太快距离麦克风太远备注
1 汽车噪音
2 餐馆噪音
3 在起居室里喊叫?
4 咖啡厅
占全体比例75%25%50%

在本例中,你可能会发现算法在处理具有大量背景噪音的训练样本时遇到了困难。因此你可能会关注一些技术,使其能够更好地适应包含背景噪音的训练样本。

你也可以仔细检查正常人是否能转录这些音频片段,这些音频应该与你的学习算法的输入音频相同。如果背景噪音过于嘈杂,导致任何人都无法理解音频里说了什么,那么期望算法正确地识别这样的话语就不太合理。我们会在后面的章节中讨论,将算法的性能与人类水平进行比较的好处。