10. 使用开发集和评估指标加速迭代

对于一个新的问题很难预先知哪种解决办法最有效。即使是那些经验丰富的机器学习专家,在发现有效的解决办法之前也大量尝试各种想法,在构建一个机器学习系统的时候,我通常:

  1. 从一些关于如何构建系统的idea开始;
  2. 在代码中实现这些想法;
  3. 通过实验观察这个idea的效果(通常来说最开始的想法都是无效的!),基于这些知识,回过头来产生更多的idea,并继续迭代。

10. 使用开发集和评估指标加速迭代 - 图1

这是一个迭代的过程。这个循环的过程越快,你的进展就会越快。这就是开发/测试集和单一评估指标非常重要的原因:每次你尝试一个想法时,通过在开发集上衡量该想法的性能,让你快速地判断出你自己是否朝着正确的方向前进。

相反,假设你没有特定的开发集和评估指标。那么每次当你的团队构建出新的猫分类器时,你都不得不将它整合进你的App里,并好好地玩上个几小时来感受这个新的分类器的性能是否有所提升,这种方法非常慢。另外,如果你的团队将分类器的性能从95.0%提升到95.1%,通过使用App的方式并不能让你感受到这0.1%的变化。而每次这0.1%的改进,累积起来就会帮助你的系统取得很大的进步。拥有一个开发集和评估标准让你能够快速的发现那些成功地带来了小的(大的)改进的想法,从而让你可以快速的决定哪些办法是需要继续提炼的,哪些是可以舍弃的。