在这篇文章中,我将次要探讨神经网络中 dropout 的概念,特地是深度网络,而后进行试验,通过在规范数据集上施行深度网络并查看 dropout 的影响,看看它在实践中理论影响如何。
1. Dropout 是什么?
术语“dropout”是指在神经网络中抛弃单元(包含暗藏的和可见的)。
简略来说,dropout 是指随机抉择的某组神经元在训练阶段疏忽单元(即神经元)。“疏忽”是指在特定的前向或后向传递过程中不思考这些单元。
具体的就是,在每个训练阶段,单个节点要么以 1-p 的概率退出网络,要么以 p 的概率保留,这样就剩下一个放大的网络;也删除了到抛弃节点的传入和传出边。
2. 为什么须要 Dropout?
鉴于咱们对 dropout 有所理解,一个问题呈现了——为什么咱们须要 dropout?为什么咱们须要敞开神经网络的某些局部?
这些问题的答案是“避免过拟合”。
全连贯层占据了大部分参数,因而,神经元在训练过程中相互依赖,这克制了每个神经元的个体能力,导致训练数据过拟合。
3. 从新扫视 Dropout
当初咱们对 dropout 和动机有了一些理解,让咱们来具体理解一下。如果你只是想理解神经网络中的 dropout,那么以上两节就足够了。在本节中,我将波及更多技术细节。
在机器学习中,正则化是避免适度拟合的办法。正则化通过向损失函数增加惩办来缩小适度拟合。通过增加这个惩办,模型被训练成不学习相互依赖的特色权重集。理解逻辑回归的人可能相熟 L1(拉普拉斯)和 L2(高斯)惩办。
Dropout 是一种神经网络正则化办法,有助于缩小神经元之间的相互依赖学习。
4. 训练阶段
训练阶段:对于每个暗藏层,对于每个训练样本,对于每次迭代,疏忽(清零)节点(和相应的激活)的随机分数 p。
5. 测试阶段
应用所有激活,但将它们缩小一个因子 p(以解决训练期间失落的激活)。
6. 作用
- Dropout 迫使神经网络学习更弱小的特色,这些特色与其余神经元的许多不同随机子集联合应用时很有用。
- Dropout 使收敛所需的迭代次数加倍。然而,每个期间的训练工夫较少。
- 有 H 个暗藏单元,每个暗藏单元都能够被抛弃,咱们有 2^H 个可能的模型。在测试阶段,思考整个网络,每次激活都缩小一个因子 p。
7. 实际效果
让咱们在实践中试试这个实践。为了理解 dropout 的工作原理,我在 Keras 中构建了一个深层网络,并尝试在 CIFAR-10 数据集上对其进行验证。构建的深度网络具备三个大小为 64、128 和 256 的卷积层,而后是两个大小为 512 的密集连贯层和一个大小为 10 的输入层密集层(CIFAR-10 数据集中的类数)。
我将 ReLU 作为暗藏层的激活函数,将 sigmoid 作为输入层的激活函数(这些是规范,并没有在扭转这些方面做太多试验)。另外,我应用了规范的分类穿插熵损失。
最初,我在所有层中应用了 dropout,并将 dropout 的比例从 0.0(基本没有 dropout)减少到 0.9,步长为 0.1,并将每个层运行到 20 个 epoch。后果如下所示:
从上图中咱们能够得出结论,随着 dropout 的减少,在趋势开始降落之前,验证准确率有所提高,损失最后有所降落。
如果 dropout fraction 为 0.2,趋势降落可能有两个起因:
- 0.2 是此数据集、网络和应用的设置参数的理论最小值
- 须要更多的期间来训练网络。
本文由 mdnice 多平台公布