13-19章
-
快速构建并迭代你的第一个系统 试图在一开始就设计和构建出完美的系统会有些困难,不妨先花几天的时间构建并训练一个最基础的系统。 或许这个最基础的系统离我们所能构建的“最佳”系统相去甚远,但研究里面的基础功能也很有价值:你会很快地找到一些线索来帮助决定在什么方向投入时间
-
误差分析:根据开发集样本评估想法。 误差分析(Error Analysis) 指的是检查算法误分类的开发集样本的过程,以便你找到造成这些误差的原因。这将帮助你确定项目优先级(就像上面的例子提到的)并且获得关于新方向的灵感 。 一个想法对误差是否有改进,可以考虑极限的方式。 把精力放在改进空间最大的区域。
-
清洗误标注的开发集和测试集样本。 基于统计数据进行决策。
-
将大型开发集拆分为两个子集,专注其一。 将开发集明确地分为 Eyeball 和 Blackbox 开发两个子集将很有帮助,它使你了解在人为的误差分析过程中 Eyeball 开发集何时开始发生过拟合。 发生过拟合的时候,可以把更多的Blackbox 中的元素放到Eyeball中。
-
Eyeball 开发集应该大到能够让你对算法主要的错误类别有所察觉。如果你正在处理一项人类表现良好的任务(比如识别图像中的猫),下面是一些粗略的指导方案 :
- 如果分类器在 Eyeball 开发集上只犯错 10 次,这个开发集就有点小了。只有 10 个错误样本的话,很难准确估计不同错误类别的影响。但如果数据非常少且不能提供更多的 Eyeball 开发集样本时,聊胜于无,这将有助于确立项目的优先级。
- 如果分类器在 Eyeball 开发集上样本上犯了约 20 次错误,你将会开始大致了解主要的误差来源。
- 如果有约 50 个错误样本,你将会比较好地了解主要的误差来源。
- 如果有约 100 个错误样本,你将会很清楚主要的误差来源。我见过有人手动分析更多的错误样本——有时候多达500个。只要你有足够多的数据,这将是无害的。
Eyeball 开发集的大小将主要取决于你能够手动分析样本的时间,以及你所拥有的访问数据的权限;
-
小结:基础误差分析
- 当你开始一个新项目,尤其是在一个你不擅长领域时,很难正确猜测出最有前景的方向。
- 所以,不要在一开始就试图设计和构建一个完美的系统。相反,应尽可能快(可能在短短几天内)地构建和训练一个基本系统。然后使用误差分析去帮助你识别出最有前景的方向,并据此不断迭代改进你的算法。
- 通过手动检查约 100 个算法错误分类的开发集样本来执行误差分析,并计算主要的错误类别。用这些信息来确定优先修正哪种类型的错误。
- 考虑将开发集分为人为检查的 Eyeball 开发集和非人为检查的 Blackbox 开发集。如果在 Eyeball 开发集上的性能比在 Blackbox 开发集上好很多,那么你已经过拟合 Eyeball 开发集,并且应该考虑为其获得更多的数据。
- Eyeball 开发集应该足够大,以便于算法有足够多的错误分类样本供你分析。对很多应用来说,含有1000-10000个样本的 Blackbox 开发集已足够。
- 如果你的开发集不够大到可以按照这种方式进行拆分,那么就使用 Eyeball 开发集来用于人工误差分析、模型选择和调超参。
欢迎关注我的公众号或者加我微信!
网友评论