吴恩达的《Machine Learning Yearning》主要讲的是如何构建好的机器学习项目。这本书包含了很难在其他地方找到的实际见解,其格式很容易与队友和合作者分享。大多数人工智能技术课程都会向你解释不同的 ML 算法如何在框架下工作,但是这本书教你如何实际使用它们。如果你渴望成为人工智能的技术领导者,这本书将帮助你的道路。历史上,学习如何对人工智能项目做出战略决策的唯一方法是参加研究生课程或获得在公司工作的经验。《Machine Learning Yearning》是有助于你快速获得这种技能,这使你能够更好地建立复杂的人工智能系统。
关于作者
吴恩达是一位计算机科学家、执行官、投资者、企业家,也是人工智能领域的 Top 专家之一。他是百度的前副总裁兼首席科学家,斯坦福大学的兼职教授,最受欢迎的机器学习在线课程之一的创建者,coursera.com 的联合创始人和谷歌大脑的前任负责人。在百度,他曾将人工智能团队扩展到数千人。
介绍
《Machine Learning Yearning》这本书从一个小故事开始。想象一下,你想在公司里建立一个性能领先的猫识别系统。您已经构建了一个原型,但不幸的是,您的系统的性能没有那么好。您的团队提出了几个关于如何改进系统的想法,但是您对遵循哪个方向感到困惑。你可能建立世界领先的猫识别系统,或者在错误的方向上浪费数月的时间。
这本书是要告诉你如何在这样的情况下作出决定,找到最优解决方案。吴恩达提出大多数机器学习问题都会留下关于下一步该如何做的线索,以及你应该避免做的事情。他继续解释说,学习“阅读”这些线索是我们领域的一项关键技能。
简而言之,ML Yearning 为你提供一份关于如何设置机器学习项目技术方向的深层次的理解。
由于你的团队成员在你提出新想法时可能会持怀疑态度,所以吴恩达把这些章节写得很短(1-2 页),这样你的团队成员就可以在几分钟内读懂它来理解这些概念背后的概念。如果你有兴趣读这本书,请注意,它不适合完全初学者,因为它需要基本熟悉监督学习和深入学习。
在这篇文章中,我将用我自己的语言总结这本书的 6 个核心理念。
1. 迭代、迭代、再迭代
吴恩达在书中强调,快速迭代非常重要,因为机器学习是一个迭代过程。不要考虑如何为您的问题构建完美的 ML 系统,您应该尽可能快地构建一个简单的原型。如果你不是问题领域的专家,这一点尤其正确,因为很难正确猜测最有希望的方向。
你应该在几天内构建第一个原型,然后弹出提示,向你展示改进原型性能的最有希望的方向。在下一个迭代中,你将根据其中的一个提示继续改进系统,并构建下一个版本的系统。你会一次又一次地这样做。
吴恩达继续解释说,迭代的越快,你将取得更多的进展。这本书的其它概念,都是建立在这一原则的基础上。但请注意,这是为那些只想构建基于人工智能的应用程序而不想在该领域进行研究的人设计的。
2. 使用单一的评价指标
这个概念建立在前一个概念的基础上,关于为什么选择单个数字的评估度量的解释非常简单:它使您能够快速评估算法,因此您能够更快地迭代。使用多个评估指标只会使比较算法变得更加困难。
假设你有两个算法。第一个具有 94% 的精确率和 89% 的召回率。第二种方法的精确率为 88%,召回率为 95%。
如果你没有选择一个评估指标,那么不知道哪个分类器是更好的,因此可能需要花费一些时间来弄清楚。问题是,在每次迭代中都会为这个任务浪费大量时间,并且从长远来看,累积起来耗费的时间更多。你将尝试许多关于体系结构、参数、功能等想法。如果使用单个数字评估指标(如精确率或 F1 分数),则可以根据模型的性能对所有模型进行排序,并快速确定哪个模型最有效。改进评估过程的另一种方法是将多个度量合并为一个度量,例如,通过平均多个错误度量。
然而,仍然存在需要满足多个指标的 ML 问题,例如:运行时间。吴恩达解释说,你应该定义一个“可接受的”运行时间,这使你能够快速地整理出速度太慢的算法,并根据你的单个评估指标得到令人满意的算法。
简言之,单个评估指标能使你能够快速评估算法,从而更快地迭代。
3. 错误分析是关键
错误分析是查看分析算法输出错误的过程。例如,假设你的猫识别器把鸟误认为猫,并且你已经对如何解决这个问题有了一些想法。
通过适当的错误分析,你可以估计改进的想法实际上会提高系统性能的程度,而无需花费数月的时间来实现这个想法,然后发现它对提升系统并不重要。这使你能够决定哪种想法是值得花最多的资源去实现的。如果你发现错误分类的图像中只有 9% 是鸟,那么无论你多大程度上改进算法在鸟分类上的性能,结果并不重要,因为它不会提高超过 9% 的性能。
此外,吴恩达提出几个使你能够快速进行错误分析的想法。您只需要创建一个电子表格,然后从验证集中选取 100 个错误分类的图像。在电子表格中,为每一个错误分类的图像创建一行,为每一个需要改进的想法创建一列。然后你检查每一个错误分类的图像,并记录哪些改进想法能够使该错误图像被正确分类。
比如,这样做之后你会发现,使用 IDEA-1,系统将正确分类 40% 的错误分类图像,使用 IDEA-2,正确分类 12%,使用 IDEA-3,正确分类只有 9%。然后你就会知道,IDEA-1 是你的团队应该做的最有希望的改进。
此外,一旦你开始查看这些错误分类的图像,你还可能会发现改进算法的新想法。
4. 定义一个最佳错误率
最佳错误率有助于指导您接下来的步骤。在统计学中,它也经常被称为贝叶斯误差率。
想象一下,你正在构建一个语音转文本的系统,你发现用户提交的 19% 的音频文件有比较大的背景噪音,甚至人都无法识别其中所说的内容。如果是这样的话,即使是最好的系统也可能有高达 19% 的误差。相反,如果你处理的是一个最佳错误率接近 0% 的数据集,你的系统应该会表现得更好。
定义一个最佳错误率还会帮助你检测算法是否存在高偏差或方差,这有助于你定义下一步改进算法。
但我们如何知道最佳错误率是多少呢?对于人类擅长的任务,您可以将系统的性能与人类的性能进行比较,从而估计出最佳错误率。在其他情况下,通常很难定义一个最佳错误率,这就是为什么你应该研究人类在某些问题上能够做得很好的问题,我们将在下一部分讨论。
5. 努力解决人类能做得很好的问题
在整本书中,吴恩达解释了好几次为什么建议专注于人类擅长的领域上研究机器学习。例如语音识别、图像分类、目标检测等。这有几个原因。
首先,更容易获得或创建一个标记的数据集,因为如果人们能够自己解决问题,那么他们很容易为你的学习算法提供高精度的标签。
其次,你可以使用人工性能作为希望用机器算法达到的最佳错误率。吴恩达解释说,定义了一个合理且可实现的最佳错误有助于加快团队的进度。它还可以帮助你检测你的机器算法是否存在高偏差或方差。
第三,它能使你能够根据人类直觉进行错误分析。例如,如果你正在构建语音识别系统,并且你的模型对输入进行了错误的分类,那么你可以尝试了解人类将使用哪些信息来获得正确的识别,并使用这些信息相应地修改学习算法。虽然算法在越来越多的任务上超过了人类,而人类自己却做不好,但是你应该尽量避免这些问题。
总的来说,你应该避免这些人类不擅长的任务,因为这会使你的数据更难获得标签,你不能再依靠人类的直觉,而且很难知道最佳错误率是什么。
6. 如何划分数据集
吴恩达还提出了一种如何分割数据集的方法。他建议如下:
训练集:使用它,你可以训练你的算法,而不需要其他任何东西。
验证集:这个集合用于进行超参数调整、选择和创建适当的特性以及进行错误分析。它基本上是用来决定你的算法的。
测试集:测试集用于评估系统的性能,但不用于做决定。它只是用来评估的,没有别的。
验证集和测试集允许你的团队快速评估算法的性能。它们的目的是指导你对系统进行最重要的更改。
吴恩达建议使用验证集和测试集,以便在未来系统部署之后,你希望在哪个数据集上表现得更好。如果你实际用到的数据与当前训练的数据不同,这一点尤其重要。例如,你训练模型的时候使用的普通相机拍摄的图片,但实际应用中系统将只接收手机拍摄的照片,因为它是一个手机 app 应用。如果你没有足够的手机照片来训练你的系统,这可能就会出问题。因此,您应该选择测试集,这些测试集反映出你希望在以后的实际情况中表现出色的数据类型,而不是用于训练的数据。
另外,您应该选择来自同一分布的验证集和测试集。否则,你的团队有可能会在验证集上构建一些性能良好的模型,结果发现它在测试数据上的性能非常差,这是你最关心的。
总结
在这篇文章中,我向大家介绍了《Machine Learning Yearning》这本书的 6 个核心概念。现在你知道了,为什么快速迭代很重要,为什么应该使用单个评估指标,以及什么是错误分析,为什么它至关重要。此外,你还了解了最佳错误率、为什么你应该处理人类可以做得很好的机器学习问题以及如何划分数据。另外,您应该选择来自同一分布的验证集和测试集。希望这篇文章能给你介绍一下这本书的一些关键概念,我可以肯定地说这本书值得一读。
资源
最后,附上吴恩达《Machine Learning Yearning》的电子书,包含英文版和官方授权翻译的中文版!供大家参考学习。