Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization总结

来源:互联网 发布:安全风险评估矩阵 编辑:程序博客网 时间:2024/06/05 02:47

这门课主要讲解了神经网络中常用的一些调试、优化方法


训练集、开发集、测试集

训练集用来训练网络参数

开发集用来调整网络各个超参数

测试集用来评估网络性能

各部分比例分配如下:

数据量

训练集

开发集

测试集

1,000-10,000

60%

20%

20%

70%

30%

1,000,000

98%

1%

1%

>1,000,000

99.5%

0.25%

0.25%

0.4%

0.1%

 

模型偏差、方差

 

偏差

方差

解释

模型预测能力不足(前拟合),表现为训练误差较大

模型泛化能力不足(过拟合),表现为测试误差较大

解决方法

1.  更深、更宽的网络

2.  训练更长时间

3.  更好的优化方法

4.  更优的网络结构

1.  更多的数据

2.  正则化

3.  更优的网络结构


(减小偏差:5.更优的超参数)


正则化

L0正则化:L0范数指向量中非0元素的个数,可以让权重矩阵W更稀疏,但是因为难于优化,一般用L1替代

L1正则化:L1范数指向量中各元素绝对值的和。

L2正则化:L2范数指向量中各元素平方和的二次方根,让权重更加平滑。

L2正则化每次更新时,w都变得更小,所以L2正则化也叫做权重衰减

Dropout正则化:一定要在激活后除以keep-prob,确保该层的期望不变。测试阶段不可用


减小方差的其他方法:

data augmentation:对于图像有 翻转、裁剪、扭曲、旋转等操作

early stopping:在验证误差开始上升时,停止训练


梯度消失和梯度爆炸

网络过深时产生的现象

解决方法:

1.权重初始化时,让权重满足方差为(relu)或(Xavier, tanh)或的高斯分布,其中表示第l层的输入数据的维度

2.用relu替代sigmoid和tanh

3.clip gradients

4.类似resnet中的shortcut connection


加速训练的方法

1.对输入数据进行归一化处理,即减去平均值,除以方差

2.mini-batch梯度下降(一般取64,128,256,512,1024)和随机梯度下降

3.Momentum梯度下降:使得系统有机会跨过局部最优点

此公式为指数加权平均,偏差修正为

4.Adagrad:由于一直累加梯度的平方,每个元素的学习率一直在降低或不变。

5.RMSprop:使用指数加权平均对Adagrad进行了改进,学习率可以根据情况而不同

6.Adadelta:没有学习率参数

7.Adam:组合了Momentum和RMSprop

        一般的,超参数取值为

8.学习率下降

  指数衰减

or   

离散的学习率下降,如epoch大于某个值时,学习率为多少


超参数调试

优先级:


,hidden units,mini-batch

layers,learning rate decay


搜索超参数时,随机取值,不要使用网格似的取值方法。注意线性取值和对数线性取值。根据训练速度,选择是小心维护一次训练,还是开启多个训练


Batch normalization

一般在激活函数之前进行batch normalization

注意,一个batch normalization有2个参数需要学习4个参数需要保存



上一篇:Neural Networks and Deep Learning总结

下一篇:Structuring Machine Learning Projects总结

阅读全文
0 0
原创粉丝点击