吴恩达深度学习专项课程3学习笔记/week2/Error analysis

Error analysis

Carrying out error analysis

Error analysis是手动分析算法错误的过程。

通过一个例子来说明error analysis的过程。假设你在做猫图像识别的算法,它的错误率高达10%,你希望提高它的表现。

你已经有了一些改进的想法,包括:

  1. 算法把狗的图片错误识别为猫,需要修正;
  2. 算法把其他一些猫科动物(比如狮子,豹,...)错误识别为猫,需要修正;
  3. 算法对于比较模糊的图片容易识别错误,需要改进;
  4. 算法对于加了滤镜的图片容易识别错误,需要改进。

那么,究竟哪个想法是最有价值去花费时间实现的呢?我们可以通过一个表格进行error analysis,从而给我们一个直观的指导。

  • 首先,从dev set中手动地找出比如约100个被错误标记的样本;
  • 然后,用一个表格进行统计,在这些选出的错误样本中,各个原因导致错误的比例;

  • 最后,分析下一步集中解决哪个问题可以使得准确率有最大的提升。

比如假设我们的统计结果如上表所示,那么集中解决其他猫科动物的识别或者模糊图像的问题显然更有价值,我们可以采取再去多收集一些其他猫科动物的图片加入训练集等措施。

Cleaning up incorrectly labled data

当我们发现我们使用的数据中有些被标记错误,是否需要手动一一更正呢?我们应该怎么处理?

对于training set

事实上,DL算法对于训练集中的[随机误差]有着较强的抗干扰能力。因此,如果训练集中有一些随机的错误标记,可以不用去修改不会产生什么坏的影响。需要注意的是,如果存在系统误差,比如把绝大多数白色的小狗错误标记成猫,则容易造成干扰,需要更正。

对于dev/tests set

建议在error analysis过程中,增加统计“错误标记”一项造成错误的比例。例如,我们在表格增加了“错误标记”列并且得到以下统计结果。那么我们是否需要花费精力取修改这6%的标记错误呢?

建议:需要看错误标记的问题是否影响dev/test set准确地反映算法正确性的能力。通过三个数据来判断:1.整体dev set误差;2.错误标记造成的误差;3.其他问题造成的误差。

举例来说,对于左边的情况,0.6%与9.4%相比占比较少,因此可以考虑不修改;对于右边的情况,0.6%与1.4%相比占比已经比较大了,因此考虑修改。

另外还有一些其他的建议:

  • 对于dev和test set始终进行同样的处理过程,以确保它们来自同样的分布。dev set进行的错误标记的更正,那么test set也应该更正。
  • 可以考虑对算法判断错误的和判断正确的都进行检查,算法可能把某些本身标记错误的猫判读为猫造成正确分类的假象。但是判断错误比例一般较小,容易检查,而正确检查则较为困难。
  • 训练集和dev/test set可以来自略不相同的分布。训练集一般很大,检查较困难,因此只更正dev/test set而不更正training set可能是OK的。

Bulid your first system quickly, then iterate

如果你在建立一个全新应用的ML系统,你可能一开始考虑到很多可能因素的影响,迷茫于集中解决什么,对此的建议是:首先快速建立起来第一个系统,不要考虑过多,然后再迭代改进。 不要一开始想的过于复杂,增加困难建立了过于复杂的系统。

  1. 设置好dev/test set和评估指标,这决定了瞄准的目标;
  2. 建立初步的系统(快速训练,fit参数;dev set,调整参数;test set,评价结果)
  3. 进行bias/variance分析和 error analysis分析来确定下一步优先解决什么问题,逐步优化。

如果你是在有一些先验经验的基础上建立ML系统,或者已经有较为完善的学术研究基础可以解决很多你建立系统的相同问题,比如人脸识别已经有很多研究基础,你可以考虑在这些基础上直接建立一个较为复杂的系统。

原文地址:https://www.cnblogs.com/surimj/p/8452793.html

时间: 2024-07-31 19:38:26

吴恩达深度学习专项课程3学习笔记/week2/Error analysis的相关文章

吴恩达深度学习:1.2什么是神经网络

写在开头的话,本博客内容全部来自吴恩达深度学习教学课程,插图均来自吴恩达课件,在此说明来处,不喜勿喷! 一.什么是神经网络 1.我们从一个房屋加个预测的例子开始,假设有一个6间房间的数据集,已知房屋的面积单位是平方米或者平方英尺,已知房屋加个,现在想要找到一个函数,根据房屋面积来预测房屋价格的函数.如果有机器学习的只是,可以用线性回归得到这样的一条直线: 但是我们知道,价格永远不可能为一个负值,所以用一个直线的线性回归进行预测不太合适,我们可以在size轴将预测线弯曲一点,让他结束于0,我们所要

