吴恩达新书《Machine Learning Yearning》中7个实用建议(附论文)

简介:

《Machine Learning Yearning》是人工智能和深度学习界的专家吴恩达写的一本书,这本书致力于讲明白机器学习算法是怎样工作的,以及如何构建一个机器学习项目。这里我们选取了这本书中7个非常有用的建议向大家介绍。

人工智能、机器学习和深度学习这些概念在飞速发展同时促使着工业界发生转变。吴恩达是这个领域的领军人物之一,他是Coursera联合创始人,百度人工智能团队的前负责人,以及谷歌大脑的前负责人。他正在写一本叫做《Machine Learning Yearning》的书来教大家怎样构建一个机器学习项目(网上可以得到免费的初稿)。

吴恩达在书中写道:这本书不在于教你机器学习算法,而是教你怎样使用机器学习算法。有些人工智能培训班会交给你一个工具,而这本书教你的是怎样使用这个工具。如果你想成为人工智能行业中的技术领袖,然后为自己的团队设定目标的话,这本书会给予你帮助。

8cbfacd6311973781f0e0d193bb57817a76837a3

我们读了初稿,然后从中选取了7个最有趣实用的建议:

一、优化指标和满意度指标

在评估一个算法时,你应该考虑使用多个衡量指标,而不是采用一个单一的公式。其中一个方法是同时使用优化指标和满意度指标。

0796ac1dcd964d29aa2cb66e6803a9def2ef9a9a

通过上面表格中的例子,我们先预设一个可以接受的执行时间比如小于100毫秒,这个执行时间的衡量标准就可以作为我们的满意度指标。分类器的执行时间只要在这个标准下就可以了。在这里准确率是一个优化的指标,这是一个评价算法的非常有效又简便的衡量手段。

二、尽快选定项目需要的验证集或测试集:

不要害怕后期是否需要替换

吴恩达表示当开始构建一个新项目时,他会尽快确定验证集或测试集来给团队一个定义明确的目标。起先会设定一个为期一周的目标,这个时候最好能够尽快想出方案然后推动项目往下进行,就算想出的方案不是那么完善也比顾虑太多要好。

话虽如此,要是你突然意识到一开始的验证集或测试集是错的,不要害怕去改正它。以下三个原因可能造成选出不正确的验证集:

d47e62d2b349aca45e42305ed6714efbe5ed61d9 真正要解决的问题的数据分布和验证集的分布大不相同。
d47e62d2b349aca45e42305ed6714efbe5ed61d9 验证集过拟合。
d47e62d2b349aca45e42305ed6714efbe5ed61d9 选择的衡量标准并不是这个项目真正想要的优化目标。

要记住做出变更并不是什么大问题,只要往下继续并让你的团队知道当下新的目标是什么就可以了。

三、机器学习是一个迭代优化的过程:

不要指望它一开始就能起作用

吴恩达说他做一个机器学习项目包括三个步骤:

d47e62d2b349aca45e42305ed6714efbe5ed61d9 从产生一个想法开始。
d47e62d2b349aca45e42305ed6714efbe5ed61d9 用代码实现这个想法。

d47e62d2b349aca45e42305ed6714efbe5ed61d9做实验判断这个想法如何。

a3e274ef246dc65172be0b5e85361677a2342d1c

这个循环走得越快,项目的进展就越快。这也说明了为什么在一开始确定好验证集是非常重要的,因为这样可以在迭代优化过程中省下很多时间。衡量数据集上的表现也可以让你迅速知道项目是否在一个正确的方向上。

四、快速开发第一个系统然后迭代

正如第3点中所说,构建机器学习算法是一个迭代的过程。在吴恩达的书里有一章节的篇幅说明快速开发一个系统的好处:“不要试图一开始就去设计和开发出一个完美的系统,而是应该在几天内迅速发开训练一个基本的系统。就算这个初步的系统离你可以发开的最好版本还差得很远,检验这个基本系统的功能也是很有价值的,这样你可以迅速找到证据来确定值得你投入时间的最有保障的发展方向。

五、并行地评估多个想法

当团队对改进一个算法有很多想法时,你可以并行地高效评估这些主意。这里用识别猫咪图像的算法来举例,吴恩达介绍说当他想要过目100个被错误分类的验证集图片的时候,他会用一个电子表来记录然后一边检查一边填写。

0a74fd85337c89f1c73c2c79f2ab94fd201076d2

上表中包括了每一张图片为什么会被分错类,还有额外注释便于日后的回顾。当完成这个表的时候,你就能获知哪些想法可以消除更多的误差,哪些想法应该被追踪。

六、考虑是否要修正错误标注的测试集

当你进行误差分析时,有可能会注意到验证集的某些样本是被错误标注的,例如图片在人工标注时被打上了错误的标签。如果你怀疑其中一部分误差是由这些错误标注造成,那可以在刚才提到的电子表格中多加一个类别。

01db705001db221c2ca8341932b980710ec0c292

当表格快完成的时候,就可以考虑这些错误标注是否值得花时间修复了。书中给出了两个可能的场景来帮助我们判断这些错误是否值得修复。

d47e62d2b349aca45e42305ed6714efbe5ed61d9例1:

