ML strategy[1]

  • 1.1 为什么是ML策略?(Why ML Strategy?)
  • 1.2 正交化(Orthogonalization)
    • 关于正交化的引例
      • 电视机调整图像
      • 汽车操控(逮虾户~)
    • ML中的正交化过程
  • 1.3 单一数字评估指标(Single number evaluation metric)
    • 查准率(precision)和查全率(recall)
    • 使用调和平均数来将两个指标转化为一个指标
  • 1.4 满足和优化指标(Satisficing and optimizing metrics)
  • 1.5+1.6 训练/开发/测试集划分(Train/dev/test distributions)
    • 数据集的划分
    • 需要注意的事项
    • 打靶的例子

Course3——结构化机器学习项目,通过学习这门课,我们能够了解如何更快速高效地优化机器学习系统。掌握一种机器学习的策略,以便在开发的过程中少走弯路。

1.1 为什么是ML策略?(Why ML Strategy?)

通过前面两节Course的学习,我们大致上对一些机器学习有了自己的了解。为什么我们需要ML策略来帮助我们开发呢?先让我们来看一个简单的小例子吧!

仍然是我们熟悉的cat分类器,假设通过一段时间的调整,这个分类器达到了90%准确率,但是还不够好。我们希望进一步提升。有很多想法能够改善这个分类器,比如,收集更多的训练数据;或者可能你的训练集的多样性还不够,你应该收集更多不同姿势的猫咪图片,或者更多样化的反例集。或者你想再用梯度下降训练算法,训练久一点。或者你想尝试用一个完全不同的优化算法,比如Adam优化算法。或者尝试使用规模更大或者更小的神经网络。或者你想试试dropout或者L2正则化。或者你想修改网络的架构,比如修改激活函数,改变隐藏单元的数目之类的方法。

当你尝试优化一个深度学习系统时,你通常可以有很多想法可以去试,问题在于,如果你做出了错误的选择,你完全有可能白费6个月的时间,往错误的方向前进,在6个月之后才意识到这方法根本不管用。比如,我见过一些团队花了6个月时间收集更多数据,却在6个月之后发现,这些数据几乎没有改善他们系统的性能。所以,假设你的项目没有6个月的时间可以浪费,如果有快速有效的方法能够判断哪些想法是靠谱的,或者甚至提出新的想法,判断哪些是值得一试的想法,哪些是可以放心舍弃的。

所以我们希望通过ML策略来帮助我们来改进我们的工作过程,接下来就让我们开始吧!

1.2 正交化(Orthogonalization)

搭建建立机器学习系统的挑战之一是,我们在学习过程中可以尝试和改变的东西太多太多了。包括,比如说,有那么多的超参数可以调。我留意到,那些效率很高的机器学习专家有个特点,他们思维清晰,对于要调整什么来达到某个效果,非常清楚,这个步骤我们称之为正交化。这个词好像有些深奥,我们先来理解一下正交化的意思。

关于正交化的引例

电视机调整图像


先让我们来假设,我们这个电视有5个旋钮。当我们收到天线信号时,显示在屏幕上的画面不是在屏幕正中央。这时我们就希望来一个调整,将画面调到正中央。

现在,可能有一个旋钮用来调图像垂直方向的高度,另外有一个旋钮用来调图像宽度,也许还有一个旋钮用来调梯形角度,还有一个旋钮用来调整图像左右偏移,还有一个旋钮用来调图像旋转角度之类的。所以我们只需要按照需求来调整每个旋钮,直到达到我们的需求。

相比之下,想象一下,如果你有一个旋钮,你调这个旋钮时,会同时变化两个值。比如调的时候图像高度,图像宽度会同时变化。如果你调整这个旋钮,那么图像的高度、宽度、梯形角度、平移位置全部都会同时改变,如果你有这样的旋钮,那几乎不可能把电视调好,让图像显示在区域正中。

所以在这种情况下,正交化指的是电视设计师设计这样的旋钮,使得每个旋钮都只调整一个性质,这样调整电视图像就容易得多,就可以把图像调到正中。

汽车操控(逮虾户~)


开车的时候,我们知道有三个主要的控制器:方向盘,油门和刹车(假设自动挡)
有这三个操控器,我们就能很好地操纵汽车往我们想要的方向开了。但是,假设一下,如果方向盘不仅能改变方向,还能改变速度呢?你可能会觉得这个设计师疯了。

