课程回顾-Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization

训练、验证、测试

划分的量

  • If size of the dataset is 100 to 1000000 ==> 60/20/20
  • If size of the dataset is 1000000 to INF ==> 98/1/1 or 99.5/0.25/0.25

要保证数据来自一个分布

误差方差分析

若是存在high bias

  • 尝试用更大的网络
  • 尝试换一个网络模型
  • 跑更长的时间
  • 换不一样的优化算法

若是存在high variance

  • 收集更多的数据
  • 尝试正则化方法
  • 尝试一个不一样的模型

通常来讲更大的网络更好git

正则化

正则化减小过拟合的intuition

太大会致使其为0github

Dropout

  • 原始的dropout
  • Inverted Dropout
    咱们稍微将 Dropout 方法改进一下,使得咱们只须要在训练阶段缩放激活函数的输出值,而不用在测试阶段改变什么。这个改进的 Dropout 方法就被称之为 Inverted Dropout 。比例因子将修改成是保留几率的倒数,即

dropout分析

  • 由于咱们不可以过度依赖一个特征,dropout能够必定程度将权重分出去
  • 咱们能够在不一样的层设置不一样的dropout
  • 输入层的dropout应该接近1,由于咱们须要从中学习信息
  • CNN中dropout普遍应用
  • dropout带来的问题是调试困难,一般咱们须要关掉dropout调试,确认无误再继续用dropout

其它正则化方法

数据增长(data augmentation)

就是经过一些变换获得新的图片(这种实际上是在图像领域最为普遍应用,可是思想能够推广)算法

early stopping

就是在迭代中选择验证错误再也不下降的点

好处是不用调超参,坏处是it makes us think about something else more than optimize W's and b's.网络

ensemble

训练多个模型,组合
能够带来2%左右的提高,减小泛化偏差dom

归一化输入

归一化能够加速训练

归一化的步骤

  • 计算均值
  • 全部数据减去均值
  • 计算方差
  • x/=variance

归一化应该应用于:训练、验证、测试

梯度消失/爆炸

这是训练深度学习难的一个点svg

权重初始化

是解决梯度消失/爆炸的一个部分的解决方案
对于sigmoid和tanh函数

np.random.rand(shape)*np.sqrt(1/n[l-1])

对于relu学习

np.random.rand(shape)*np.sqrt(2/n[l-1]) #n[l-1] In the multiple layers.

一个方差是 1 / N x ,另外一个是 2 / N x 测试

经过数值近似计算梯度

  • 注意添加正则项的损失函数

优化算法

mini-batch

  • 为了利用向量化,batch大小应该是2的指数
  • 注意CPU/GPU内存大小

momentum

计算权重的指数加权平均
优化

RMSprop

Root mean square prop

使用这个算法能够选择较大的学习率

Adam

Adaptive Momentum Estimation。其实就是把rmsprop和momentem放一块儿了,另加了一个纠正

{ v d W [ l ] = β 1 v d W [ l ] + ( 1 β 1 ) J W [ l ] v d W [ l ] c o r r e c t e d = v d W [ l ] 1 ( β 1 ) t s d W [ l ] = β 2 s d W [ l ] + ( 1 β 2 ) ( J W [ l ] ) 2 s d W [ l ] c o r r e c t e d = s d W [ l ] 1 ( β 1 ) t W [ l ] = W [ l ] α v d W [ l ] c o r r e c t e d s d W [ l ] c o r r e c t e d + ε

其中推荐 β 1 = 0.9 , β 2 = 0.999 , ϵ = 10 8

深度神经网络中的主要问题不是局部最小点,由于在高维空间中出现局部最优的可能性很小,可是很容易出现鞍点,鞍点会致使训练很慢,因此上面的几个方法会颇有用

调参

顺序

Learning rate.
Mini-batch size.
No. of hidden units.
Momentum beta.
No. of layers.
Use learning rate decay?
Adam beta1 & beta2
regularization lambda
Activation functions

批规范化Batch Normalization

能够加速训练
和前面的对于输入数据的处理不同,这里考虑的是对于隐层,咱们可否对A[l]进行操做,使得训练加快。

这里 γ β 是参数


解决了梯度弥散的问题
批规范化其实作了一点正则化的工做,若是你但愿减弱这种效果能够增大批大小。
测试用须要估计均值和方差

Reference

https://github.com/mbadry1/DeepLearning.ai-Summary



相关文章
相关标签/搜索