一、为什么是ML策略


如上图示,假如我们在构建一个喵咪分类器,数据集就是上面几个图,训练之后准确率达到90%。虽然看起来挺高的,但是这显然并不具一般性,因为数据集太少了。那么此时可以想到的ML策略有哪些呢?总结如下:

  • 收集更多的数据
  • 收集更多不同的训练集
  • 结合梯度下降训练算法更长时间
  • 尝试Adam算法
  • 尝试更大的网路
  • 尝试小一点的网络
  • 试着用一下dropout算法
  • 加上\(L_2\)正则项
  • 改善网络结构,如
    • 激活函数
    • 隐藏层节点数量
    • and so on

二、正交化

正交这个词很好理解,即各个变量之间是相互独立的,以像我这样的小萌新学开车为例,主要起作用的是方向盘(控制方向)油门&刹车(控制车速),为了拿到驾照我需要练习倒车入库等操作,在最开始学车时我可能就是在倒车时先减速停下来,然后转动方向盘,再踩个油门……慢慢的一步一步的挪进车库。而对于老司机来说可能就是一边加速一边转动方向盘,轻轻松松的就完成了入库操作,但是其操作难度却大大增加。

好了说了这么多可能听起来一头雾水,但是如果联系到实际的模型调参就好懂了。在调参数时我们也希望尽 可能的正交化,尤其是像我这样的刚入门的白菜,切勿将一大堆的优化方法不动脑的就堆在一起使用。

三、单一数字评估指标

本节大致的思想就是首先按照单一数字评估指标对模型进行评价和优化。以精确率召回率为例,这二者一般来说是一个不可兼得的指标,所以为了更好的衡量模型的好坏,引入F1算法来综合精确率召回率对模型进行评估。

更加具体的介绍可查看Andrew Ng机器学习课程笔记--week6(精度&召回率)

四、满足和优化指标

假如我们有A,B,C三个分类器,各个分类器的准确率和耗时情况如下:

分类器 准确率 耗时
A 90% 80ms
B 92% 95ms
C 95% 1500ms

此时该如何评价这三个分类器呢?

有如下可选择的方法:

  • 1.线性组合
    基于已知的指标构建一个新的指标:

cost = accuracy - β*time

  • 基于满足指标来观察优化指标
    很显然我们更关心的是最终的准确率,但是同时也希望耗时不要太长,所以我们可以将满足指标设定为耗时,假设是100ms,然后优化指标就是在100ms用时的情况下准确率的大小。

五、训练/开发/测试集划分


假设我们有一系列的数据分别来自上面各个国家和地区。现在我们需要将这些数据划分为开发集和测试集, 一般的方法是我们随机选择几个国家的作为开发集,剩下的作为测试集,就如上图所示。

看起来没毛病是不是?但是毛病大大的!!!因为开发集和测试集不服从同一分布,这就好像你在准备托福考试,你尽可能的得到了所有的考试技巧和其他资料,最后你的确得到了不错的成绩。但是后来因为工作需求需要你会说俄语,此时如果你用之前托福的资料来对付俄语考试则显得驴头不对马嘴了,这也就是为什么可能开发集准确率挺好的,但是应用的测试集就不行了。

所以为了实现服从同一分布,我们可以这样做,

  • 首先将所有国家和地区的数据打散,混合
  • 按照一定的比例将上面混合打散后的数据划分为开发集和测试集

六、开发集和测试集的大小


这一节的内容可参考我之前的笔记训练/测试集数据大小问题

七、什么时候该改变开发/测试集合指标

按照吴大大的惯例还是先举个栗子比较好理解:

假设现在一个公司在做一个喵咪图片推送服务(即给用户推送喵咪的照片),部署的有两个算法:

  • 算法A: 喵咪图片识别误差是3%,但是可能会一不小心就给用户发了一些少儿不宜的图片
  • 算法B:误差是5%,但是不会给用户推送不健康的图片

所以对于公司来说可能希望准确性高一些的算法A,而用户可能会非常在意你给他推送了某些不想看的东西,也许更喜欢算法B。所以总的来说就是根据实际需要来改变开发/测试集合指标。

八、什么是人的表现


如图示:

  • 蓝色虚线:表示人类识别的准确率
  • 紫色曲线:表示机器学习不断训练过程中准确率的变化
  • 绿色虚线:表示最高的准确率,即100%

其中紫色曲线在末尾收敛后与绿色虚线之间的差距称为贝叶斯优化误差(Bayse Optima Error)

官网提供的更清晰的课件图示:

