21个深度学习应用的实际技巧

本文的深度学习技巧来自吴恩达课程的笔记。运用深度学习解决问题除了需要掌握深度学习的理论知识外,还需要明白其中大量的技巧。这些技巧可以帮助我们加快训练速度,选取更好的算法和更合适的参数。我们将在后面逐步更新这里面的内容。

1、传统划分数据集可能是70/20/10,大数据时代,例如你有100,0000个训练集,你可以用其中的10000个作为测试集,10000个作为验证集,类似98/1/1。

2、训练集和测试集不匹配,至少保证测试集和验证集要来自于同一个分布。

3、没有验证集也是可以的。

4、很少说bias和variance之间的tradeoff

5、训练集错误可以使用更大的网络更长的训练解决,测试集错误使用更多的数据进行训练或者正则化

6、正则化的时候通常都是加关于权重的正则项,不加关于偏移的正则项,是因为通常权重系数很多且是高维的,b很少,加关于b的没什么卵用。

7、dropout regularization是随机剔除某些变量进行训练,通常是模型过拟合的时候用,如果没有过拟合不要用

8、dropout regularization可以对中间的网络的输入随机剔除,因此可以防止中间某些层的过拟合。但某些层的神经元很多(权重矩阵很大)的时候,可以使用较高概率的dropout regularization。一般输入层不会设置很低的dropout概率

9、dropout在测试集的时候不要使用

10、dropout regularization的缺点是损失函数J不好定义

11、除了前面的正则化方法,还可以使用数据增强(翻转、扭曲)、early stopping方法来防止过拟合

12、early stopping也是一种避免过拟合的正则化方法,它有一个缺点。因为optimizing cost function和not overfitting是两个不同的任务,但是early stopping是将他们绑定到一起了。

13、early stopping的优点是不需要尝试大量的参数来优化损失函数

14、将输入数据正规化可以大大加快神经网络的训练速度

15、正规化使用的均值和方差在训练集和测试集中要一样

16、正规化起作用的原因是把原来那种不规则的损失函数变成了一个均匀对称的损失函数形式,能加快速度

17、防止梯度爆炸或者梯度消失的一个解决方案是谨慎选择权重的初始值。一般将权重的方差设置成输入神经元数量的倒数,即

Var(W​l​​) =​ 1 / ( n​l − 1 )​​

注意如果是ReLu激活函数的话,把分子设置成2效果更好,即​​。把权重设置成均值为0,方差为1的正态分布的样本也可以,它是的权重在1附近,不会很快出现梯度消失或者梯度爆炸。

另一个方法是把激活函数设置成TanH。但是一般有替换版本效果更好,如下(第一个叫Xavier初始化,第二个是Yoshua Bengio等人提出的):


18、运用机器学习算法处理问题是一项非常有经验性的工作。因此,想办法加快训练速度可以帮助我们更快的找到对的模型和合适的参数。

19、如果训练集数量小于2000的话,推荐直接使用Batch Gradient Descent训练。

20、如果训练集数量大约2000,mini batch的数量推荐使用2的次方。如64、128、256等。由于计算机内存的布局和访问方式,采用这种大小可能在某些时候能加快训练速度。但是要注意每个mini batch需要符合单台计算机CPU/GPU内存的处理情况。

21、minibatch的大小也是一个超参数,在实际中也需要去考虑。

本文转自:数据学习者官方网站,作者:小木,转载此文目的在于传递更多信息,版权归原作者所有。
原文链接:https://www.datalearner.com/blog/1051536672828590

最新文章