2021版吴恩达深度学习课程Deeplearning.ai Day14 9.19

学习内容

03.结构化机器学习项目

1.2 正交化

1.
*正交化是指我们优化结果的时候,希望通过独立控制变量的方式,一一优化目标,变量之间是90°的正交
image.png
2.以下是我们在深度学习中需要达到的4个目标
image.png

1.3 单数评价指标

1.F1用于权衡recall和precision
image.png
2.平均值
image.png

1.4 满足和优化指标

1.
*满足指标指的是我们的算法一定需要达到的阈值,只要算法指标达到阈值要求,我们就不再对满足指标做要求,只对优化指标进行要求。
*优化指标指的是我们的算法尽量需要去优化的指标,哪种模型在达到满足指标的条件下,能够得到更好的优化指标,那么我们就认为这是最好的模型。
*满足指标的选择一般有参考值,如以用户体验为标准,ms和ns之间没区别。
image.png

1.5 训练 开发 测试集分布

1.
*尽量选择开发和测试集的分布属于同一分布,才能保证我们的测验是朝着正确的目标前进的。
image.png
2.
*我们考虑训练集去让我们更快接近我们的目标,开发集和测试集属于同一分布确保我们朝着正确的目标前进。
image.png

1.6 开发和测试集的大小和指标

1.
*现代开发中,由于数据规模的扩大,有时百万的数据,我们只需要1%的数据作为测试集/开发集即可
image.png

1.7 何时更改开发 测试集和指标

1.
*以下是一种更改指标的方式,我们可以通过添加权重去对某些porn图片做筛选。
*这种更改指标的方式也是正交化思想的体现,即先确定需要优化的目标,再朝目标优化。
image.png
2.
image.png

1.9 可避免的偏见

1.
*我们在一些任务中,可以用人类误差代替贝叶斯最优错误率(算法正确的理论上限)
*贝叶斯错误率和训练集之间的差值是可避免偏差,我们一般希望可避免偏差尽可能小,但也不希望过小(可能过拟合)。
*训练集和开发集之间的误差是另一个指标,用于衡量方差的大小,如图,2%的方差说明可以采取一些正则化措施。
image.png

1.10 理解人类水平表现

1.
*我们在某些任务中,会使用人类水平误差作为贝叶斯误差,但由于开发目标的不一样,我们可以把人类水平误差定为不同的值。
image.png
2.
*当我们的项目足够好的时候,人类水平表现对我们最终的项目正确率能有多好有很大的影响。
*当我们的训练误差是0.5%时,如果我们的人类水平表现是0.7%,那么依旧有可优化空间;如果我们的人类水平表现是0.5%,那么可偏差误差为0,此时不会再优化。
image.png
3.
*总而言之,人类表现水平让我们得以计算当前算法模型下,可避免的偏差和方差,分别帮助我们判断欠拟合和过拟合,哪个问题更需要我们优先解决。
image.png

1.11 超越人类水平表现

1.当我们的算法超越人类水平表现之后,我们就难以判断它们距离贝叶斯最优误差的距离了,也很难判断当前应该朝着什么方向优化,因为一旦超越人类表现,我们之前的判断工具就没那么好用了。
2.比较关键的一点是,如果要超越人类水平表现,往往需要大量的数据。

1.12 提供您的模型性能

1.2项基础性的准则
image.png
2.策略总结
image.png

2.1 进行误差分析

1.在dev集上进行误差分析可以帮助我们初步判断在某些方向上进行优化是否值得
image.png
2.分析误差样本,选择最值得优化的方向进行优化
image.png

2.2 清理错误标注的数据

1.
*在训练集上错误标注的数据,只要它们的错误属于或接近某种随机错误,那么其实不会造成太大影响,深度学习的训练比较稳健,哪怕是在随机错误的训练数据上得到的结果,对最终的神经网络学习影响也不大。
*但值得一提的是,深度学习在系统误差标注的训练集上得到的结果并不稳健,比如你一直把白色的狗标注为猫,那么就可能会导致错误结果。
image.png
2.
*我们如果想要知道错误标记的数据在测试集和开发集上造成了什么样的影响,可以在错误分析中添加一列判断。
*什么时候需要对这些数据进行处理?
*在整体的dev误差中,标注错误导致的错误误差占比比较大的时候,这也意味着,当我们的算法A/B误差接近的时候,更需要谨慎判断其在开发集上面得到的误差,因为里面的误差数值可能包含错误标记的部分。
image.png
3.当我们对错误标记的数据进行更正处理的时候,一般需要考虑以下内容:
同时更正dev和test集的数据,保证二者分布一致。
(不常用)同时关注正确计算的那些数据中是否包含错误标记的
*修正训练集中的数据没那么重要,可以只修正dev和test集的数据
image.png

2.3 快速构建你的第一个系统,并进行迭代