因此在实际操作过程中,我们可以以人类准确率为指标来评判我们训练的模型好坏程度,如果准确率不及人类,那么我们可以从以下几个方面进行调整:

  • 获取更多的标签数据
  • 分析为什么模型在这个数据上错误,而人类会正确判断,对模型进行修正
  • 分析和运用偏差和方差

九、可避免偏差

看上面课件的截图可能比我自己重新复述一遍要更加容易理解一些,不过我还需要对上面的课件做一些补充,就是

  • Humans error 与 Training Error之间的差距我们成为Avoidable bias
  • Training Error 与 Dev Error之间的差距我们成为Variance

具体怎么运用看下面一小节内容~

十、理解人的表现

有了课件后我都懒得自己写了(捂脸(/ω\))

还是解释一下课件吧:

Example 1

假如一个医院需要对一个医学影像进行分类识别,普通人,普通医生,有经验的医生和一群有经验的医生识别错误率分别为3%,1%,0.7%,0.5%。上一节中提到过Human Error,那此时的该如何确定Human Error呢?你可能会说取平均值,只能说Too Naive!当然是取最好的结果啦,也就是由一群经验丰富的医生组成的团体得到的结果作为Human Error。另外贝叶斯误差一定小于0.5%。

Example 2

还是以医学影像分类识别为例,假如现在分成了三种情况:

  • Scenario A
    让三类人群来划分后得到的误差分别为1%,0.7%,0.5%,而训练集和测试集误差分别为5%,6%。很显然此时的Avoidable Bias=4%~4.5%Variance=1%,bias明显大于variance,所以此时应该将重心放到减小bias上去。

  • Scenario Bayse
    同理此情况下的Avoidable Bias=0%~0.5%Variance=4%,所以需要减小variance。

  • Scenario C
    Avoidable Bias=0。2%Variance=0.1%,二者相差无几,但是此时训练的模型准确率还是不及人类,所以没办法咱们还得继续优化,都说枪打出头鸟,所以继续优化bias~

十一、超过人的表现

  • Scenario A
    Avoidable Bias=0.1%~0.4%Variance=0.2%,所以此时应该将重心放到减小bias上去

  • Scenario B
    Avoidable Bias=-0.2%~0.7%Variance=0.1%.乍一看可能会有点不知所措,而且训练集准确度也超过了人的最好成绩,不知道应该选择优化哪一项了,或者说这是不是就说明可以不用再优化了呢?
    聪明,你又猜对了。还是可以继续优化的。不可否认在图像识别方面人类的确其优于机器的方面,但是在其他方面,如在线广告推送,贷款申请评测等方面机器人要远远比人类优秀,所以如果是在上面课件中提到的一些领域,即使机器准确度超过了人类,也还有很大的优化空间。具体怎么优化。。。。老师没说。。。以后再深究~逃~

十二、改善你的模型的表现



MARSGGBO♥原创


2017-10-17

DeepLearning.ai学习笔记(三)结构化机器学习项目--week1 机器学习策略的更多相关文章

  1. DeepLearning.ai学习笔记(三)结构化机器学习项目--week2机器学习策略(2)

    一.进行误差分析 很多时候我们发现训练出来的模型有误差后,就会一股脑的想着法子去减少误差.想法固然好,但是有点headlong~ 这节视频中吴大大介绍了一个比较科学的方法,具体的看下面的例子 还是以猫 ...

  2. DeepLearning.ai学习笔记(五)序列模型 -- week1 循环序列模型

    一.为什么选择序列模型 序列模型可以用于很多领域,如语音识别,撰写文章等等.总之很多优点... 二.数学符号 为了后面方便说明,先将会用到的数学符号进行介绍. 以下图为例,假如我们需要定位一句话中人名 ...

  3. DeepLearning.ai学习笔记(四)卷积神经网络 -- week1 卷积神经网络基础知识介绍

    一.计算机视觉 如图示,之前课程中介绍的都是64* 64 3的图像,而一旦图像质量增加,例如变成1000 1000 * 3的时候那么此时的神经网络的计算量会巨大,显然这不现实.所以需要引入其他的方法来 ...

  4. DeepLearning.ai学习笔记汇总

    第一章 神经网络与深度学习(Neural Network & Deeplearning) DeepLearning.ai学习笔记(一)神经网络和深度学习--Week3浅层神经网络 DeepLe ...

  5. Deeplearning.ai课程笔记-结构化机器学习项目

    目录 一. 正交化 二. 指标 1. 单一数字评估指标 2. 优化指标.满足指标 三. 训练集.验证集.测试集 1. 数据集划分 2. 验证集.测试集分布 3. 验证集.测试集大小 四. 比较人类表现 ...

  6. Deep Learning.ai学习笔记_第三门课_结构化机器学习项目

    目录 第一周 机器学习策略(1) 第二周 机器学习策略(2) 目标:学习一些机器学习优化改进策略,使得搭建的学习模型能够朝着最有希望的方向前进. 第一周 机器学习策略(1) 搭建机器学习系统的挑战:尝 ...

  7. 吴恩达《深度学习》-第三门课 结构化机器学习项目(Structuring Machine Learning Projects)-第一周 机器学习(ML)策略(1)(ML strategy(1))-课程笔记

    第一周 机器学习(ML)策略(1)(ML strategy(1)) 1.1 为什么是 ML 策略?(Why ML Strategy?) 希望在这门课程中,可以教给一些策略,一些分析机器学习问题的方法, ...

  8. AI学习笔记:人工智能与机器学习概述

    一.人工智能基本概念 1.1 基本概念 数据分析:对历史规律的展现.对未来数据的预测. 机器学习:机器学习是指从一系列的原始数据中找到规律,提取人们可以识别的特征,然后通过学习这些特征,最终产生一个模 ...

  9. 吴恩达《深度学习》-课后测验-第三门课 结构化机器学习项目(Structuring Machine Learning Projects)-Week1 Bird recognition in the city of Peacetopia (case study)( 和平之城中的鸟类识别(案例研究))

    Week1 Bird recognition in the city of Peacetopia (case study)( 和平之城中的鸟类识别(案例研究)) 1.Problem Statement ...