所以正交化的概念是指,你可以想出一个维度,这个维度你想做的是控制转向角,还有另一个维度来控制你的速度,那么你就需要一个旋钮尽量只控制转向角,另一个旋钮,在这个开车的例子里其实是油门和刹车控制了你的速度。但如果你有一个控制旋钮将两者混在一起,比如说这样一个控制装置同时影响你的转向角和速度,同时改变了两个性质,那么就很难令你的车子以想要的速度和角度前进。然而正交化之后,正交意味着互成90度。设计出正交化的控制装置,最理想的情况是和你实际想控制的性质一致,这样你调整参数时就容易得多。可以单独调整转向角,还有你的油门和刹车,令车子以你想要的方式运动。

ML中的正交化过程

前面说了两个例子,和我们的ML有什么关系呢?通常,要做好一个监督学习的系统,我们总需要不断调整。但是当我们做了一些小调整时,发现这个小调整影响了多个指标,这就不是我们所希望看到的了。

做一个ML系统。首先,你通常必须确保至少系统在训练集上得到的结果不错,所以训练集上的表现必须通过某种评估,达到能接受的程度,对于某些应用,这可能意味着达到人类水平的表现。但是,在训练集上表现不错之后,你就希望系统也能在开发集上有好的表现,然后你希望系统在测试集上也有好的表现。在最后,你希望系统在测试集上系统的成本函数在实际使用中表现令人满意,比如说,你希望这些猫图片应用的用户满意。

所以我们后面会学到的内容,就是这些“旋钮”时什么,还有如何调整这些旋钮。

1.3 单一数字评估指标(Single number evaluation metric)

无论是调整超参数,或者是尝试不同的学习算法,或者在搭建机器学习系统时尝试不同手段。我们发现,如果有一个单实数评估指标,进展会快得多。它可以快速指出,新尝试的手段比之前的手段好还是差。所以当开始进行机器学习项目时,推荐为问题设置一个单实数评估指标。

查准率(precision)和查全率(recall)

比如说对于我们之前的cat分类器。之前搭建了某个分类器A,通过改变超参数,还有改变训练集等手段,现在训练出来了一个新的分类器B,所以评估你的分类器的一个合理方式是观察它的查准率(precision)和查全率(recall)。

简而言之,查准率的定义是在你的分类器标记为猫的例子中,有多少真的是猫。所以如果分类器A有95%的查准率,这意味着你的分类器说这图有猫的时候,有95%的机会真的是猫。

查全率就是,对于所有真猫的图片,你的分类器正确识别出了多少百分比。实际为猫的图片中,有多少被系统识别出来?如果分类器A查全率是90%,这意味着对于所有的图像,比如说你的开发集都是真的猫图,分类器A准确地分辨出了其中的90%。

所以关于查准率和查全率的定义,不用想太多。事实证明,查准率和查全率之间往往需要折衷,两个指标都要顾及到。希望得到的效果是,当分类器说某个东西是猫的时候,有很大的机会它真的是一只猫,但对于所有是猫的图片,你也希望系统能够将大部分分类为猫,所以用查准率和查全率来评估分类器是比较合理的。

但使用查准率和查全率作为评估指标的时候,有个问题,如果分类器A在查全率上表现更好,分类器B在查准率上表现更好,你就无法判断哪个分类器更好。如果你尝试了很多不同想法,很多不同的超参数,你希望能够快速试验不仅仅是两个分类器,也许是十几个分类器,快速选出“最好的”那个,这样你可以从那里出发再迭代。如果有两个评估指标,就很难去快速地二中选一或者十中选一,所以我并不推荐使用两个评估指标,查准率和查全率来选择一个分类器。你只需要找到一个新的评估指标,能够结合查准率和查全率。

使用调和平均数来将两个指标转化为一个指标

在机器学习中,我们将查全率和查准率结合在一起的方法得到的函数称作 F 1 F_1 F1​分数。正式来看,它的计算方法就是取查准率 P P P和查全率 R R R的算术平均。
F 1 = 2 1 P + 1 R F_1=\frac{2}{\frac{1}{P}+\frac{1}{R}} F1​=P1​+R1​2​

当我们看到上面那个图片时,如果没有最后一行,很难一眼看过去就知道哪个分类器更加优秀。但是,当我们使用调和平均得到最后一行的值时,我们就能说分类器C比较优秀。这就突出了单实数评估指标的重要性。它可以自动的生成,可以提高做判断的效率。