1.以下几步是比较关键的在构建我们的系统之前:
*确定测试集/开发集,确定优化指标
*确立我们建立的模型算法
*确定分析的方法,误差分析的方法等
image.png
2.
*但当我们有可以借鉴的学术文献的时候,我们可以先研究一下。
image.png

2.4 训练和测试的不同分布

1.
*测试/开发集的数据分布必须一样,但训练和测试/开发集的数据分布可以不一样
image.png
2.
image.png

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

1.
*有时我们的训练集和开发/测试集之间的数据可能来自不同的分布,这导致在我们分析训练集和开发之间的误差的时候,难以确定这误差来自方差(过拟合)或由于数据分布不匹配问题导致的误差。
*为了解决这一问题,我们可以引入train-dev集在原训练集的数据上分出一小块,train-deverror和trainerror之间的误差用于检测我们是否存在方差问题。
*在检测train-deverror和trainerror之间的误差的基础上,我们检测train-deverror和deverror之间的误差,这用于判断我们的数据是否存在不匹配的问题。
image.png
2.
image.png
3.
image.png

2.6 解决数据不匹配的问题

1.
*解决数据不匹配问题,可以首先进行误差分析,分析我们的训练数据和dev数据之间的差别,判断是哪里的误差;其次,可以使我们的训练数据近似于我们的dev数据,或者采集更多相似dev的数据作为训练数据。
*需要注意的是,我们需要解决的是训练数据和dev数据之间的匹配问题,从而防止对test数据造成影响。
image.png
2.
*比如我们发现我们训练数据和开发数据之间的差距是噪音,那么可以人工合成,在训练数据中添加噪音。
*但如果只针对这一种噪音进行合成,那么可能会造成对这一噪音的过拟合,即噪音可能有很多种,而我们一直只让机器学习这一小小的噪音子集。
image.png
3.
*同理视觉中也是这样,我们需要更多的汽车让人工智能学习,识别汽车,但如果我们只用20种汽车去人工生成新汽车,但其实现实中有n种,那么只用这些其实是不够的,这仅仅是显示的小小子集,会造成最终的过拟合。
image.png

2.7 迁移学习

1.
*迁移学习是指我们借用别的问题数据集(x,y)的训练好的模型和其参数权重,去除其最后一层和最后一层相关的参数权重,在其基础上,添加最后一层神经网络层(有时不止一层),初始化相关的权重,重新建立属于我们问题数据集(x',y')的模型。
*别的问题数据集(x,y)的训练好的模型和其参数权重,被称为预训练。
*去除预训练模型最后一层和最后一层相关的参数权重,在其基础上,添加最后一层神经网络层(有时不止一层),初始化相关的权重,重新建立属于我们问题数据集(x',y')的模型,被称为微调。
*迁移学习之所以能够起作用是因为低层级的神经网络识别相关的边缘、角、局部等,能帮助我们建立对于图片的基本构成/语音的基本构成的基本理解,从而更好应用于我们的模型学习。
*在我们的训练集样本较少的情况下,我们的微调训练可以是只训练新添加的最后一层的参数;但多的情况下,我们一般会对所有参数进行训练。
image.png
2.什么时候迁移学习有意义?
*二者属于相同的数据输入,如图像与图像,音频与音频。
image.png

2.8 多任务学习

1.
*由于低级层神经网络之间的数据可以共享,因此多任务学习使用一个神经网络同时可以达到使用四个独立的神经网络的效果。
*tips,如果我们的标注数据中某些值为?,我们在进行损失函数统计的时候只需要计算0/1的值。
image.png
2.什么时候多任务学习有意义?
*当多任务之间有底层相似性
*多任务样本数量类似
*神经网络足够大,才能使同时训练的性能超过单任务的
image.png

2.9 什么是端到端深度学习

1.
*复杂的深度学习,以语音识别为例子,我们往往需要首先提取特征,其次得到音节细节,渐渐组成单词,到识别句子,获得最终输出,中间经历很多步骤。
*端到端的深度学习就是我们只需要输入x,就能得到y,省去大量中间步骤,但它需要的数据往往很大。
image.png
2.
*但有时端到端的深度学习并不能很好解决问题,如人脸识别,如果输入时从远处走进的人(人可能会有不同的角度走进),输出是对应的人的身份,这往往很困难,需要大量数据。
*但如果分步解决,首先裁剪放大人脸,其次再进行对应,就能得到很好的效果。
*原因是对于分步解决,其第一步和第二步,我们都有丰富的输入输出数据对,从而可以很好学习。而端到端的深度学习,我们往往没有这么多数据,所以不能达到这样的效果。
image.png
3.
*但对于机器翻译问题,我们的数据足够丰富,可以实现端到端的深度学习,那么效果会更好。image.png

2.10 是否使用端到端的深度学习

1.
image.png
2.对于过于复杂的任务,其实有时候不适合使用端到端的深度学习
image.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值