吴恩达Coursera深度学习课程 deeplearning.ai (3-1) 机器学习(ML)策略(1)--课程笔记

相关课件:https://download.csdn.net/download/haoyutiangang/10496676

1.1 为什么是 ML 策略

实践中优化深度学习模型的方法有好多种,应该如何抉择?

image

1.2 正交化

正交化: 一个维度做且只做一件事,各个维度相互独立,不影响其他维度做的事情。

比如电视条件:有调节高度的按钮,宽度的按钮,旋转的按钮,
色彩的按钮,亮度的按钮,每个按钮负责一件事情,不会影响其他按钮调节的维度,使分析更为简单。

监督学习模型中:

  • 系统在训练集上表现的好
    • 否则,使用更大的神经网络、更好的优化算法
  • 系统在开发集上表现的好
    • 否则,使用正则化、更大的训练集
  • 系统在测试集上表现的好
    • 否则,使用更大的开发集
  • 在真实的系统环境中表现的好
    • 否则,修改开发测试集、修改代价函数

1.3 单一数字评估指标

如果用多个指标去评估各个系统的表现,很难抉择,因为各有利弊。

应该尝试去设置一个合理的单一实数评估指标,所有系统都通过这一个指标来评估好坏,问题就会简单的多,迭代速度也会加快。

例如:

  • 查准率(Precision):计算结果中 true 的个数除以计算结果的个数
  • 查全率(Recall): 计算结果中true的个数除以全集中真实true的个数

  • F1 Score:查准率和查全率的调和平均数

    F 1 _ s o r c e = 2 1 p r e c i s i o n + 1 r e c a l l

    选择单一的F1作为评估指标表现更好。

1.4 满足和优化指标

对于某一问题,如要求模型准确率尽可能的高,运行时间在100 ms以内。这里以Accuracy为优化指标,以Running time为满足指标,我们可以从中选出B是满足条件的最好的分类器。

一般的,如果要考虑N个指标,则选择一个指标为优化指标,其他N-1个指标都是满足指标:

N m e t r i c : { 1 O p t i m i z i n g m a t i r c N m e t i r c 1 S a t i s i f i c i n g m a t r i c

1.5 训练/开发/测试集划分

  • 所选择的开发集和测试集中的数据,要与未来想要或者能够得到的数据类似,即模型数据和未来数据要具有相似性
  • 在选择开发集和测试集时要使二者来自同一分布,且从所有数据中随机选取

1.6 开发集合测试集的大小

开发验证集dev 和 单一评估指标一起确定了模型的训练目标。

传统划分

  • 数据量小:100-10000
  • 70/30
  • 60/20/20

大数据划分:

  • 数据量大:>1000000
  • 98/1/1
  • 99/0.5/0.5

测试集: 评测性能指标:10000或100000 足够了
如果不需要评估性能指标,甚至可以没有测试集(不推荐)

在没有测试集时,只有train/dev 但是人们习惯说成train/test, 我们应该知道这里的test其实指的是dev。

1.7 什么时候该改变开发/测试集和指标

  • 如果评估指标无法正确评估算法的排名(排名与真实场景不符),则需要重新定义一个新的评估指标。
  • 如果在训练开发测试的过程中得到的模型效果比较好,但是在实际应用中自己所真正关心的问题效果却不好的时候(数据与真实场景不符),就需要改变开发、测试集或者评估指标。

上面七个小节讲的是单一实数评估指标和模型优化,这两个正像是两个正交化的维度,互相独立。

1.8 为什么是人的表现

我们习惯于将机器学习的表现与人类的表现作比较。

通常我们发现,机器学习的效果在初始训练时提升很快,但是一旦超过了人类的效果,则上升变得缓慢,最终达到理论最优(不是实际最优),这个理论最优的误差称为贝叶斯误差。

造成这种现象的原因可能有以下几种:当比人类表现差时

  • 让人们帮忙标记数据
  • 错误分析,比人差到哪里了
  • 分析偏差和方差

1.9 可避免偏差

一般我们不用贝叶斯误差去衡量偏差,而是用人类的表现去衡量。

  • 偏差:训练集的错误
  • 可避免偏差:训练集的错误与人类的错误的差
  • 方差: 开发验证集的错误与训练集错误的差

比较可避免偏差和方差,看改进哪个对模型进步更有意义。

1.10 理解人的表现

普通人和领域专家以及领域专家组对于一个问题的表现不同,如何定义人类的标准?一般看你的目的是什么,如果想做到最好,那就用领域专家组的标准,如果只是为了发表论文或部署上线,使用专家的标准即可,主要看你的目的是什么。

  • 对人类水平误差有一个大概的估计,可以让我们去估计贝叶斯误差,这样可以让我们更快的做出决定:减少偏差还是减少方差。
  • 而这个决策技巧通常都很有效果,直到系统的性能开始超越人类,那么我们对贝叶斯误差的估计就不再准确了,再从减少偏差和减少方差方面提升系统性能就会比较困难了。

1.11 超过人的表现

在架构化数据的模型中,机器学习系统的表现很容易超过人类

  • 点击率预估
  • 推荐算法
  • 物流预测
  • 银行贷款审批

在自然感知的模型中,人类比较擅长,机器学习想要超过人类就比较困难,不过也有一些机器学习系统的表现已经超过了人类。

1.12 改善你的模型的表现

基本假设

  • 模型在训练集上有很好的表现
  • 模型推广到开发和测试集啥会给你也有很好的表现

减少可避免偏差

  • 训练更大的模型
  • 训练更长时间、训练更好的优化算法(Momentum、RMSprop、Adam)
  • 寻找更好的网络架构(RNN、CNN)、寻找更好的超参数

减少方差

  • 收集更多的数据
  • 正则化(L2、dropout、数据增强)
  • 寻找更好的网络架构(RNN、CNN)、寻找更好的超参数

猜你喜欢

转载自blog.csdn.net/haoyutiangang/article/details/80794496