DeepLearning.ai学习笔记(三)结构化机器学习项目--week1 机器学习策略
一、为什么是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%.乍一看可能会有点不知所措,而且训练集准确度也超过了人的最好成绩,不知道应该选择优化哪一项了,或者说这是不是就说明可以不用再优化了呢?
聪明,你又猜对了。还是可以继续优化的。不可否认在图像识别方面人类的确其优于机器的方面,但是在其他方面,如在线广告推送,贷款申请评测等方面机器人要远远比人类优秀,所以如果是在上面课件中提到的一些领域,即使机器准确度超过了人类,也还有很大的优化空间。具体怎么优化。。。。老师没说。。。以后再深究~逃~
十二、改善你的模型的表现

DeepLearning.ai学习笔记(三)结构化机器学习项目--week1 机器学习策略的更多相关文章
- DeepLearning.ai学习笔记(三)结构化机器学习项目--week2机器学习策略(2)
一.进行误差分析 很多时候我们发现训练出来的模型有误差后,就会一股脑的想着法子去减少误差.想法固然好,但是有点headlong~ 这节视频中吴大大介绍了一个比较科学的方法,具体的看下面的例子 还是以猫 ...
- DeepLearning.ai学习笔记(五)序列模型 -- week1 循环序列模型
一.为什么选择序列模型 序列模型可以用于很多领域,如语音识别,撰写文章等等.总之很多优点... 二.数学符号 为了后面方便说明,先将会用到的数学符号进行介绍. 以下图为例,假如我们需要定位一句话中人名 ...
- DeepLearning.ai学习笔记(四)卷积神经网络 -- week1 卷积神经网络基础知识介绍
一.计算机视觉 如图示,之前课程中介绍的都是64* 64 3的图像,而一旦图像质量增加,例如变成1000 1000 * 3的时候那么此时的神经网络的计算量会巨大,显然这不现实.所以需要引入其他的方法来 ...
- DeepLearning.ai学习笔记汇总
第一章 神经网络与深度学习(Neural Network & Deeplearning) DeepLearning.ai学习笔记(一)神经网络和深度学习--Week3浅层神经网络 DeepLe ...
- Deeplearning.ai课程笔记-结构化机器学习项目
目录 一. 正交化 二. 指标 1. 单一数字评估指标 2. 优化指标.满足指标 三. 训练集.验证集.测试集 1. 数据集划分 2. 验证集.测试集分布 3. 验证集.测试集大小 四. 比较人类表现 ...
- Deep Learning.ai学习笔记_第三门课_结构化机器学习项目
目录 第一周 机器学习策略(1) 第二周 机器学习策略(2) 目标:学习一些机器学习优化改进策略,使得搭建的学习模型能够朝着最有希望的方向前进. 第一周 机器学习策略(1) 搭建机器学习系统的挑战:尝 ...
- 吴恩达《深度学习》-第三门课 结构化机器学习项目(Structuring Machine Learning Projects)-第一周 机器学习(ML)策略(1)(ML strategy(1))-课程笔记
第一周 机器学习(ML)策略(1)(ML strategy(1)) 1.1 为什么是 ML 策略?(Why ML Strategy?) 希望在这门课程中,可以教给一些策略,一些分析机器学习问题的方法, ...
- AI学习笔记:人工智能与机器学习概述
一.人工智能基本概念 1.1 基本概念 数据分析:对历史规律的展现.对未来数据的预测. 机器学习:机器学习是指从一系列的原始数据中找到规律,提取人们可以识别的特征,然后通过学习这些特征,最终产生一个模 ...
- 吴恩达《深度学习》-课后测验-第三门课 结构化机器学习项目(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 ...
随机推荐
- 四、Hadoop学习笔记————各种工具用法
hive基本hql语法 Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql.postgresql...)间进行数据的传递,可以将一个关系型数据库 ...
- 纯Socket(BIO)长链接编程的常见的坑和填坑套路
本文章纯属个人经验总结,伪代码也是写文章的时候顺便白板编码的,可能有逻辑问题,请帮忙指正,谢谢. Internet(全球互联网)是无数台机器基于TCP/IP协议族相互通信产生的.TCP/IP协议族分了 ...
- android扫描网页二维码进行网页登录
转载请标明出处: http://www.cnblogs.com/dingxiansen/: 本文出自:丁先森-博客园 周六和朋友去网吧开黑,开机打开TGP,朋友那边开始输入账号密码,我看了他一眼low ...
- Mysql--单表数据记录查询
1.简单数据记录查询 1.1 简单数据查询 1.1.1 查询所有字段数据 例子: 1.1.2 "*"符号的使用 语法: 例子: 1.1.3 查询指定字段数据 例子: ...
- PHP面向对象之const常量修饰符
在PHP中定义常量是通过define()函数来完成的,但在类中定义常量不能使用define(),而需要使用const修饰符.类中的常量使用const定义后,其访问方式和静态成员类似,都是通过类名或在成 ...
- cinder控制节点集群
#cinder控制节点集群 openstack pike 部署 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html #cinder块存储控制节点.txt.s ...
- 运行时动态库:not found 及介绍-linux的-Wl,-rpath命令
---此文章同步自我的CSDN博客--- 一.运行时动态库:not found 今天在使用linux编写c/c++程序时,需要用到第三方的动态库文件.刚开始编译完后,运行提示找不到动态库文件.我就 ...
- Scala入门系列(五):面向对象之类
定义类 // 定义类,包含field以及method class HelloWorld { private var name = "Leo" def sayHello() { pr ...
- webMagic+RabbitMQ+ES爬取京东建材数据
本次爬虫所要爬取的数据为京东建材数据,在爬取京东的过程中,发现京东并没有做反爬虫动作,所以爬取的过程还是比较顺利的. 为什么要用WebMagic: WebMagic作为一款轻量级的Java爬虫框架,可 ...
- Asp.Net下,基于Jquery的Ajax二级联动
最近做一个项目,要求实现二级联动效果.背景为:通过学院的选择,联动出专业选项.起初想直接用微软的控件实现Ajax效果,但是DropDownList控件会自动触发PostBack,在后台根本就不好控制, ...