[关闭]
@sambodhi 2018-05-11T07:02:39.000000Z 字数 3263 阅读 665

七条来自吴恩达新书《机器学习训练秘籍》的有用建议

作者|Dan Clark
译者|Zhiyong Liu
编辑|Vincent Chen

AI前线导读:吴恩达作为世界级人工智能和机器学习领域最权威的学者之一,和Yann LeCun、GeoffreyHinton、Yoshua Bengio并称深度学习界的四大金刚。本公众号曾发布过有关吴恩达的文章,如最近发布的《吴恩达的Drive.ai无人车开通免费打车服务,7月上路!》、《吴恩达、Jeff Dean力荐机器学习新基准MLPerf ,由谷歌百度等联手打造》、《吴恩达刚刚注册了一个微信公众号,明天发布新书中文版!》等等,可见吴恩达炙手可热的程度。今天我们翻译了KDnuggets的Dan Clark撰写的博文《七条来自吴恩达新书《机器学习训练秘籍》的有用建议》(7 Useful Suggestions from Andrew Ng “Machine Learning Yearning”),给吴恩达的人气再添上一把猛柴。

《机器学习训练秘籍》(Machine Learning Yearning)是人工智能和深度学习的大佬新出的一本书,该书着重介绍如何让机器学习算法能够工作,以及如何构建机器学习项目。在本文中,我们从该书提出了七条非常有用的建议。

