Deep Learning Specialization 3: Structuring Machine Learning Projects - Note2

本周的内容比较多,一些概念还是很重要的,需要好好去理解。

Structuring Maching Learning Projects - Week 2

1. Error Analysis

核心问题:怎样判断一个改善效果的方向是否值得尝试的?

更核心的问题:你能坚持人工错误分析吗?

1.1 坚持使用错误分析表格

Dev Set验证集中做错误采样分析,比如下面是一个自动驾驶图像识别的错误分析:

Error%PercentComment
Overall dev set error14.3%
4.1%
Errors due to foggy pictures8.0%
Errors due to rain drops stuck on your car’s front-facing camera2.2%
Errors due to other causes1.0%

做完错误比例分析,优先改善什么就非常明显了。难点在于反复坚持用这种方式来指导工作,毕竟人工标注还是很烦的。

1.2 清理错误标注数据

一般地,在数据量足够的情况下,神经网络对随机错误并不敏感。

严谨做法是仍然使用1.1中的方法来分析错误,增加标注错误类的分析,这样就能明确地知道错误标注的影响了。

个人以为在样本比较少的时候,这个问题还是需要关注的,错误标注会让分类边界变得模糊,会让分类边界附近的一些样本被错误分类。在这种情况下,高质量的样本还是很重要的。

如果要纠正样本:

  1. dev/test集合都需要进行同样的纠正(否则就出现了dev/test分布不一致,training的目标是让dev error更低,这样就出现了分歧);
  2. 检查样本时,一般只会仔细检查错误样本,正确分类的样本也需要查看。可能能发现一些碰巧被分对的,但是一般分对的要远远多于分错的,所以并不会总是去看正确分类的样本;
  3. 纠正后training set与dev/test set分布上会有一些差异,一般来说影响不大(自然是建立在大数据的基础上的)。

1.3 快速原型,快速迭代

现在应该大家都接受了这种“快糙猛”的模式:

  1. Set up dev/test set and (single) metric
  2. Build initial system quickly
  3. Use Bias/Variance analysis & Error analysis to prioritize next step.

看完了这三步就明白了,快糙的目标是为了迅速找到最有价值的优化方向。

2. Mismatched Training and Dev/Test set

有种很常见的情况是已经拥有或者很容易获取的训练集并不是来自于目标场景,目标场景只有很少的样本,这个时候在建立任务的时候需要一些改变。

2.1 如何切分Train/Dev/Test集

假定要做面向mobile场景(比如用户上传)下的图像识别,但是有200K来自web的清晰图片样本(相对容易收集)和10K来自mobile场景下的。

  • 混合再随机切割traning/dev/test集:此时由于dev中mobile场景图片的比例非常低,分类器会倾向于忽略来自mobile场景的图片。注意,这里应用在mobile场景是目标,目标被忽略了。
  • dev/test集设置为只来自mobile的,比如:dev/test各5K mobile样本,training有200k web + 5k mobile。简单说就是只让目标成为检验的目标。

2.2 错误分析

首先,额外划分出training-dev集,此时分析应该遵循以下表格:

向上比较误差类型
Bayes Error-
Human Error-
Training ErrorAvoidable Bias
Training-dev ErrorVarinace
Dev ErrorData Mismatch
Test ErrorOverfitting

2.3 解决数据不匹配

没有系统解决方案,但是在不同问题下可以有变通。

  1. 进行人工错误分析,理解dev与training集之间的分布差异;
  2. 为training集增加与dev集更相近的数据(收集或者合成),比如:
    • 合成:汽车噪声+人声 ≈ \approx 汽车上说话

3. Learning from Multiple Tasks

分为两种:

  1. 迁移学习 先学习一个任务,然后再迁移到另外一个任务上,有先后顺序关系;
  2. 多任务学习 多个任务同时学习。

迁移学习用得比多任务学习要多得多,但是在图像的多目标检测上,多任务学习是不错的选择。

3.1 迁移学习

在训练好(pre-training)的的网络中,去掉最后一层随机,重新初始化最后一层的参数根据新的 &lt; x , y &gt; &lt;x, y&gt; <x,y>样本进行训练(这种方式被称作fine-tuning):

  1. 样本较少时只训练最后一层
  2. 样本较多时可以尝试训练所有层

迁移学习的条件(任务A到任务B):

  • 任务A与任务B的输入是一样的;
  • 任务A的数据远远多于任务B;
  • 任务A能够提供对任务B有用的Low level features.

一般应用在大数据模型向小数据场景应用的情况下。

3.2 多任务学习

以多目标检测(4个)为例,最后的输出单元每一位负责一个对象,包括:

  • 汽车
  • 红绿灯
  • 停车标识
  • 行人标识

目标函数也会相应更改:
1 m ∑ i = 1 m ∑ j 4 L ( y ^ j ( i ) , y j ( i ) ) \frac{1}{m} \sum^m_{i=1}\sum^4_j \mathcal{L}(\hat{y}_j^{(i)}, y_j^{(i)}) m1i=1mj4L(y^j(i),yj(i))
需要,注意与Softmax的区别。

什么时候多任务学习有意义:

  1. 多任务之间能够共享一些lower-level特征;
  2. 能够训练更大的网络来在所有关注的任务上表现都很好。
  3. (非硬性要求)每一个任务拥有的数据量相近;

4. End-to-End Learning

4.1 什么是端到端学习?

课程中以语音识别为例进行了说明:

  1. 传统方法:Audio → \rightarrow MFCC Features → \rightarrow ML Phonems(音素) → \rightarrow Words → \rightarrow Transcript (句子)
  2. 端到端:Audio → \rightarrow Transcript

端到端只有在数据中有大量数据的时候才有效,在数据不够充分时,可以只将部分阶段替换成深度学习,而其它的保持不变。

课程中举了一例来说明端到端并非总是最佳方案:在旋转门识别中,如果直接建立旋转门前收集到的图片到目标的标注(端到端)的映射,那么能够采集到的样本非常少。但是如果先进行图像分割缩放,得到统一大小的状况图像,可以用于识别的数据就非常非常多了。问题分割成了两步,但是可行性大幅提升。

4.2 端到端学习的优缺点

优点:

  1. 让数据说话,而不必去学习一些人为设计的中间元素(比如语音识别中的音素)
  2. 减少了对手工设计特征的依赖

缺点:

  1. 有可能需要采集大量数据
  2. 去掉了可能有用的手工设计组件(特征),手工设计的组件可能能提供很强的先验知识
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sklearn和DeepLearning4j是两个不同的机器学习框架。Sklearn是一个流行的Python机器学习库,提供了各种常用机器学习算法的实现和工具。它包括了数据预处理、特征选择、模型评估等功能。而DeepLearning4j是一个用Java编写的深度学习库,主要用于建立和训练神经网络模型。 在你提供的引用中,引用是Sun等人在2016年的一篇论文,标题为"Deep Residual Learning for Image Recognition",该论文介绍了一种深度学习模型用于图像识别的方法。引用是一段代码,用于在Sklearn中进行平面数据分类的实验。引用则是一篇关于数据预处理的文章目录。 综上所述,Sklearn是一个Python机器学习库,而DeepLearning4j是一个Java深度学习库,它们分别用于不同的机器学习任务。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [深度残差收缩网络和极端随机森林.zip](https://download.csdn.net/download/qq_30803353/87761760)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Coursera-Deep Learning Specialization 课程之(一):Neural Networks and Deep Learning-weak3编程作业](https://blog.csdn.net/leaeason/article/details/78262356)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [MachineLearning&DeepLearning:数据预处理](https://blog.csdn.net/qq_34262612/article/details/108392610)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值