设置开发和测试集
- 开发集和测试集的定义
- 开发集和测试集应该服从同一分布
- 开发集和测试集应该有多大?
- 使用单值评估指标进行优化
- 优化指标和满意度指标
- 通过开发集和度量指标加速迭代
- 何时修改开发集、测试集和指标
- 小结:建立开发集和测试集
基本误差分析
- 快速构建并迭代你的第一个系统
- 误差分析:根据开发集样本评估想法
- 在误差分析时并行评估多个想法
- 清洗误标注的开发集和测试集样本
- 将大型开发集拆分为两个子集,专注其一
- Eyeball 和 Blackbox 开发集该设置多大?
- 小结:基础误差分析
偏差和方差
学习曲线
与人类水平的表现相比
不同发行版的培训和测试
调试推理算法
端到端学习
按零件进行误差分析
总结
何时在不同的分布上训练与测试
假设用户已经向你的猫咪图片程序上传了 10000 张图片,且图片已被人为标记为含有猫与不含猫两类。同时你也从互联网上下载了规模更大的 200000 张图片集,此时训练集、测试集与开发集应该如何定义呢?
由于用户的 10000 张图片密切地反映了你想要处理的数据的实际概率分布,因此你可以将它们作为开发集与测试集。如果你正在训练一个数据量饥渴的深度学习算法,则可能需要使用额外的 200000 张网络图片来进行训练。这样的话,你的训练集与开发集/测试集将服从不同的概率分布。这对你的工作会有什么影响呢?
除了将数据集直接划分为训练集、开发集和测试集这一做法外,我们还能将所有的 210000 张已有图片先进行整合,接着随机打乱它们,再进行划分。经过这样的处理,所有的数据都将服从相同的分布。但我建议你不要使用这种方法,因为这样大约 97.6%(205,000/210,000)的开发/测试数据将来自于互联网图像,这并不能反映出你想要处理数据的实际分布。请记住我们关于选择开发/测试集的建议:
选择开发集和测试集以反映你在将来想要正确处理的数据。
大多数关于机器学习的学术文献都假定训练集、开发集和测试集都来自于相同的分布。在机器学习的早期,数据是稀缺的。我们通常只有一个服从某些概率分布的数据集。因此,我们会随机地将这些数据分割成训练/开发/测试集,并且假设所有的数据来源相同且满足要求。
有一些在不同的分布上进行训练和测试的学术研究。例子包括“域适应”、“迁移学习”和“多任务学习”。但理论与实践之间仍存在巨大差距。如果你在数据集A上进行训练,并测试一些类型很不一样的数据B,运气成分可能会对你的算法的性能产生巨大的影响。(在这里,“运气”包括了研究人员为特定任务人为设计的特征,以及其他我们还不了解的因素。)这使得对不同分布的训练和测试的学术研究难以系统地进行。
但在大数据时代,我们现在可以使用大型的训练集,比如猫的网络图像。即使训练集的分布不同,我们仍然希望使用它来学习,因为它可以提供大量的信息。
对于猫咪检测器的示例,我们不会将用户上传的所有 10000 个图像放到开发/测试集合中,而是将其中 5000 张放入。 这样的话,训练集中的 205000 个样本的分布将来自现有的开发/测试集,以及 200000 张网络图片。我们将在后面的章节中讨论为什么这个方法是有帮助的。
让我们考虑第二个例子。假设你正在建立一个语音识别系统,将某个街道地址转换为一个语音控制的移动地图/导航应用程序。现在你有 20000 个“用户说出街道地址”的样本,但是你也有 500000 个其他音频片段的样本,内容是“用户谈论其他话题”。你可能会为开发/测试集合选取 10000 个街道地址样本,并使用剩下的 10000 个样本,再加上 50 万个其它音频内容的样本进行训练。
我们将继续假设你的开发数据和测试数据来自相同的分布。但重要的是你要明白,不同的训练和开发/测试集分布将带来一些特殊的挑战。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论