我们已经看过一些方法去估计有多少误差可归因于可避免偏差或方差。我们是通过估计最优错误率,并计算算法的训练集和开发集误差来进行估计的。让我们讨论一个更具信息性的方法:绘制学习曲线。
学习曲线会根据训练样本的数量来绘制开发误差。为了绘制它,你可以使用不同大小的训练集去运行算法。例如,如果你有1000个样本,你可以在100,200,300,…,1000个样本上单独训练算法副本。然后你就能画出开发错误如何随着训练集大小而变化的曲线了。如下图所示:
随着训练集大小的增加,开发错误应该减少。
我们经常会有一些我们希望学习算法最终能达到的“期望错误率”。例如:
- 如果我们希望达到人类水平的表现,那么人类错误率可能就是“期望错误率”。
- 如果我们的学习算法为某些产品提供服务(如提供猫咪图片),我们可能会直观地了解需什么样的水平才能给用户提供出色的体验。
- 如果你长期从事于开发某一个重要应用,那么你可能会有直觉认为在下一个季度/年内能合理取得多大进展。
将期望的表现水平添加到你的学习曲线中:
你可以直觉地推断红色的“开发误差”曲线随着训练集增大的情况,以此来猜测通过添加更多的数据你能够多接近期望的性能水平。在上面的例子中,通过再增加一倍的训练集大小来达到期望的水平是看似合理的。
但如果开发错误曲线趋于“稳定”(即变平),那么你可以立刻知道添加再多数据也并不能达到你的目标:
查看学习曲线可帮助你避免花费数月时间来收集两倍多的训练数据,因为你已意识到这并不起作用。
这个过程的一个缺点是,如果你只关注开发误差曲线,给你更多的数据,你很难推断和准确预测红色的曲线的走向。一个附加的曲线能够帮助你去评估添加更多数据的影响:训练误差。