吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(2)

389人阅读 评论(1) 收藏 举报
分类:

        进行误差分析:可进行人工统计或可同时并行评估几个想法。进行误差分析时,你应该找一组错误例子,可能在你的开发集里或者在你的测试集里,观察错误标记的例子,看看假阳性(false positives)和假阴性(false negatives),统计属于不同错误类型的错误数量。在这个过程中,你可能会得到启发,归纳出新的误差类型。总之,通过统计不同错误标记类型占总数的百分比可以帮你发现哪些问题需要优先解决或者给你构思新优化方向的灵感。

        清楚标注错误的数据:对于训练集:事实证明,深度学习算法对于训练集中的随机误差是相当鲁棒的,只要你标记出错的样本离随机误差不太远,如果误差足够随机,那么放着这些误差不管可能也没问题而不要花太多时间修复它们。只要总数据集足够大,实际误差可能不会太高。深度学习算法对随机误差很鲁棒,但对系统性的错误就没那么鲁棒了,比如说,如果做标记的人一直把白色的狗标记成猫,那就成问题了,因为你的分类器学习之后,会把所有的白色的狗都分类成猫。如果担心开发集或测试集上标记出错的样本带来的影响,他们一般建议你在误差分析时,添加一个额外的列,这样你也可以统计标签Y错误的样本数。在开发集或测试集中,针对这些错误的标记,如果严重影响了你在开发集上评估算法的能力,那么你就应该去花时间修正错误的标签,但是如果它们没有严重影响到你用开发集评估成本偏差的能力,那么可能就不应该花宝贵的时间去处理。

        建议看3个数字来确定是否值得去人工修正标记出错的数据:如下图,整体开发集误差;错误标记的数量或百分比;其它原因导致的错误。如果你要去修正开发集数据,这里有一些额外的方针和原则需要考虑:首先,不管用什么修正手段,都要同时作用到开发集和测试集上,因为开发集和测试集必须来自相同的分布。其次,你要考虑同时检验算法本应判断错误却判断正确的样本。


        快速搭建你的第一个系统,并进行迭代:如果你正在开发全新的机器学习应用,你应该尽快建立你的第一个系统原型,然后快速迭代:快速设立开发集/测试集和指标,这样就决定了你的目标所在。如果你的目标定错了,之后改也是可以的,但一定要设立某个目标。然后快速搭好一个机器学习系统原型,然后找到训练集,训练一下,看看效果,开始理解你的算法表现如何,在开发集/测试集你的评估指标表现如何。当你建立第一个系统后,你就可以用到偏差/方差分析,误差分析,来确定下一步优先做什么。

        在不同分布上进行训练和测试:记住:设立开发集的目的是告诉你的团队去瞄准的目标。即开发集、测试集中要包含真实场景的样本。训练集可以包含一些非真实场景的样本。

        Bias and Variance with mismatched data distributions:当你的训练集来自和开发集、测试集不同分布时分析偏差和方差的方式可能不一样。定义一组新的数据我们称之为训练-开发集:随机打乱训练集,然后分出一部分训练集作为训练-开发集,即训练集和训练-开发集来自同一分布,但是训练-开发集不会作为训练集的一部分,不会进行网络的后向传播中。然后分析训练集误差、训练-开发集误差、开发集误差,从中会总结是可避免的偏差、方差还是数据不匹配导致的,如下图:


        定位数据不匹配:如果发现有严重的数据不匹配问题,通常会做误差分析,尝试了解训练集和开发集/测试集的具体差异,如下图。为了避免对测试集过拟合,要做误差分析,你应该只人工去看开发集而不是测试集。收集更多看起来像开发集的数据做训练,一种办法是人工合成,但当你使用人工数据合成时,一定要谨慎,一定要记住你可能从所有可能性的空间只选了一部分去模拟数据,有可能会过拟合。


        迁移学习(transfer learning):神经网络可以从一个任务中学得知识并将这些知识应用到另一个独立的任务中,如下图。例如,也许你已经训练好一个能够识别像猫这样的对象的神经网络,然后使用那些知识,或者部分学习到的知识去帮助你更好地阅读x射线扫描图,这就是所谓的迁移学习。经验规则是,如果你有一个小数据集,就只训练输出层前的最后一层,或者是最后一两层,但是如果你有很多数据,那么也许你可以重新训练网络中的所有参数。这个在图像识别数据的初期训练阶段,有时称为预训练或微调(pre-trainingor fine tuning),因为你在用图像识别数据去预先初始化或者预训练神经网络的权重,然后更新所有的权重。迁移学习有效的原因:有很多低层次特征比如说边缘检测,曲线检测,阳性对象检测,从非常大的图像识别数据库中学得的这些能力可能有助于你的学习算法在放射科诊断中做的更好,算法学到了很多结构信息、图像形状的信息,其中一些知识可能会很有用。


        迁移学习什么时候是有意义的,如下图,如果你想从任务A学习并迁移一些知识到任务B,那么当任务A和任务B都有同样的输入x时,迁移是有意义的,如输入都是图像,或输入都是音频。当任务A的数据比任务B的数据多得多时,迁移学习意义更大。如果你觉得任务A的底层特征可以帮助任务B的学习,那迁移学习更有意义一些。


        多任务学习:在迁移学习中,你的步骤是串行的,你从任务A中学到的,然后迁移到任务B。在多任务学习中,你是开始学习试图让一个神经网络同时做几件事情,然后希望这里的每个任务都能帮到其它所有任务。例如,在研发无人驾驶车辆,如下图,那么你的无人驾驶车可能需要同时检测不同的物体,比如检测行人、车辆、停车标志、交通灯等其它物体,输入图像x,输出将不是一个标签,而是四个标签,因为四个物体可能同时出现在一张图里。那么你现在可以做的是训练一个神经网络来预测这些y值。另外你也可以训练四个不同的神经网络,而不是训练一个神经网络做四件事,但神经网络一些早期特征在识别不同物体时都会用到,你会发现,训练一个神经网络做四件事会比训练四个完全独立的神经网络分别做四件事性能会更好,这就是多任务学习的力量。


        多任务学习什么时候有意义:如下图,第一,如果你训练的一组任务,可以共用低层次特征;第二,每个任务的数据量很接近;第三,可以训练一个足够大的神经网络同时可以做好所有的工作。多任务学习的替代方法是为每个任务训练一个单独的神经网络。多任务学习会降低性能的唯一情况就是你的神经网络还不够大。


        什么是端到端的深度学习:简而言之,以前有一些数据处理系统或者学习系统,它们需要多个阶段的处理,端到端的深度学习就是忽略所有这些不同的阶段,用单个神经网络代替它,如下图。事实证明,端到端深度学习的挑战之一是:需要大量数据才能让系统表现良好。当你的数据集较小的时候,传统流水线方法其实效果也不错,通常做的更好。端到端学习可以表现很好,也可以简化系统架构,让你不需要搭建那么多手工设计的单独组件,但并不是每次都能成功。


        是否需要端到端的深度学习:端到端学习的好处:让数据说话;所需手工设计的组件更少。缺点:可能需要大量的数据;它排除了可能有用的手工设计组件。如下图:


        应用端到端的深度学习关键问题是:你有足够数据能够直接学到从x映射到y的函数。

        GitHub: https://github.com/fengbingchun/NN_Test 

