深度学习实战演练深度学习

第五章(1.7)深度学习——常用的八种神经网络性能调优方案

2019-01-13  本文已影响4人  _两只橙_

一、神经网络性能调优主要方法

1. 数据增广

在不改变图像类别的情况下,增加数据量,能提高模型的泛化能力。
自然图像的数据增广方式包括很多,如常用的水平翻转(horizontally flipping),一定程度的位移或者裁剪和颜色抖动(color jittering)。此外还可以尝试多种操作的组合, 例如同时做旋转和随机尺度变换,此外还可以把每个patch中所有像素在HSV颜色空间中的饱和度和明度提升0.25-4次幂方,乘以0.7-1.4之间的一个因子,再加一个-0.1-0.1之间的值。同样你可以在色调通道(H)对每张图片或patch的所有像素增加一个-0.1~0.1之间的值。

2.预处理

2.1 最简单的预处理方法

2.1.1 为什么要零均值化

2.1.2 为什么要归一化

2.1.3 python实现代码

X-=numpy.mean(X,axis=0) # 即X的每一列都减去该列的均值

X/=numpy.std(X,axis=0) # 数据归一化

2.2 白化(Whitening)

3. 初始化

3.1 不要将参数全部初始化为零

3.2 用小的随机数初始化

3.3 方差归一化

4. 训练过程中

4.1 卷积滤波器和池化层大小

4.2 学习率

4.3 在预训练的模型上微调

image

5. 激活函数

激活函数用于在网络中引入非线性。sigmoidtanh 曾经很流行,但现在很少用于视觉模型了,主要原因在于当输入的绝对值较大时,其梯度(导数)接近于零,这时参数几乎不再更新,梯度的反向传播过程将被中断,出现梯度消散的现象。

激活函数示意图


image

Sigmoid 激活函数


image

tanh 激活函数


image

ReLU 激活函数


image

ReLU 优点:

ReLU缺点:

为了解决ReLU在负区间的导数为零的问题,人们发明了Leaky ReLU, Parametric ReLU, Randomized ReLU等变体,他们的中心思想都是为ReLU 函数在负区间赋予一定的斜率,从而让其导数不为零(这里设斜率为 alpha)。

Leaky ReLU 就是直接给alpha 指定一个固定的值,整个模型都用这个斜率

Parametric ReLUalpha作为一个参数,通过从数据中学习获取它的最优值。

Randomized ReLUalpha 是在规定的区间内随机选取的,在测试阶段是定值。

有学者将当前最优的两类CNN网络结合不同的激活函数在CIFAR-10,CIFAR-100NDSB数据集上做实验,评价四种激活函数的优劣。

实验结果表明Leaky ReLU取较大的alpha准确率更好。Parametric ReLU很容易在小数据集上过拟合(训练集上错误率最低,测试集上不理想),但依然比ReLU好。RReLU效果较好,实验表明它可以克服模型过拟合,这可能由于alpha选择的随机性。在实践中, Parametric ReLURandomized ReLU都是可取的。

6. 正则化(Regularizations)

以下是几种常用的方通过控制模型的容量来阻止神经网络的过拟合(Overfitting)。

6.1 L1正则化

6.2 L2正则化

6.3 最大范数约束

6.4 Dropout

最流行使用的正则化技术Dropout

image

7. 从数字中观察

image

7.1 从学习率观察

7.2 放大loss曲线观察

7.3 从精确率曲线观察

8. 集成

在机器学习中,在训练多个学习器并将它们进行组合来使用是一种前沿的学习方法。众所周知,集成方法通常在得到更高的精确性的时候相比于单个学习器是至关重要的。并且,集成方法已经在现实任务中取得了伟大的成功。在实际应用中,尤其是挑战和竞赛中,几乎所有的第一和第二名获胜者都使用集成。

深度学习场景中的集成技巧:

关注我的技术公众号,每天推送优质文章
关注我的音乐公众号,工作之余放松自己
微信扫一扫下方二维码即可关注:


音乐公众号
技术公众号
上一篇 下一篇

猜你喜欢

热点阅读