随机推荐

  1. Python 学习之路

    这个是我学python以来,写的的第一个小游戏,写的不好 题目:石头剪刀布 主要有两个难度 在普通模式,电脑是随机出 在噩梦下,就是不管你出什么,电脑都会赢你,牛逼吧 #Author:陈浩彬 impo ...

  2. Ipad弹出UIAlertControllerStyleActionSheet时发生崩溃

    pad弹出UIAlertControllerStyleActionSheet时,在iphone上运行正常,但在ipad上崩溃,解决代码如下: UIAlertController *alertVc = ...

  3. Java编程学习技巧和方法总结

    干货:必须要有反馈,不断调整,多读书,多些笔记. 解释:不练习你以为你能掌握?笑话,只有自己根据一个个小目标不断的敲,运行,给予你反馈,这样才会真的进步. 纸上谈Java,是永远停止在口.   关于笔 ...

  4. CCF-201503-1-图象旋转

    问题描述 试题编号: 201503-1 试题名称: 图像旋转 时间限制: 5.0s 内存限制: 256.0MB 问题描述: 问题描述 旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转 ...

  5. PHP防XSS 防SQL注入的代码

    作为开发人员时刻要记住一句话,永远不要相信任何用户的输入!很多时候我们的网站会因为我们开发人员写的代码不够严谨,而使网站受到攻击,造成不必要的损失!下面介绍一下如何防止SQL注入! 这里提供了一个函数 ...

  6. 基于Spring Aop实现类似shiro的简单权限校验功能

    在我们的web开发过程中,经常需要用到功能权限校验,验证用户是否有某个角色或者权限,目前有很多框架,如Shiro Shiro有基于自定义登录界面的版本,也有基于CAS登录的版本,目前我们的系统是基于C ...

  7. Selenium中如何使用xpath更快定位

    在学习Selenium路上,踩了也不少坑,这是我最近才发现的一个新写法,好吧,"才发现"又说明我做其他事了.对的,我现在还在加班! 开车~~~ 例子:知乎网 标签:Python3. ...

  8. 多线程编程学习笔记——async和await(一)

    接上文 多线程编程学习笔记——任务并行库(一) 接上文 多线程编程学习笔记——任务并行库(二) 接上文 多线程编程学习笔记——任务并行库(三) 接上文 多线程编程学习笔记——任务并行库(四) 通过前面 ...

  9. google开源服务器apprtc的搭建

    本文参考网帖: http://www.jianshu.com/p/c55ecf5a3fcf http://io.diveinedu.com/2015/02/05/%E7%AC%AC%E5%85%AD% ...

  10. Django中多表查询思路

    需求: 1.有一张文章表和一张评论表 2.两张表的关系是一对多 3.规则:若是有新评论,则将对应的文章置顶,若是有新文章则将新文章置顶. 思路: 在文章表中增加一个最后评论时间的字段.然后采用分组排序 ...