查看评论

Coursera吴恩达《构建机器学习项目》课程笔记(1)-- 机器学习策略(上)

我的CSDN博客地址:红色石头的专栏 我的知乎主页:红色石头 我的微博:RedstoneWill的微博 我的GitHub:RedstoneWill的GitHub 我的微信...
  • red_stone1
  • red_stone1
  • 2017-11-16 14:04:37
  • 1531

吴恩达机器学习笔记

线性回归方程 为了解决实际生活中的问题,我们通常需要一个数学模型。比如,小明有一个房子(他想卖掉房子),为了知道房子的价格,小明收集了该地区近两年的房屋交易价格,他发现房屋价格与房屋大小呈正相关,所...
  • yhy1315
  • yhy1315
  • 2018-01-22 10:49:36
  • 296

Coursera吴恩达《神经网络与深度学习》课程笔记(1)-- 深度学习概述

我的CSDN博客地址:红色石头的专栏 我的知乎主页:红色石头 我的微博:RedstoneWill的微博 我的GitHub:RedstoneWill的GitHub 我的微信...
  • red_stone1
  • red_stone1
  • 2017-09-03 10:31:56
  • 9805

吴恩达机器学习笔记_第一周

毕业论文方向可能和神经网络挂钩,神经网络也是机器学习的一部分。从这周开始决定跟着Andrew Ng公开课系统地学习机器学习,4/4日开课,第一周为试听,今天先看了。以后每周更新一下。的确感觉讲的不错,...
  • hunterlew
  • hunterlew
  • 2016-04-02 16:51:08
  • 5088

吴恩达deeplearning之结构化机器学习—策略(1)

1.引言  这一部分主要是学习怎样快速高效的优化机器学习项目,加入你想优化你的猫分类器系统,你可以: 收集更多的数据 增加数据的多样性 梯度下降算法训练时间更长一些 尝试不同的而优化算法,比如Adam...
  • ice_actor
  • ice_actor
  • 2017-12-14 00:31:49
  • 132

[资料汇总]机器学习&深度学习视频资料汇总

第一部分 基础语言pandax视频教程 链接: https://pan.baidu.com/s/1pLqavVX 密码: fathpython入门到精通 链接: https://pan.baidu.c...
  • BaiHuaXiu123
  • BaiHuaXiu123
  • 2017-04-17 22:08:00
  • 4716

网易云课堂吴恩达Andrew Ng深度学习笔记(一)

时不时给自己充电,记笔记巩固记忆。我以前也接触过机器学习,往简单说就是以前统计理论的曲线拟合的概念包装,数据一多就变成机器学习或者叫做人工智能,也就是用数据做分析,得出分类或者回归的结果。以前是用SV...
  • u011135410
  • u011135410
  • 2018-02-22 16:11:28
  • 143

吴恩达机器学习课程笔记——第一周

1. 单变量线性回归(Linear Regression with One Variable)1.1 模型表示像上述公式,因为只含有一个特征/输入变量,因此这样的问题叫作单变量线性回归问题。例子如下:...
  • u012790625
  • u012790625
  • 2017-08-08 14:25:47
  • 1572

Coursera-AndrewNg(吴恩达)机器学习第一周笔记

引言Introduction 1 Welcome 2 什么是机器学习What is Machine Learning 3 监督学习Supervised Learning 4 无监督学习Unsuperv...
  • scruelt
  • scruelt
  • 2018-01-07 21:19:19
  • 574

Coursera Stanford 机器学习 笔记文章链接

此系列笔记对应于Coursera上的Stanford机器学习课程文章链接: 1.《机器学习笔记01:线性回归(Linear Regression)和梯度下降(Gradient Decent)》 2...
  • Artprog
  • Artprog
  • 2016-04-29 12:09:43
  • 5105
    个人资料
    持之以恒
    等级:
    访问量: 389万+
    积分: 3万+
    排名: 128
    最新评论
    文章存档