0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

《机器学习训练秘籍》:书中选出了7条非常有用的建议

8g3K_AI_Thinker 来源:未知 作者:李倩 2018-05-15 18:45 次阅读

机器学习训练秘籍》(Machine Learning Yearning)是吴恩达的新作,主要讲的是如何应用机器学习算法以及如何构建机器学习项目。本文从这本书中选出了 7 条非常有用的建议。

近年来,人工智能、机器学习和深度学习迅猛发展,给许多行业带来了变革。吴恩达是业内的领军人物之一,他是在线课程项目 Coursera 的联合创始人,前百度 AI Group 领导人,前 Google Brain 项目负责人。目前他正在编写《机器学习训练秘籍》(http://www.mlyearning.org/)这本书,教读者如何组织机器学习项目。

吴恩达在书中写道:

这本书主要是教你如何应用机器学习算法,而不是教你机器学习算法本身。一些AI技术课程会教你算法,而这本书旨在教你如何使用算法这个利器。如果你想成为 AI领域的技术领袖,并希望学习如何为你的团队设定方向,这本书会给你帮助。

我们在阅读这本书的原稿后从中选出了 7 条有趣且实用的建议.

▌1. 选择正确的评估指标

在评估某个算法时,不应该只使用一个公式或指标,而应使用多个评估指标。其中一种方法就是使用“optimizing”和“satisfying”作为指标。

以上图为例,首先定义一个“acceptable”(可接受)的运行时间(例如小于 100 毫秒),作为“satisfying”指标。只要运行时间低于这个指标,你的分类器就「很好」。“准确度”在这里作为“optimizing”指标。这是一种非常有效且容易的算法评估方法。

▌2. 快速选择开发/测试集——如果有必要不要害怕更换

当开始一个新项目时,吴恩达在书中解释道他会很快选择开发集/测试集,因为这样可以给团队制定一个明确的目标。开始时他会先制定第一周的目标,提出一个不太完美的方案并迅速行动起来,比花过多时间思考更好。

如果你突然发现初始的开发/测试集不正确时,不要害怕更改它们。以下是书中给出的开发/训练集不正确的三个可能原因:

要使用的实际数据分布和开发/测试集不同

开发/测试集过度拟合

评估指标衡量的并不是项目所需要优化的东西

请谨记,更改开发/测试集不是什么大问题。放心更改,让你的团队知道你们的新方向。

▌3. 机器学习是一个迭代过程:不要指望第一次就成功

吴恩达写道他开发机器学习软件的过程分三步:

从一个想法开始

用代码实现这个想法

通过实验判断这个想法是否成功

这是一个不断迭代的过程。循环得越快,进展也就越快。这就是为什么提前确定开发/测试集很重要,因为这样做可以在这个迭代过程中省下宝贵的时间。每尝试一个新想法时,在开发/测试集上衡量这个想法的表现,这样你就可以快速判断你是否在朝着正确的方向前进。

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

在第三条建议中,我们提到构建机器学习算法是一个迭代过程。吴恩达专门用一个章节解释了快速构建第一个系统然后迭代的好处:「不要试图一开始就设计和构建完美的系统。相反,应该快速构建和训练出一个基本系统——也许在短短的几天内。即使这个基本系统与您你构建的“最佳”系统相差甚远,研究基本系统的表现仍非常有参考价值:你很快就会找到线索,以此确定哪个方向最有希望获得成功。」

▌5. 并行评估多个想法

当你的团队针对如何改进某一算法提出了很多想法,你可以高效地并行评估这些想法。举例来说,构建一个能识别猫照片的算法,吴恩达称他通常会创建一个电子表格,浏览大约 100 张分类错误的开发/测试集图像并在表格上记录。

在表格上记录:对每张图像的分析,造成算法分类错误的原因,以及可能对未来反思有帮助的评论。填完后,你会得出哪种想法可以避免更多错误,然后再去实现它。

▌6. 思考清理贴错标签的开发/测试集是否值得

在错误分析期间,你可能会注意到开发/测试集中的一些样本被错误标注(mislabeled)。也就是说,在用算法处理前之前,图片已经被人类标注员贴上了错误的标签。如果你怀疑有一小部分的图片被错误标注是由于这个原因,那么可以在电子表格中添加再一个类别进行记录:

在完成后,你可以思考修正这些错误是否值得。吴恩达给出了两种可能的场景,让读者判断修正错误是否值得:

示例1:

开发集的整体准确率……90%(整体错误率为 10%)

贴错标签样本导致的错误……0.6%(占开发集错误的 6%)

其他原因导致的错误……9.4%(占开发集错误的 94%)

在这个例子中,相较于你可能改进的 9.4% 的错误,由于错误标注导致的 0.6% 的不准确率就可能没那么重要。手动修正开发集中错误标注的图像并没有什么坏处,但这样做并不是关键:不知道系统的整体错误是 10% 还是 9.4% 可能没什么大不了。

示例 2:

开发集整体准确率……98.0%(整体错误率为 2.0%)

贴错标签样本导致的错误……0.6%(占开发集错误的 30%)

其他原因导致的错误……1.4%(占开发集错误的 70%)

30% 的错误是由于错误标注的开发集图像造成的,这会让准确率的估计值有很大的误差。这种情况下,改进开发集的标注质量很值得。处理错误标注的样本将帮助你算出分类器的错误是接近 1.4% 还是 2%——这是一个相对明显的差异。

▌7. 考虑将开发集分为多个子集

如果你的开发集很大,其中 20% 的样本被算法错误分类,那么你可以将这个开发集分为两个独立的子集:

比方说,你有一个包含 5000 个样本的大开发集,其中 1000 个样本被错误分类。假设我们要手动检查约 100 个错误样本(错误样本的10%),进行错误分析。那么你应该随机选出 10% 的开发集,然后将其放入我们称之为 Eyeball 的开发集(Eyeball dev set)中,以提醒自己你需要观察这些数据。Eyeball 开发集有 500 个样本,我们预计算法错误分类的样本约有 100 个。

开发集的第二个子集叫做 Blackbox 开发集(Blackbox dev set),它包含剩余的 4500 个样本。你可以用 Blackbox 开发集测定图像分类的错误率,以此自动评估分类器。你也可以使用它来选择算法或调整超参数。我们将这个子集称为 “Blackbox”,是因为我们只使用数据集的子集来取得对分类器的“Blackbox”(黑盒)评估。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 人工智能
    +关注

    关注

    1791

    文章

    46877

    浏览量

    237614
  • 机器学习
    +关注

    关注

    66

    文章

    8381

    浏览量

    132425

原文标题:吴恩达《机器学习训练秘籍》:7 条关于项目实践的实用建议

文章出处:【微信号:AI_Thinker,微信公众号:人工智能头条】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【「时间序列与机器学习」阅读体验】+ 简单建议

    细微差异导致的错误,这无疑增加了调试的难度。因此,我个人建议书中若能在关键代码段旁边添加二维码,链接到可在线运行或验证的代码环境,将极大地提升读者的学习效率和体验。这样一来,读者不仅可以快速验证代码的正确性,还能在互动中加深对
    发表于 08-12 11:21

    对新手非常有用的电子器件基础资料

    本帖最后由 eehome 于 2013-1-5 09:56 编辑 对新手非常有用的电子器件基础资料PCB打样找华强 http://www.hqpcb.com/3 样板2天出货
    发表于 10-20 20:13

    03国赛控制类准备步骤,非常有用

    这是关于国赛准备的一些模块原理图以及相关PCB布线等的步骤,非常有用
    发表于 01-23 22:00

    吴恩达的7机器学习训练秘籍

    非常有用建议。吴恩达介绍道:本书的重点不在于教授机器学习算法,而在于如何使机器学习算法发挥作用
    发表于 09-20 11:41

    机器学习训练秘籍——吴恩达

    ,你正面临着巨大的压力。可你该怎么做呢?你的团队给出了许多建议,例如:● 获取更多的数据,即收集更多的猫咪图片● 收集更加多样化的训练数据集,图片中猫的位置可能不常见,也有可能颜色奇异,或者拍摄时使用不
    发表于 11-30 16:45

    展示Python机器学习开源项目以及在分析过程中发现的非常有趣的见解和趋势

    开源是技术创新和快速发展的核心。这篇文章向你展示Python机器学习开源项目以及在分析过程中发现的非常有趣的见解和趋势。
    的头像 发表于 01-04 11:51 4159次阅读
    展示Python<b class='flag-5'>机器</b><b class='flag-5'>学习</b>开源项目以及在分析过程中发现的<b class='flag-5'>非常有</b>趣的见解和趋势

    机器学习-8. 支持向量机(SVMs)概述和计算

    支持向量机(Support Vector Machine: SVM)是一种非常有用的监督式机器学习算法
    的头像 发表于 04-02 08:49 5183次阅读
    <b class='flag-5'>机器</b><b class='flag-5'>学习</b>-8. 支持向量机(SVMs)概述和计算

    17个非常有用的 Python 技巧

    实际上,很多人选择学习 Python 的首要原因是其编程的优美性,用它编码和表达想法非常自然。此外,Python 的编写使用方式有多种,数据科学、网页开发、机器学习皆可使用 Pytho
    的头像 发表于 08-27 17:56 4903次阅读
    17个<b class='flag-5'>非常有用</b>的 Python 技巧

    Vim中默认未启用但实际非常有用的选项

    Vim 作为一款功能强大、选项丰富的编辑器,为许多用户所热爱。本文介绍了一些在 Vim 中默认未启用但实际非常有用的选项。虽然可以在每个 Vim 会话中单独启用,但为了创建一个开箱即用的高效编辑环境,还是建议在 Vim 的配置文件中配置这些命令。
    的头像 发表于 09-25 17:54 5388次阅读

    机器学习训练秘籍》中的六个概念

    吴恩达在该书中从头到尾一直强调:由于机器学习是一个迭代的过程,快速迭代至关重要。比起去思考如何为你的问题建造一个完美的机器学习系统,不如先尽
    的头像 发表于 03-05 13:44 2806次阅读

    机器学习/人工智能领域一些非常有创意的突破

    本文介绍了近期在机器学习/人工智能领域一些非常有创意的突破,每一个都脑洞大开,不管是否是相关从业人员都值得一读。并附上一些论文、视频链接和简要总结。
    的头像 发表于 05-19 10:49 3381次阅读

    机器学习对分析地理空间图像非常有帮助

    机器学习对分析地理空间图像非常有帮助。卫星照片往往会创建大量数据,而AI软件可以比人类观察者更快地标记出感兴趣的项目。例如,在澳大利亚,消防员定期分析卫星图像以监测野火的蔓延,并努力保持领先地位。
    的头像 发表于 03-22 16:23 2059次阅读

    17个非常有用的Python技巧

    Python 是一门非常优美的语言,其简洁易用令人不得不感概人生苦短。在本文中,作者 Gautham Santhosh 带我们回顾了 17 个非常有用的 Python 技巧,例如查找、分割和合并列表等。这 17 个技巧都非常简单
    的头像 发表于 04-10 14:28 524次阅读

    一个简单但非常有用的小前置放大器电路

    一个简单但非常有用的小前置放大器电路可以通过连接几个晶体管来构建。该装置可轻松将 1mV 信号提升至 100mV 甚至更高。因此,它非常方便放大不能直接与功率放大器一起使用的极小信号。
    的头像 发表于 06-10 17:27 1549次阅读
    一个简单但<b class='flag-5'>非常有用</b>的小前置放大器电路

    没有什么是完美的,但FPGA可能非常有用

    FPGA是非常有用的器件,通常与ADI公司的ADC或功率IC等一起设计到客户的设计中。FPGA 可以实现微控制器和所需的任何胶水逻辑。在这篇博客中,我将讨论一些与功能安全和FPGA相关的问题。
    的头像 发表于 06-29 10:28 1405次阅读
    没有什么是完美的,但FPGA可能<b class='flag-5'>非常有用</b>