1.4 满足和优化指标(Satisficing and optimizing metrics)

前面介绍了单实数评估指标。但是我们发现,要把顾及到的所有事情组合成单实数评估指标有时并不容易,在那些情况里,有时候设立满足和优化指标是很重要的。

比如说我们现在有3个分类器,我们现在找不出一个“最好的”来继续进行迭代的过程。那么就需要通过定义优化和满足指标,就可以给你提供一个明确的方式,去选择“最好的”分类器。

比如,实际情况下,我需要分类结果在100ms内给出。然后在100ms内我对时间指标不在意了,只在意准确率。

所以更一般地说,如果我们要考虑N个指标,有时候选择其中一个指标做为优化指标是合理的。所以你想尽量优化那个指标,然后剩下N-1个指标都是满足指标,意味着只要它们达到一定阈值,例如运行时间快于100毫秒,但只要达到一定的阈值,就不在乎它超过那个门槛之后的表现,但它们必须达到这个门槛。

1.5+1.6 训练/开发/测试集划分(Train/dev/test distributions)

数据集的划分

当我们拿到一个数据集后,我们通常会将其分为三部分:

  • 训练集/train set
  • 验证集/交叉验证集/dev set
  • 测试集/test set

在机器学习发展的小数据量时代,常见做法是将所有数据三七分,就是人们常说的70%验证集,30%测试集,如果没有明确设置验证集,也可以按照60%训练,20%验证和20%测试集来划分。这是前几年机器学习领域普遍认可的最好的实践方法。

但是在如今的大数据时代,假设我们有100万条数据,那么拿其中1万条作为验证集,1万条作为测试集,就达到我们的需求 了。即:训练集占98%,验证集和测试集各占1%。对于数据量过百万的应用,训练集可以占到99.5%,验证和测试集各占0.25%,或者验证集占0.4%,测试集占0.1%。因为我们希望的是迅速判断出哪种算法更有效。

需要注意的事项

1.确保验证集和测试集的数据来自同一分布——举个例子,当我们的任务是对猫进行识别时,如果我们的测试集都是非常清晰的猫的图片,而测试集却是用户随意拍摄的、非常模糊的图片。那么我们训练出来的效果很可能就不符合我们的期望。

2.没有测试集也不要紧,测试集的目的是对最终所选定的神经网络系统做出无偏估计,如果不需要无偏估计,也可以不设置测试集。所以如果只有验证集,没有测试集,我们要做的就是,在训练集上训练,尝试不同的模型框架,在验证集上评估这些模型,然后迭代并选出适用的模型。因为验证集中已经涵盖测试集数据,其不再提供无偏性能评估。当然,如果你不需要无偏估计,那就再好不过了。

打靶的例子

如果我们将我们在学习开始订立的目标视为一个靶心,然后我们花费了大量时间往这个靶心去学习。但是,如果开发集和测试集不来自同一个分布会发生什么呢?

这就好比把靶子换了一个地方,原来的靶心变成了无效的点,是脱靶的。那种事情会很令人绝望的,不仅浪费了时间和精力,还没有完成产品。

所以,同一个分布很重要!

