吴恩达Deeplearning.ai 知识点梳理(course 3,week 2)

本周主要讲的是Error Analysis、Mismatched Training and dev/test set,transfer learning,End to end learning几个话题。

Error Analysis

Carrying out error analysis

  在做错误分析的时候,最好是从错误的分类结果里边拿出100个左右的样本,做一个统计,究竟是那些样本导致了问题,这样可以并行的了解问题都出在哪里,然后有针对性的对犯错比较大的地方进行优化。比方说一上来发现很多错误是把狗当成了猫,那么就开始解决狗的图片吗,显然不是。因为没准狗在错误占比里边只有8%。所以数据统计是最重要的,决定了改进的方向。
Evaluate multiple ideas in parallel

Cleaning up Incorrectly labeled data

  如果我们在调试的过程中,发现了一些错误标注的samples,我们应该怎么做呢?
Error Analysis
  首先要做的依旧是Error Analysis。因为它是指明方向的。看一看因为标错导致的错误占整个dev error中的多少。比方说上图的示例,只占了6%,那么就说明有更多的更重要的问题等待解决,而不是这个6%的清洗数据。假如把其他问题改到很好了,那这个时候有可能标错的数据导致的错误率占比达到30%多了,那么就应该洗一洗了。另外其实对于大部分的深度学习框架来说,对于少量的随机错误还是比较Robust的,但是对于系统错误,比方说把所有白色的狗都标记成了猫,这个就没法Robust了。
  一旦决定清洗数据了,那么就要有如下几点注意:

  1. 如果清洗了dev set,那么test set也要清洗,dev set和test set必须是相同的distribution。这个是会有huge impact的。
  2. 建议把algorithm判断对的那些个也做一下检查。不过这个可能更费事。
  3. 这个时候training set和dev/test set就有轻微的不同的distribution了。这个问题的处理会在下边解决。

Build your first system quickly, then iterate

  对于一个新的machine learning问题来说,一个非常重要的就是不要over think,把必要的问题考虑好了之后,就按照如下的顺序进行尝试:
1. 设置好dev/test set以及metrics。
1. 好target。
2. 尽快建立一个初始的系统:
1. 尽快训练Test Set:Fit Parameters
2. Dev set:tuning Parameters
3. Test set:评估性能
3. 使用Bias/Variance以及Error analysis来对下一步的工作做优先级分配。

Mismatched traning and dev/test set

  有时候最终的目标数据可能确实没法收集到特别多。比方说用手机app拍摄的猫,很可能非常不专业,会有模糊等问题。又比如车载语音识别,会有汽车的噪声等等。那么这个时候应该如何处理呢?
Cat Example

Training/dev/test set的分配

  假如有200,000张网页上的高清猫图,然后有10,000张app的猫图,一种方法是将所有猫图混起来,然后随机打乱顺序,然后随机分配出来205,000/2500/2500的分配。但是这样不好在于最终目标和dev/test set不match。目标就不对了。另外一种是dev/test set分别有2500张app猫图,剩下的猫图全都放入其他猫图里边作为训练集。
  这样做的优劣如下:

  1. 优点是Target是well defined。
  2. 缺点是Training set和dev/test set分布不一致。
  3. 但是从长期看,这样做会有更好地Performance。

Bias and Variance with mismatched data distributions

  由于分布不一样,所以对于data mismatch导致的错误是无法衡量的,所以这里会引入一个Training-Dev set,它的分布和Training set是一样的,这样就可以把Variance的衡量和data mismatch的衡量分开了。
情景

  1. A是什么结论也得不出来,因为Variance和Data Mismatch揉在一起。
  2. B的Variance比较大。
  3. C的Data Mismatch比较大。
  4. D的Avoidable Bias比较大。
  5. E的Avoidable Bias比较大,同时Data mismatch也比较大。
  6. 一方面有一些Avoidable Bias,同时也有一些Variance,但是可能最终目标的数据的分布比较简单,所以在最终结果上显得比较好。

下图是总体流程和评估错误的方法。
总体流程和评估

Data Mismatch 的处理

 &mesp;现在基本上没有什么特别系统的方法能够处理Data Mismatch的问题,所以一般性的指南是:

  1. 人工理解一下究竟Training和Dev/test set之间究竟有什么差别。Development绝对不能在Test set上做,否则就会给Test set带来overfitting。
  2. 可以使用data synthesis来对training data进行处理使其像dev/test set,或者收集一些像dev/test set的数据集。但是这种方法可能会导致test data落到一个很小的数据子集中。一个例子是对于那个汽车语音识别的问题,我们采集1小时的汽车噪声,跟10,000小时的干净语料混合,人耳听上去很好,但是神经网络很可能overfit到这1小时的汽车噪声上。不过收集10,000小时的噪声也比较困难。目前很多使用data synthesis的系统很多都有很大的性能提升。

  下面是两个data synthesis的例子,一个是语音+噪声,一个是使用计算机图形学来模拟汽车。
语音合成

图像合成

Learning From multiple tasks

Transfer learning

 &mesp;Transfer Learning是指用一个application的neural network的知识用在另一个application上,例如识别猫的用来识别X光片上的肿瘤。

  具体做法就是保留所有前级的神经网络,将最后的几级,或者1级,或者新添加几级,在保留前级网络的同时,训练最后几级或者新添加的几级。

  什么时候transfer learning是能起作用的呢?

  1. Task A和Task B的输入是一样的。比方说都是图像或者都是语音。
  2. Task A的数据比Task B多好多。
  3. 两个Task可以共享Low Level Features。

Multi-Task Learning

  Multi-task Learning就是用一个神经网络来做多个任务。比方说用一个神经网络识别图中是否有汽车,行人,路标以及红绿灯。

  什么时候使用呢?

  1. 在一系列任务上训练,可以因为他们share相同的low level features而获利。
  2. 一般来说,每一个任务的data数量都差不多。例如每一个都有1000个数据集。
  3. 可以训练一个很大的神经网络,让所有的task都做得很好。通常来说,假如multi-task比Seperate task做的差,那只能是神经网络不够大。

  multi-Task label是什么样子的?
multi-Task

End to end learning

  以前做机器学习的时候,总是人自己提取特征。但是其实这个并不是一个最好的方法。比方说为了识别语音cat,分别识别c a t三个音节,这个是人自己的认知(preperception),对于机器并不一定是最优的。
End to end learning

  但是对于小数据量来说,确实手动提取特征会好一些。所以是否使用End to end learning,其实主要是看有没有相应的xy pair,以及是否有大量的数据可供机器找到这个mapping。

   End to end learning的特点总结如下:

好处:

  1. 让数据说话,这样就让机器去发现统计规律,而不是把人类的preperception强加给机器。
  2. 不用加很多hand-designing feature,这样就简单好多。

坏处:

  1. 需要大量的data:不一定每一个问题都能有对应的大量的数据。
  2. 可能把一些潜在的有价值的hand-designed feature给丢掉了。数据和hand-designed feature是两个最主要的知识来源。如果数据集比较小,小于hand-designed system,那么使用人工的feature会更有意义。

applying end to end deep learning

  上图中有几个例子,一个是从一张图里边找到一个人脸,这个数据会比较多。而第二个例子是从一个X光片里看一个人的年龄,这个从直觉上会复杂一些,至少得找不少数据才行。而更复杂的例子是,从一张图片里边直接给出自动驾驶的汽车的方向盘应该怎么打。这个就极其复杂了。所以这种自动驾驶问题,更多的是从画面里找出行人、汽车等,然后根据这些,再来进行motion planning,最后得到一个该怎么打轮的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值