机器学习爱好者 -- 翻译吴恩达老师的机器学习课程字幕 http://www.ai-start.com/

机器学习爱好者 -- 翻译吴恩达老师的机器学习课程字幕 http://www.ai-start.com/ https://zhuanlan.zhihu.com/fengdu78 https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes 文档PDF   https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes/blob/master/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%

吴恩达《机器学习》课程总结(5)_logistic回归

Q1分类问题 回归问题的输出可能是很大的数,而在分类问题中,比如二分类,希望输出的值是0或1,如何将回归输出的值转换成分类的输出0,1成为关键.注意logistics回归又称 逻辑回归,但他是分类问题,而不是回归问题. Q2假说表示 其中: sigmoid函数 hθ(x)的作用是,对于给定的输入变量,根据选择的参数计算输出变量=1的可能性即hθ(x)=P(y=1|x;θ). Q3判定边界 g(z)中的z即为判定边界,如下 Q4代价函数 如果用之前回归时用的平方损失函数,代价函数将是非凸函数,会收

吴恩达深度学习专项课程3学习笔记/week1/Setting up ML Application

应用ML是一个高度迭代的过程 Idea->Code->Experment->... 去不断地调整超参数. Train/Dev/Test sets 通常将数据集划分为Train/Dev/Test集. Training set: 用于模型的训练 Hold-out cross validation set/Developmet set: 用于测试,调整模型超参数 Test set: 用于最终评估 以前的ML问题:数据规模在w级,通常70/30划分Train/Test集或者60/20/20比例划

吴恩达深度学习专项课程2学习笔记/week2/Optimization Algorithms

Optimization algorithms 优化算法以加速训练. Mini-batch gradient descend Batch gradient descend:每一小步梯度下降否需要计算所有的训练样本.很耗时. Mini-batch gradient descend:将训练集分为很多小的mini-batch,每一个epoch用到一个mini-batch的训练样本,进行一次梯度下降(向前传播,计算cost,向后传播).训练速度会提升很多. 选择mini-batch的size 如果siz

吴恩达深度学习课程第一课 — 神经网络与深度学习 — 第一周练习

课程一 - 神经网络和深度学习 第一周 - 深度学习简介 第 1 题 “人工智能是新电力”这个比喻指的是什么? A.人工智能为我们的家庭和办公室的个人设备供电,类似于电力. B.通过“智能电网”,人工智能正在传递新一波的电力. C.人工智能在计算机上运行,因此由电力驱动,但它让计算机做以前不可能做的事情. D.与100年前开始的电力类似,人工智能正在改变多个行业. 第 2 题 以下哪些是最近深度学习开始崛起的原因?(选2个答案) A.我们拥有了更多的计算能力 B.神经网络是一个崭新的领域. C.

吴恩达-深度学习-课程笔记-6: 深度学习的实用层面( Week 1 )

1 训练/验证/测试集( Train/Dev/test sets ) 构建神经网络的时候有些参数需要选择,比如层数,单元数,学习率,激活函数.这些参数可以通过在验证集上的表现好坏来进行选择. 前几年机器学习普遍的做法: 把数据分成60%训练集,20%验证集,20%测试集.如果有指明的测试集,那就用把数据分成70%训练集,30%验证集. 现在数据量大了,那么验证集和数据集的比例会变小.比如我们有100w的数据,取1w条数据来评估就可以了,取1w做验证集,1w做测试集,剩下的用来训练,即98%的训练

吴恩达-深度学习-课程笔记-7: 优化算法( Week 2 )

1 Mini-batch梯度下降 在做梯度下降的时候,不选取训练集的所有样本计算损失函数,而是切分成很多个相等的部分,每个部分称为一个mini-batch,我们对一个mini-batch的数据计算代价,做完梯度下降,再对下一个mini-batch做梯度下降.比如500w个数据,一个mini-batch设为1000的话,我们就做5000次梯度下降(5000个mini-batch,每个mini-batch样本数为1000,总共500w个样本). 对于batch梯度下降(每次计算所有的样本),随着迭代

吴恩达-深度学习-课程笔记-8: 超参数调试、Batch正则化和softmax( Week 3 )

1 调试处理( tuning process ) 如下图所示,ng认为学习速率α是需要调试的最重要的超参数. 其次重要的是momentum算法的β参数(一般设为0.9),隐藏单元数和mini-batch的大小. 第三重要的是神经网络的层数和学习率衰减 adam算法的三个参数一般不调整,设定为0.9, 0.999, 10^-8. 注意这些直觉是ng的经验,ng自己说了,可能其它的深度学习研究者是不这么认为的. 那么如何选择参数呢?下面介绍两个策略,随机搜索和精细搜索. 早一代的机器学习算法中,如下