吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(3-2)-- 机器学习策略(2)


作者大树先生
博客http://blog.youkuaiyun.com/koala_tree
知乎https://www.zhihu.com/people/dashuxiansheng
GitHubhttps://github.com/KoalaTree
2017 年 10 月 23 日


以下为在Coursera上吴恩达老师的DeepLearning.ai课程项目中,第三部分《结构化机器学习项目》第二周课程“机器学习策略(2)”关键点的笔记。本次笔记并几乎涵盖了所有视频课程的内容。在阅读以下笔记的同时,强烈建议学习吴恩达老师的视频课程,视频请至 Coursera 或者 网易云课堂。


同时我在知乎上开设了关于机器学习深度学习的专栏收录下面的笔记,方便在移动端的学习。欢迎关注我的知乎:大树先生。一起学习一起进步呀!_


结构化机器学习项目 — 机器学习策略(2)

1. 误差分析

当我们在训练一个模型的时候,如一个猫和狗分类模型,最终得到了 90 % 90\% 90%的精确度,即有 10 % 10\% 10%的错误率。所以我们需要对模型的一些部分做相应调整,才能更好地提升分类的精度。

如果不加分析去做,可能几个月的努力对于提升精度并没有作用。所以一个好的误差分析的流程就相当重要。

收集错误样例

在开发集(测试集)中,获取大约100个错误标记的例子,并统计其中有多少个是狗。

  • 假设一种情况是100个数据中,有5个样例是狗,那么如果我们对数据集的错误标记做努力去改进模型的精度,那么可以提升的上限就是 5 % 5\% 5%,即仅仅可以达到 9.5 % 9.5\% 9.5%的错误率,这有时称为性能上限
    那么这种情况下,可能这样耗时的努力方向就不是很值得的一件事情。
  • 另外一种假设是100个数据中,有50多个样例是狗,那么这种情况下,我们去改进数据集的错误标记,就是一个比较值得的改进方向,可以将模型的精确度提升至 95 % 95\% 95%

并行分析

  • 修改那些被分类成猫的狗狗图片标签;
  • 修改那些被错误分类的大型猫科动物,如:狮子,豹子等;
  • 提升模糊图片的质量。

为了并行的分析,建立表格来进行。以单个错误分类样本为对象,分析每个样本错误分类的原因。

还在路上,稍等...

最后,统计错误类型的百分比,这个分析步骤可以给我们一个粗略的估计,让我们大致确定是否值得去处理每个不同的错误类型。

2. 清除错误标记的样本

下面还是以猫和狗分类问题为例子,来进行分析。如下面的分类中的几个样本:

还在路上,稍等...

情况一:

深度学习算法对训练集中的随机误差具有相当的鲁棒性。

只要我们标记出错的例子符合随机误差,如:做标记的人不小心错误,或按错分类键。那么像这种随机误差导致的标记错误,一般来说不管这些误差可能也没有问题。

所以对于这类误差,我们可以不去用大量的时间和精力去做修正,只要数据集足够大,实际误差不会因为这些随机误差有很大的变化。

情况二:

虽然深度学习算法对随机误差具有很好的鲁棒性,但是对于系统误差就不是这样了。

如果做标记的人一直把如例子中的白色的狗标记成猫,那么最终导致我们的分类器就会出现错误了。

dev、test中错误标记的情况:

如果在开发集和测试集中出现了错误标记的问题,我们可以在误差分析的过程中,增加错误标记这一原因,再对错误的数据进行分析,得出修正这些标记错误的价值。

还在路上,稍等...

修正开发、测试集上错误样例:

  • 对开发集和测试集上的数据进行检查,确保他们来自于相同的分布。使得我们以开发集为目标方向,更正确地将算法应用到测试集上。
  • 考虑算法分类错误的样本的同时也去考虑算法分类正确的样本。(通常难度比较大,很少这么做)
  • 训练集和开发/测试集来自不同的分布。

3. 搭建系统

  • 设置开发、测试集和优化指标(确定方向);
  • 快速地建立基本的系统;
  • 使用偏差方差分析、误差分析去确定后面步骤的优先步骤。

总的来说,如果我们想建立自己的深度学习系统,我们就需要做到:快速的建立自己的基本系统,并进行迭代。而不是想的太多,在一开始就建立一个非常复杂,难以入手的系统。

4. 不同分布上的训练和测试

在深度学习的时代,因为需求的数据量非常大,现在很多的团队,使用的训练数据都是和开发集和测试集来自不同的分布。

下面是一些处理训练集和测试集存在差异的最佳的做法。以前一周中的猫的分类问题为例:

还在路上,稍等...

我们可以从网上获取大量的高清晰的猫的图片去做分类,如200000张,但是只能获取少量利用手机拍摄的不清晰的图片,如10000张。但是我们系统的目的是应用到手机上做分类。

也就是说,我们的训练集和开发集、测试集来自于不同的分布。

方法一:

将两组数据合并到一起,总共得到21万张图片样本。将这些样本随机分配到训练、开发、测试集中。

  • 好处:三个集合中的数据均来自于同一分布;
  • 坏处:我们设立开发集的目的是瞄准目标,而现在我们的目标绝大部分是为了去优化网上获取的高清晰度的照片,而不是我们真正的目标。

这个方法不是一个好的方法。

方法二:

训练集均是来自网上下载的20万张高清图片,当然也可以加上5000张手机非高清图片;对于开发和测试集都是手机非高清图片。

  • 好处:开发集全部来自手机图片,瞄准目标;
  • 坏处:训练集和开发、测试集来自不同的分布。

从长期来看,这样的分布能够给我们带来更好的系统性能。

5. 不同分布上的偏差和方差

通过估计学习算法的偏差和方差,可以帮助我们确定接下来应该优先努力的方向。但是当我们的训练集和开发、测试集来自不同的分布时,分析偏差和方差的方式就有一定的不同。

方差和分布原由分析

以猫分类为例,假设以人的分类误差 0 % 0\% 0%作为贝叶斯误差。若我们模型的误差为:

  • Training error: 1 % 1\% 1%
  • Dev error: 10 % 10\% 10%

如果我们的训练集和开发、测试集来自相同的分布,那么我们可以说模型存在很大的方差问题。但如果数据来自不同的分布,那么我们就不能下这样的定论了。

那么我们如何去确定是由于分布不匹配的问题导致开发集的误差,还是由于算法中存在的方差问题所致?

设立“训练开发集“

训练开发集,其中的数据和训练数据来自同一分布,但是却不用于训练过程。

如果最终,我们的模型得到的误差分别为:

  • Training error: 1 % 1\% 1%
  • Training-dev error: 9 % 9\% 9%
  • Dev error: 10 % 10\% 10%

那么,由于训练开发集尽管

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值