Training Neural Networks, part II

part II :

- Fancier optimization

- Regularization

- Transfer Learning

  •  Optimization

Problems with SGD

1.

 当我们在水平方向变化时,损失函数的变化非常慢

而在竖直方向(等高线方向)变化时,损失值变化很快

在这样函数上,SGD:

         Very slow progress along shallow dimension, jitter along steep direction

2. 局部极小值(local minima),鞍点(saddle points)

local minima:

Zero gradient, gradient descent gets stuck

saddle points:

Saddle points much more common in high dimension

解决方法:

SGD + Momentum

Nesterov Momentum 

用换元法改进一下,以便于求loss,gradient

AdaGrad

 

当沿一个轴有很小的梯度时,在更新参数时除以累加梯度平方,得到一个比较大的值,从而加快学习速度

当沿一个轴有很大的梯度时,在更新参数时除以累加梯度平方,得到一个比较小的值,从而减慢学习速度

随着时间的增加,步长会越来越小,这一特点在凸函数中表现很好,但在非凸函数时会有问题 ---> RMSProp

RMSProp

Adam(almost)

在第一次循环的时候,second_moment 可能接近0,会导致步长非常大。---->

Adam (full form)

  

About learning rate

通常首先选择一个不带衰减的,不错的学习率,查看结果如何,仔细观察损失曲线,决定在哪个地方开始衰减

二次逼近

模型集成

用于减小训练和测试之间的误差差距

  • Regularization

提升单一模型的表现,防止过拟合

1.

2. dropout 

 

若是在意 test 的效率,也可以:

3. Batch Normalization

加入一些随机性的元素:

4. Data Augmentation

可以做水平翻转

可以抽取不同尺度大小的裁剪图像,在测试时,评估一些固定的裁剪图像

可以做色彩抖动:

还可以:

5. DropConnect

6. Fractional Max Pooling

7.  Stochastic Depth

  • Transfer Learning

在小样本中更好的训练,防止过拟合

冻结前部分,调整后部分

 

数据集很小时:

1.找到一个有类似数据的非常大的数据集,在那里训练一个大的convnet

2.在你的数据集做迁移学习

Caffe: https://github.com/BVLC/caffe/wiki/Model-Zoo

TensorFlow: https://github.com/tensorflow/models

PyTorch: https://github.com/pytorch/vision

  • Summary

发布了55 篇原创文章 · 获赞 22 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/li_k_y/article/details/86701257