测试集上总体正确率…………………… 90%(10%的总体错误率)

由于标错的样本造成的错误率…… 0.6% (6%的测试集错误率)

由于其他原因造成的错误率………… 9.4% (94%的测试集错误率)

“在数据集中,相比于9.4%可以改进的错误率,由于错误标注导致的0.6%的错误率是无足轻重的。当然修正这个错误标注没有什么坏处,但是也没有必要做。你的系统整体错误率是10%还是9.4%都是可接受的。“

d47e62d2b349aca45e42305ed6714efbe5ed61d9例2:

测试集上总体正确率…………………… 98%(2%的总体错误率)

由于标错的样本造成的错误率…… 0.6% (30%的测试集错误率)

由于其他原因造成的错误率………… 1.4% (70%的测试集错误率)

“验证集上30%的错误是由于误标注造成的,已经对准确率的评估增加了极大比重的错误。这个时候就值得来改善测试集的标签质量了。处理好错误标注的样本可以帮你解决分类器的错误率是1.4%还是2%的问题,相对来说这两者有巨大不同。“

七、考虑把验证集分成小的子集

如果你在一个较大的验证集上有20%的错误率,那么值得把这个验证集分成两个子集:

举一个算法在5000个验证集上分错1000个样本的例子。假设我们想要人工检查100个错误样本(10%的错误样本)对其进行错误分析,那么应该从验证集中随机抽取10%然后放到一边,暂时称它为“引人关注的验证集”来提醒我们要看一下这部分验证集(在语音识别项目中,你需要听一下录音片段,这个时候可能将划出来的验证集称为引人关注的验证集)。这个需要关注的验证集中有500个样本,我们可以预期算法会在其中分错100个左右。

验证集的第二个子集叫做黑箱验证集,里面剩有4500个样本。可以用黑箱验证集中样本的的错误率来自动评估分类器的效果。可以用这个测试集来选算法或者调参数。而然,需要注意的是你应该避免具体去看这些样本。我们之所以使用黑箱这个词是因为我们只需要用这部分子集来评价分类器即可。


原文发布时间为:2018-05-29

本文作者:Dan ,KDnuggets

本文来自云栖社区合作伙伴“数据派THU”,了解相关信息可以关注“数据派THU”。

相关文章
|
Web App开发
Python+selenium 实现自动上传并发布小红书号短视频实例演示
Python+selenium 实现自动上传并发布小红书号短视频实例演示
1535 0
Python+selenium 实现自动上传并发布小红书号短视频实例演示
|
6月前
|
JavaScript 前端开发 数据可视化
[NMP v2] NeteaseMiniPlayer v2 搭建个人网站网易云迷你播放器
NeteaseMiniPlayer v2 [NMP v2]是一款高颜值、无依赖的前端嵌入式网易云音乐迷你播放器,,轻松部署于个人网站,提升音网站体验。
570 6
[NMP v2] NeteaseMiniPlayer v2 搭建个人网站网易云迷你播放器
|
C# 数据格式 XML
WPF 资源(StaticResource 静态资源、DynamicResource 动态资源、添加二进制资源、绑定资源树)
原文:WPF 资源(StaticResource 静态资源、DynamicResource 动态资源、添加二进制资源、绑定资源树) 一、WPF对象级(Window对象)资源的定义与查找 实例一: StaticR...
9064 0
|
机器学习/深度学习 存储 搜索推荐
连续迁移学习跨域推荐排序模型在淘宝推荐系统的应用
本文探讨了如何在工业界的连续学习的框架下实现跨域推荐模型,提出了连续迁移学习这一新的跨域推荐范式,利用连续预训练的源域模型的中间层表征结果作为目标域模型的额外知识,设计了一个轻量级的Adapter模块实现跨域知识的迁移,并在有好货推荐排序上取得了显著业务效果。
1451 0
连续迁移学习跨域推荐排序模型在淘宝推荐系统的应用
|
安全 前端开发 Java
基于SSM+MVC三层架构实现用户权限管理系统
基于SSM+MVC三层架构实现用户权限管理系统
908 0
基于SSM+MVC三层架构实现用户权限管理系统
|
SQL 算法 数据挖掘
数据分析师7大能力:梳理标签体系
上期分享了数据分析师必备能力:打标签。这次分享一个更高级能力:构造标签体系。在提升能力的顺序上,当然是先会打一个标签,再会搞整个体系了。
890 0
数据分析师7大能力:梳理标签体系
|
SQL 关系型数据库 MySQL
socket=/tmp/mysql.sock是干什么的?底层原理是什么?
socket=/tmp/mysql.sock是干什么的?底层原理是什么?
2313 0
|
Python
rosdep init 和rosdep update的解决方法,亲测有效
rosdep init 和rosdep update的解决方法,亲测有效
728 0
rosdep init 和rosdep update的解决方法,亲测有效
|
JSON 负载均衡 Cloud Native
【云原生Docker篇】使用 Docker-compose 搭建lnmp(上)
前言 服务编排: 应用编排: 单机环境下:shell/python脚本 多机/集群环境下:ansible、saltstack、pubbet
648 0
|
Go 索引
Go一分钟对接ElasticSearch实践
今天这篇分享:使用Go语言对接ElasticSearch实践。
659 0