内容纲要

欢迎转载,作者:Ling,注明出处:深度学习:原理简明教程11-深度学习:基础加强

 

本文主要对深度学习基础的其他一些内容进行补充:

  • 参数与超参:Parameters vs Hyper parameters
  • 训练集/验证集/测试集: Train/Dev(Validation)/Test、Distributions(diff)、size、mismatch distributions and addressing
  • 偏差和方差(underfit/overfit):Bias/Variance、human level performance、Avoidable bias
  • Orthogonalization and Single number evaluation metric
  • 进行 error analysis和cleaning up incorrectly labeled data
  • 深度学习第一原则
  • 梯度消失与梯度爆炸:Vanishing/Exploding gradients
  • 正则化:Regularization,L1、L2、Dropout,Data augmentation,Early Stopping
  • 归一化Normalizing:Normalizing Input、Normalizing Activations(Batch Norm)

参数与超参:Parameters vs Hyper parameters

什么是参数?

网络的实际参数。

dl_11_001

什么是超参?

除网络实际参数以外的参数。

学习率:α

迭代次数:epoch

隐含层数:L

每个隐含层节点数:n[1] …

激活函数及其参数

优化器及其参数

评估函数及其参数

损失函数及其参数

正规化

 

训练集/验证集/测试集: Train/Dev(Validation)/Test、Distributions(diff)、size

机器学习实验标准分法

训练集Train:用于训练模型

开发集Dev:也叫Validation集,验证集,用于验证模型好坏

测试集Test:用于最终测试模型好坏

注意

1)有时候可以将Dev和Test集合并。

2)当样本较少的时候可以采用S-Folder方式进行学习

3)浅层机器学习,数据量不大的情况下,样本分割比例常常为:60%、20%、20%。在深度学习,数据量比较大的情况下,样本分割比例常常为:98%、1%、1%

4)样本无论是训练还是验证测试,尽量不同类别分布一致。

举例说明

猫分类问题:

美国

英国

中国

印度

我们尽量让训练和验证测试都有来自每个区域的样本,否则可能不同区域差别大。

5)如果没法一致,至少验证和测试要符合你最终预期的分布。

实例一

网络获得:20w只清晰猫的图片

做的App获得:1w张模糊猫图片

如何分配训练和验证集?

不好的做法

1w模糊+19.5w清晰作为训练,5000清晰作为验证

好的做法

20w清晰+5000模糊作为训练,5000模糊作为验证

因为能识别模糊的才是你最终目标

次好做法

19.75w清晰+0.75模糊作为训练,0.25模糊+0.25清晰作为验证

实例二

语音系统

收集的语音都是没有杂音

实际使用过程都有杂音

可以给收集的语音人工加入杂音,确保训练样本和实际中一致

 

偏差和方差(underfit/overfit):Bias/Variance、human level performance、Avoidable bias

偏差Bias:模型在训练集表现不佳,也叫underfitting,欠拟合

方差Variance:模型在训练集表现过好,但是可能在验证集表现不好,也要overfitting,过拟合

实例一

dl_11_002

实例二:

dl_11_003

什么情况下会同时出现High bias and High Variance?

dl_11_004

把一个x包含进来,而忽略了一个圈。

一般做法:

dl_11_005

人类级别的Performance:即人类可以达到的水平

贝叶斯最优:实际上能达到的最优水平

dl_11_006

如果超过人类就可以称为达到类人水平。

dl_11_007

Bias和Variance前面已经介绍了。

Avoidable bias:是实际可以根据人类水平进行缩小,甚至取消的bias,从而达到类人水平。

通过比较Human-level,Training Error和Dev Error,决定应该如何进行改进

dl_11_008

 

Orthogonalization and Single number evaluation metric:正交化原则和单一值原则

一次只改进一个值,且改进的值之间是正交的,不是可组合的。

例如,有accuracy又有recall,这有两个值,我们可以用F值替代,这样用一个值衡量是最好的,我们只用调这一个值,否则accuracy和recall不正交,提高一个可能降低另外一个。这个和调电视机效果类似,一次调一个效果,效果之间是正交的。

 

进行 error analysis和修正 incorrectly labeled data:

dl_11_009

列一张表,看每种错误出现的百分比,可以预计修复后能够达到的效果,然后再决定应该如何修复。

如果修复一个错误很麻烦,但是带来效果提升很少,就不值得修复。

 

深度学习第一原则:

首先end to end通,可以进行试验,然后再优化。

 

梯度消失与梯度爆炸:Vanishing/Exploding gradients

dl_11_010

如果w由非1构成,由于多个w相乘,容易使得结果指数增加,或者指数递减,从而引发梯度爆炸或者梯度消失。

 

正则化:Regularization

作用:让模型简单,从而防止过拟合。

种类

dl_11_011

我们首先看看机器学习逻辑回归如何防止过拟合:其中λ主要用于调节L1和L2力度

dl_11_012

加入L2之后会让一些w变小,极端情况是变成0,这样就使得模型变简单了。过拟合实际上是因为模型太复杂,所以在训练集上效果好,在测试集上效果差。模型变简单了就可以防止过拟合。

下面我们看看在深度学习的神经网络上,如何通过加入L2防止过拟合

dl_11_013

从公式中可以看出L2会让一些w变小,极端情况下让某些w消失,让模型更加简单,所以防止了过拟合。

Dropout:

实际上也是让神经网络隐含层按一定概率去掉一些节点,让模型简单来防止过拟合。

注意只用于训练过程,使用或者测试过程不要dropout,否则结果不可预测,另外因为dropout已经让一些权值变小,实际上已经会影响测试过程了。

Data augmentation:

在已有的样本上,通过一定技术,增加样本数量。

例如图形中,可以通过翻转,变形获得更多样本。

dl_11_014

Early Stopping:

训练过程,可能已经达到最优,再训练可能跳过最优,所以可以在训练过程不断监控,一旦达到一定条件就停止,当然条件设置不当可能没有达到最优就停止了。

dl_11_015

 

归一化Normalizing:Normalizing Input、Normalizing Activations(Batch Norm)

为什么要归一化?

例子

x1取值0-1

x2取值0-200

这样会导致梯度下降慢。

dl_11_016

如何归一化?

dl_11_017

归一化对象:

输入的x:Normalizing Input

隐含层的z:Normalizing Activations(Batch Norm)

输入的x:Normalizing Input

用上面公式

隐含层的z:Normalizing Activations(Batch Norm)

用下面公式:

dl_11_018

注意:测试集一定要用一样期望和方差