DeepLearning.ai 笔记(五)

本笔记是课程《Structuring Machine Learning Projects》的学习笔记,该课程介绍了在进行机器学习项目时需要注意的一些点,包括正交化方法,误差分析,迁移学习,多任务学习和端到端(end to end)系统。


正交化

正交化方法指的是在修改算法的一部分时不会对另一部分造成影响。其中一个反例是early stopping,当我们使用early stopping来改善验证集误差时,会对训练集误差产生影响,因此我们一般选择其他的避免过拟合的方式,比如正则化方法。

注意:如果在验证集表现好,在测试集表现差,那需要增加验证集的大小。


贝叶斯误差

贝叶斯误差被认为是能达到的极限误差,我们再怎么努力也无法超越。

有时候会把人类水平误差认为是贝叶斯误差,然后把训练集误差和人类水平误差之间的差距称为可避免偏差,把训练集误差和验证集误差之间的差距称为方差,重点减少训练集误差还是验证集误差,取决于可避免偏差和误差谁更大一些。

  1. A例子表明应重点减少训练误差
  2. B例子表明应重点减少验证误差


误差分析

找出验证集中错误分类的样本,对它们分类错误的原因进行分类统计,找出错误最多的原因进行重点改善。

验证集和测试集分布必须一样,它俩和训练集分布可以不同。可以先用庞大的数据来做训练数据,例如高清网络猫图,然后用目标图像做验证和测试数据,例如手机上传的猫图。

验证集和测试集误差有很大差距的话,说明对验证集过拟合了,需要增大验证集。

这种情况下,我们可以从训练集再分出来一小部分座位训练-验证集,衡量它的误差。

  1. 人类水平误差
  2. 训练集误差
  3. 训练-验证集误差
  4. 验证集误差
  5. 测试集误差


1-2之间差距表明可避免偏差bias。

2-3之间差距表明方差variance

3-4之间差距表明数据不匹配差距

4-5之间差距表明验证集过拟合程度


做人工误差分析,看看训练集和验证集的样本差别,然后尽量让训练集像验证集。


迁移学习

迁移学习适合目标任务训练数据集较少的情况。

任务A迁移到B上,需要A和B有相同的输入,例如都是图像,或者都是音频。

A的数据量要远大于B。

A的低层次特征可以帮助B。

可以A数据集上先训练好网络,然后把最后一层或者几层参数重新初始化,最后用B数据集进行重新训练。如果B数据集较大也可以把网络所有层都重新训练。


多任务学习

例如多标签分类。

也可以应对标签有部分缺省的情况,这样在j加的时候只加有标注的类别的损失。

在物体检测领域,自动驾驶领域多任务学习用的更多。大部分时候迁移学习用的更多。

多个任务的底层特征对彼此都有帮助的前提下,可以用多任务学习。

每个任务的数据量相差不大的情况下可以用多任务学习,效果会更好些。

如果能训练一个足够大的神经网络,那么多任务学习的效果不会比训练多个神经网络效果差。


端到端系统

端到端系统可能会需要更庞大的数据量,它省去了人为设计的很多环节,数据量庞大的情况下效果会特别好。

然而如果没有庞大的数据量,可以选择人为的设计,人为的设计系统可以把人类对问题的很多认识直接注入系统中。