3.2 实战项目二(手工分析错误、错误标签及其修正、快速地构建一个简单的系统(快速原型模型)、训练集与验证集-来源不一致的情况(异源问题)、迁移学习、多任务学习、端到端学习)

手工分析错误

手工分析错误的大多数是什么

猫猫识别,准确率90%,想提升,就继续猛加材料,猛调优?     --应该先做错误分析,再调优!

把识别出错的100张拿出来,

如果发现50%是"把狗识别成了猫"。那么发力点就是这个,如果再优化,提升就很大!

如果发现只有5%是"把狗识别成了猫",那么在狗这个方面努力,提升不大。

手工也可以分析多个错误类别

对于识别出错的100张图片,分析到底是什么情况。

对于上述问题,找准方向,让系统识别"不清楚的猫"的能力更强,就提升很大!

错误标签/错误标签的修正

训练集标签有错误怎么办

训练集 == {一组列向量(猫),一个向量(答案)},如果答案错了呢?

比例一般很小,没啥影响!

如果是系统型的错误,就要处理了。比如对于白色猫,手打的标签==狗。那么用户上传一只白色的猫,系统真的认为是一种狗。

错误标签的修正

  • 在验证集和测试集上同时使用,并且是同样的修正手段,以保证验证集和测试集来自相同的分布;
  • 同时检查判断正确和判断错误的例子(通常不用这么做);
  • 在修正验证集和测试集时,鉴于训练集的分布不一定和验证/测试集完全相同,可以不去修正训练集。

 快速地构建一个简单的系统

建议快速搭建好第一个系统,然后开始迭代。   (是不是类似那个。。快速原型模型?)

  1. 设置好训练、验证、测试集,设置好衡量指标,确定目标;
  2. 快速训练出一个初步的系统,用训练集来拟合参数,用验证集调参,用测试集评估;
  3. 通过偏差/方差分析以及错误分析等方法,决定下一步优先处理的方向。

训练集与验证集-来源不一致的情况(异源问题)

有时,我们很难得到来自同一个来源的训练/验证/测试集

SSR类图片 == 专业拍摄+高清,我们目前有20W个。 

A类图片 == 非专业拍摄+标清,我们有1W个 

既然模型的目的==识别这些用户上传的A类模糊图片。那么

训练集 == 20W个SSR + 5K个A

验证集 == 测试集 == 2.5K个A

异源时的拟合度分析

误差分析:拟合情况是从误差里面看出来的

若是之前,模型训练好之后,表现情况:训练集判别误差1%,测试集判别误差8%,我们可以说明过拟合问题。

若是异源,同样的情况,我们不一定能说明是过拟合。

情况1.过拟合问题   情况2.可能单纯的训练集高清大图比较容易识别,测试集模糊不堪不好搞。

解决方案:搞一个新的数据集--在训练神经网络之前,从训练集中拿出一部分 == 训练验证集。

若训练集误差1%,训练验证集误差9%,验证集误差10% == 过拟合问题

若训练集误差1%,训练验证集误差1.5%,验证集误差10% == 数据来源不一致问题

如何解决异源问题

  • 做错误分析,尝试了解训练集和验证/测试集的具体差异(主要是人工查看训练集和验证集的样本);
  • 尝试将训练数据调整得更像验证集,或者收集更多类似于验证/测试集的数据。

使用人工合成数据也可以考虑,但需要注意的是,比如:噪音1h合成在600h的语音,人听不出区别,但模型知道这全是同样的声音,对这个声音数据特别拟合,对未来随机的噪声表现不佳。

迁移学习

什么是迁移学习

识别猫--》识别狗

如何实现

先删除神经网络中原有的输出层,加入新的输出层(一层或者几层)并随机初始化权重系数(W[L]W[L]、b[L]b[L])

随后用新的训练集进行训练,就完成了迁移学习

 

CT训练数据少 == 只训练红色部分的参数,这个做法叫微调(Fine-Tuning)

CT训练数据多 == 只保留网络结构,重新训练wb。但是初始wb == 之前的模型的wb,这个过程称为预训练(Pre-Training)

什么时候使用迁移学习

买数据贵、数据少、小团队直接拿训练好的,发挥出自己的东西。

  1. 两个任务有同样的输入(比如都是图像或者都是音频);
  2. 拥有更多数据的任务迁移到数据较少的任务
  3. 某一任务的低层次特征(底层神经网络的某些功能)对另一个任务的学习有帮助。

多任务学习

直观理解

回想softmax,可以输入一张图,判断 猫/狗/鸡。

多任务学习 == 输入一张图,同时判断 是否存在 猫 狗 鸡

多任务学习 数据集里面的答案标签不再是 0或1 而是一个向量!多个图片的答案 就是一个矩阵

对比:

Softmax 回归的输出向量 y 中只有一个元素为 1;而多任务学习的输出向量 y 中可以有多个元素为 1。

成本函数的变化

成本函数要改变成:累加C个的值(上图是4个),求平均值。

什么时候使用多任务学习

  1. 训练的一组任务可以共用低层次特征;(识别行人、红绿灯,背景可能都是马路)
  2. 通常,每个任务的数据量接近;(数据集中,包含的行人、红绿灯等物品的数量 最好差不多,才发挥多任务的优势)
  3. 能够训练一个足够大的神经网络,以同时做好所有的工作。多任务学习会降低性能的唯一情况(即和为每个任务训练单个神经网络相比性能更低的情况)是神经网络还不够大。

端到端学习

什么是"端到端学习"

传统的机器学习 分块模型 == 每一个模块处理一种输入,然后其输出作为下一个模块的输入,构成一条流水线。

端到端深度学习(End-to-end Deep Learning) == 只用一个单一的神经网络模型来实现所有的功能。

它将所有模块混合在一起,只关心输入和输出。 

什么时候使用"端到端学习"(优点/缺点)

优点:

  • 只要有足够多的数据,剩下的全部交给一个足够大的神经网络。比起传统的机器学习分块模型,可能更能捕获数据中的任何统计信息,而不需要用人类固有的认知(或者说,成见)来进行分析,往往比人类手工干预、手工设计的算法还要优秀;
  • 所需手工设计的组件更少,简化设计工作流程;

缺点:

  • 需要大量的数据;
  • 排除了可能有用的人工设计组件;人类设计的算法帮不上忙,也不用不上。(计算机可能另一种角度表示逻辑,而不用人类强加设计、强加表示的语音/音符/音位等等)

决定一个问题是否应用端到端学习的关键点是:是否有足够的数据,支持能够直接学习从 x 映射到 y 。也有其他因素。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值