吴恩达机器学习总结(9)

进行误差分析

对在验证集上识别错误的图片分析
对于一个deaplearning model,我们发现在验证集上有一些狗的图片被识别成了猫,针对这种情况,我们需要先获取验证数据集上所有错误标记的图片,统计其中误识别为狗的数量。如果更改这些图片的标记对识别准确率有很大的提升,那么我们就进行更改;如果提升较小,那么我们需要找其他识别错误的原因。
在进行误差分析时,首先针对验证集中的错误识别找出可能导致识别错误的原因,再对错误原因的占比率进行统计,选择性能改善最大的原因进行修改。在这个过程中可添加新的错误原因。

清除错误标记的数据

对训练集和验证集上标记错误的图片进行分析
只要总数据集足够大,那么一些错误标记的训练样本放着不管也不会对结果造成很大影响,也就是说DL对训练样本的随机误差有一定的鲁棒性;但是DL对于系统误差(即将一种图片一致标记错误)不鲁棒。
对于验证集来说,如果错误识别的样本中由于错误标记识别错的所占比例很高,那么需要对错误标记的图片进行修改(这个高自己定义,没有固定的标准);如果所占比例不高,那么可以允许这类错误的存在,找对性能影响更大的因素去改善。
修正验证集需要注意的原则

  1. 当对验证集中的样本进行修正时,需要对测试集进行同样的操作
  2. 考虑到当对错误标记的样本进行修正时可能也会对原来正确分类的样本造成影响,因此最好对正确样本重新进行测试(但是一般不会这么做)。
  3. 修改之后可能导致训练集和验证集/测试集的分布不同。

针对一个新任务的处理方法

  1. 设立验证集/测试集和评价标准(metric)。
  2. 快速搭建一个初始化的系统
  3. 使用偏差/方差分析或误差分析来优先下一步的优化

训练集和验证集不同分布的处理方法

对于训练集和验证集的分布不同存在两种处理方法:

  1. 将两个数据集整合然后随机分布到train,dev,test数据集中。好处:train,dev,test分布相同,便于管理;坏处:(1) 数目多的集合冲淡了模型对于数据少集合的拟合;(2)因为我们的目标是在原本验证集上取得较高的准确度,重新分布之后使得目标发生了改变。(不建议使用该方法)
  2. 验证集和测试集不变,训练集中可以添加部分验证集中的图片。好处:目标与实际目标一致;坏处:训练集与验证集/测试集的分布不同。(该方法长期来看可以带来比较高的性能收益)

数据分布不匹配的方差和偏差

若训练集的误差较小,验证集的误差较大,如果训练集和验证集的分布相同,那么产生的原因为泛化能力差;如果训练集和验证集来自不同分布,那么不能轻易定义(1. 算法只看到了训练集未看到验证集;2. 分布改变)。
对于这种情况,我们添加一个train-dev集:与训练集的分布相同,但是不用于训练。
误差的定义
对于avoidable error是由于对训练集没有很好的匹配导致,根据之前的方法我们可以使用更大的网络或者更好的优化方法(根本上是降低训练误差)。对于variance来说,是泛化性能较差,我们可以使用正则化或者更大的训练集来降低。若过拟合成都过高,那么可以通过使用更大的验证集来进行改善。

处理数据不匹配问题

  1. 采用不同的错误分析来理解训练集和验证/测试集的不同
  2. 让训练集与验证/测试集更像;收集一些与验证/测试集更像的数据
  3. 人工数据合成产生新的数据,但是采用这种方法时,如果我们将一个大数据和一个小数据拟合,那么系统可能对小数据的特征过拟合从而偏离了我们原本的目标。

迁移学习

迁移学习存在两种方式:一是删除原本的输出层并添加新的输出层,重新初始化参数;二是删除原本的输出层之后添加新的隐藏层和输出层。
迁移学习的学习方式也有两种:如果数据量少,那么只训练最后新加上层的参数;如果数据量大,那么对整个网络重新训练。若重新训练所有权重,那么原本数据集里的训练成为预训练(pre-training),新数据集的训练叫做微调(fine-tuning)。
全连接层的使用条件:

  1. 任务A和任务B有相同的输入
  2. 相较任务B,对任务A有更多的数据
  3. 从任务A中获取的低级特征对任务B的学习有帮助

多任务学习

首先需要注意多任务与多分类的区别:

  1. 多分类任务虽然有多种类别,但是每个样本只有一个类别;多任务对于一个样本可以有多个类别
  2. 损失函数:多任务学习 J = 1 m i = 1 m j = 1 n L ( y ^ j ( i ) , y j ( i ) ) \mathcal{J} = \frac{1}{m} \sum_{i=1}^m\sum_{j=1}^n \mathcal{L}(\hat{y}_j^{(i)},y_j^{(i)}) ,这个损失函数需要对每个类别求logistic loss,然后将所有类别的loss求和再对所有样本求和,而多分类学习则是通过softmax函数求解。
    多任务学习可以处理部分label未标记的情况(求和时碰到非0/1的标记忽略)。

多任务学习有用的条件:

  1. 多个任务都可以从低层次的特征中获益
  2. 每个任务的数据总量大致相似
  3. 能够训练一个足够大的网络来在所有任务中取得较好的性能
    多任务学习只有在神经网络不够大时才会表现出比单任务学习较差的性能

端到端的学习

忽略学习任务中各个不同的阶段,直接用神经网络处理。
多步学习的优点:

  1. 解决两个问题比直接解决一个问题要简单
  2. 自任务的训练数据很多,以门禁系统为例,直接门禁检测的数据较少,但是人脸定位和人脸匹配的数据就很多
    多步学习的缺点:
    设计复杂

端到端学习的优点:

  1. 让数据说话,理论上可以捕获任何从 X y X \to y 的统计信息,而不会引入人类自己的偏见
  2. 不需要手动设计流程的每一步

缺点:

  1. 可能需要大量的数据才能完成一个任务,子任务的数据方便收集,但是端到端的数据难以收集
  2. 排除了一些可能有用的手动设计部分
    在学习过程中的知识来源一部分来自于数据一部分来自于手动设计的知识

猜你喜欢

转载自blog.csdn.net/qq_33669204/article/details/83784125