吴恩达深度学习 Deeplearning.ai学习笔记 Course3 Week1 机器学习(ML)策略(1)(ML strategy(1))相关推荐

  1. 吴恩达点赞的deeplearning.ai课程总结

    深度学习基础 1 深度学习基本概念 监督学习:所有输入数据都有确定的对应输出数据,在各种网络架构中,输入数据和输出数据的节点层都位于网络的两端,训练过程就是不断地调整它们之间的网络连接权重. 左上:列 ...

  2. 吴恩达深度学习课程值不值得学?四晚学完的高手给你建议

    8 月 8 日,吴恩达发布了自己的深度学习在线课程,来自全球的 AI 爱好者再次围在这位人工智能专家身边,希望能从这门课里学到更多知识,正在看这篇文章的你或许也想报名参加,先别忙,有位大神花了四个晚上 ...

  3. 吴恩达 深度学习 编程作业(2-2)- Optimization Methods

    吴恩达Coursera课程 DeepLearning.ai 编程作业系列,本文为<改善深层神经网络:超参数调试.正则化以及优化 >部分的第二周"优化算法"的课程作业,同 ...

  4. 吴恩达Deeplearning.ai课程学习全体验:深度学习必备课程 By 路雪2017年8月14日 11:44 8 月 8 日,吴恩达正式发布了 Deepleanring.ai——基于 Cours

    吴恩达Deeplearning.ai课程学习全体验:深度学习必备课程 By 路雪2017年8月14日 11:44 8 月 8 日,吴恩达正式发布了 Deepleanring.ai--基于 Course ...

  5. 吴恩达 深度学习1 2022, 浙大AI第一课

    强推![浙大公开课]2022B站最好最全的机器学习课程,从入门到实战!人工智能/AI/机器学习/数学基础_哔哩哔哩_bilibili 我们规定了行为和收益函数后,就不管了,构造一个算法,让计算机自己去 ...

  6. [转载]《吴恩达深度学习核心笔记》发布,黄海广博士整理!

    红色石头 深度学习专栏 深度学习入门首推课程就是吴恩达的深度学习专项课程系列的 5 门课.该专项课程最大的特色就是内容全面.通俗易懂并配备了丰富的实战项目.今天,给大家推荐一份关于该专项课程的核心笔记 ...

  7. 737 页《吴恩达深度学习核心笔记》发布,黄海广博士整理!

    点击上方"AI有道",选择"置顶"公众号 重磅干货,第一时间送达 深度学习入门首推课程就是吴恩达的深度学习专项课程系列的 5 门课.该专项课程最大的特色就是内容 ...

  8. 360题带你走进深度学习!吴恩达深度学习课程测试题中英对照版发布

    吴恩达的深度学习课程(deepLearning.ai)是公认的入门深度学习的宝典,本站将课程的课后测试题进行了翻译,建议初学者学习.所有题目都翻译完毕,适合英文不好的同学学习. 主要翻译者:黄海广 内 ...

  9. github标星8331+:吴恩达深度学习课程资源(完整笔记、中英文字幕视频、python作业,提供百度云镜像!)...

    吴恩达老师的深度学习课程(deeplearning.ai),可以说是深度学习入门的最热门课程,我和志愿者编写了这门课的笔记,并在github开源,star数达到8331+,曾经有相关报道文章.为解决g ...

  10. 深度学习入门首推资料--吴恩达深度学习全程笔记分享

    本文首发于微信公众号"StrongerTang",可打开微信搜一搜,或扫描文末二维码,关注查看更多文章. 原文链接:(https://mp.weixin.qq.com/s?__bi ...

最新文章

  1. Python的re模块 --- 正则表达式操作
  2. if xxx.strip()函数的使用
  3. Keil精确测量代码运行时间
  4. spring boot: Bean的初始化和销毁 (一般注入说明(三) AnnotationConfigApplicationContext容器 JSR250注解)...
  5. 洛谷 P2596 [ZJOI2006]书架 (splay)
  6. kail linux稳定版本,Kali Linux 2020.3 稳定版已发布 更新后新功能概览
  7. P1850 [NOIP2016 提高组] 换教室
  8. Makefile.am
  9. TensorFlow中multiply和matmul的区别
  10. 客户商品生命周期应用
  11. Java Lambda
  12. 火狐中国区linux无法同步,教大家火狐浏览器同步数据失败的几点原因
  13. 高晓松脱口秀--晓说(第一季第二季)mp3下载
  14. 从github上下载文件,文件夹,整个项目
  15. 海龟交易法则(中译文)
  16. Java安装WindowBuilder
  17. 双足竞走机器人的意义_双足竞走机器人设计1
  18. nginx安装配置(图文教程)
  19. 【HDU 6217 2017ACM/ICPC亚洲区沈阳站】BBP Formula
  20. CMT2380F32模块开发20-射频收发例程

热门文章

  1. NASA说今天地球引力最小,能让扫帚立起来,真相来了!
  2. [搬运]什么叫幂等性?
  3. Mysql查看表、字段信息
  4. 互联网金融银行卡身份证识别
  5. 嵌入式工程师值得一看的网站及工具总结(2023)
  6. Linux查看IP以及修改IP地址
  7. python sklearn svm多分类_sklearn中SVM一对一多分类参数的研究
  8. 韩语入门之韩语字母(1)
  9. 隐私计算商业化,原语科技的开源路线是否最优解?
  10. python opencv入门 Hough圆变换(28)