人工智能、机器学习和深度学习正在迅速发展,并改变了许多行业。吴恩达(Andrew Y. Ng)是该领域的领军人物之一,他是Coursrea的共同创始人,百度公司人工智能前负责人,也是Google Brain的前负责人。他正在写一本书:《机器学习训练秘籍》(Machine Learning Yearing,官网:http://www.mlyearning.org/,你可免费得到草稿副本),这本书将教会你如何构建机器学习项目。

吴恩达写道:

本书的重点不在于教授机器学习算法,而在于如何使机器学习算法发挥作用。一些技术人工智能课程会给你一个锤子;这本书教你如何使用锤子。如何你渴望成为人工智能的技术领导者并想学习如何为你的团队准确找到方向,这本书将会有所帮助。

我们已经阅读了这份草稿,并从该书中选出了七条最有意思、最有用的建议:

1. 优化和满意度指标

你应该考虑使用多个评估指标,而不是使用单个公式或指标来评估算法。做到这一点的一种方法是通过“优化”和“满意度”的指标。

Combining Multiple Evaluation Metrics

以上图所示为例,我们可以首先定义可接受的运行时间,比如小于100毫秒,这可以视为我们的“满意度”指标。你的分类器必须“足够好”,因为要求它的运行时间小于100毫秒这个值,仅此而已。此处的准确度(Accuracy)是“优化”指标。它可以是评估算法的一种非常有效、简单的方法。

2. 快速选择开发/测试集——如有必要,不要害怕改变它们

在开始一个新项目时,吴恩达解释说,他为了给团队一个明确定位的目标,会试图快速选择开发/测试集。设定好初始的一周目标,最好的做法是,提出一些不完美的想法,然后迅速行动起来,而不是在这个阶段考虑过多。

话虽如此,但如果你突然意识到,你选择的初始开发/测试集不正确的话,不要害怕改变。之所以会选择错误的开发/测试集,有三个可能的原因:

请记住,改变,并不是什么大不了的事。只要这样做,就可以让你的团队知道你的新方向。

3. 机器学习是一个迭代过程;不要期望它第一次就发挥作用

吴恩达表示,构建机器学习软件有三种方法:

Machine Learning Iterative Process

见上图所示,当你绕着这个圈跑得越快,那么你取得的进步就越快。这也是为什么吴恩达强调事先选择开发/测试集很重要的原因,因为它可以在迭代过程中节省宝贵的时间。对这个数据集进行性能测试可以让你快速了解事情是否朝着正确方向发展。

4. 快速构建第一个系统,然后迭代

正如第三点所述,构建机器学习算法是一个迭代过程。吴恩达专门写了一个章节,解释快速构建第一个系统,然后从此开始的好处:“不要试图去设计、构建完美的系统。相反,要快速构建并训练一个基本的系统,而这也许只需短短几天就完成了。就算这个基本的系统离你所能构建的‘最佳’系统还很远,但你要明白,研究基本系统的功能还是有很大价值的:你会很快发现线索,并找到如何将时间投入最有希望的方向。”

5. 并行地评估多个想法

当你的团队在如何改进算法有很多想法时,你可以并行地、有效地评估这些想法。通过创建一个能够检测猫类图片的算法,吴恩达解释了他是如何创建一个表格,并在查看约100个错误分类的开发/测试集图像时填写表格,如下图所示。

Evaluating Multiple Ideas Parallel

在这种表格中,包括对每张图片的分析,失败的原因,以及其他可能有助于未来反思的意见。完成之后,你可以看到哪些想法能够消除更多的错误,因此应该进行哪些操作。

6. 考虑清理错误的开发/测试集是否值得

在你的错误分析过程中,你可能会注意到开发/测试集中的一些样本被错误标记了。也就是图像被人为错误标记了。如果你怀疑其中一小部分错误是由于此原因造成的,那么就在表格中中添加一个额外的类别:

Evaluating Mislabeled Images

在完成这些操作之后,你就可以考虑,花时间来解决这些问题是否值得。吴恩达给出了两种可能的情况,来判断这些问题是否值得修正。

示例 1:

Overall accuracy on dev set.………………. 90% (10% overall error)

Errors due to mislabeled examples……. 0.6% (6% of dev set errors)

Errors due to other causes………………… 9.4% (94% of dev set errors)

“此处,相对于你所能改善的9.4%的错误而言,由于错误标记导致的0.6%可能远远没有那么重要。在开发集中,手动修复错误标记的图像并没有什么害处,但这样做并不重要:就算你不知道系统总体错误是10%还是9.4%,可能都没有什么问题。”

示例 2:

Overall accuracy on dev set.………………. 98.0% (2.0% overall error)

Errors due to mislabeled examples……. 0.6%. (30% of dev set errors)

Errors due to other causes………………… 1.4% (70% of dev set errors)

“30%的错误,是由于开发集图像错误标记所致,这样对准确度的估计会增加重大误差。这情况下,很有必要改进开发集的标记质量。处理错误标记的样本将有助于你查看分类器的错误是接近1.4%还是2%,这是一个显著的相对偏差。”

7. 将开发集分成单独的子集

吴恩达解释,如果你有一个大型的开发集,其中20%存在一个错误率,那么将它们分厂两个单独的子集是值得的:

“使用该算法对开发集5000个样本中的1000个样本进行了错误的分类。假设我们要手动检查,对大约100个错误进行错误分析(10%的错误)。你应该随机选择10%的开发集,并将它放置到我们称为Eyeball的开发集中,提醒自己我们是用眼睛观看的。(在有关语音识别的项目中,你会听到音频剪辑的说法,也许你可以称之为Ear开发集)。因此,Eyeball开发集有500个样本,我们希望能够对大约100个错误进行分类。”

开发集的第二个子集,称为Blackbox开发集,将拥有剩下的4500个样本。你可以使用Blackbox开发集通过测量错误率来自动评估分类器。当然,你还可以使用它来选择算法或者调优超参数。但是,你应该避免用眼睛去观看。我们使用“Blackbox”这个术语,是因为我们只会使用这些数据的子集来获得“Blackbox”对分类器的评估。

原文链接: 7 Useful Suggestions from Andrew Ng “Machine Learning Yearning”
https://www.kdnuggets.com/2018/05/7-useful-suggestions-machine-learning-yearning.html

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注