用Keras进行深度学习模式的正则化方法:Dropout

Dropout是神经网络和深度学习模型的简单而有效的正则化技术。

在这篇文章中,你将发现Dropout正则化技术,以及如何使用Keras将其应用于Python中的模型。

看完这篇文章后,你会知道:

  • Dropout正则化的原理。
  • 如何在输入层上使用Dropout。
  • 如何在隐藏的层上使用Dropout。
  • 如何根据问题调整Dropout。

让我们开始吧。

用Keras进行深度学习模式的正则化方法:Dropout照片版权:Trekking Rinjani

神经网络的Dropout正则化

Dropout是由Srivastava等人在2014年的一篇论文中提出的一种针对神经网络模型的正则化方法“Dropout: A Simple Way to Prevent Neural Networks from Overfitting”(下载PDF)。

Dropout是在训练期间随机选择的一些神经元忽略的技术。他们随机“Dropout”。这意味着它们对下游神经元的激活的贡献暂时消除,并且在反向过程没有实施任何权重的更新。

随着神经网络学习,神经元的权重会与网络上下文适应。神经元的权重为特定的特性提供一些专门化的调整。相邻的神经元变得依赖于这种专业化,如果过度使用,会导致这种过度专业化的模型脆弱不堪,无法训练数据。神经元在训练过程中的这种依赖上下文的现象被称为复杂的协同适应(complex co-adaptations)。

你可以想象,如果神经元在训练期间被随机地从网络中舍弃,那么其他的神经元将不得不介入并处理对缺失的神经元做出预测所需要的表征。这被认为可以让网络学习到多个独立的内部表征。

它的效果是让网络对神经元的特定权重变得不那么敏感。让网络能够更好地泛化,并且很少过拟合训练数据。

Keras中的Dropout正则化

每轮权重更新,以给定的概率(例如20%)从随机选择的节点中舍弃,这个过程很容易实现。这就是在Keras中实现Dropout。Dropout仅在训练模型时使用,在评估模型的技能时不使用。

接下来我们将探讨在Keras中使用Dropout的几种不同方法。

这些例子将使用Sonar数据集。这是二分类问题,其目标是用声纳的回声正确识别岩石和矿。它是神经网络的一个很好的测试数据集,因为所有的输入值都是数字型,并且具有相同的量纲。

数据集可以从UCI Machine Learning库下载。你可以将声纳数据集放在当前的工作目录中,文件名为sonar.csv。

我们将使用scikit-learning的10次折交叉验证来评估开发的模型,以便更好地梳理结果的差异。

有60个输入值和一个输出值,输入值在网络使用前被归一化。基准神经网络模型有两个隐藏层,第一个为60个节点,第二个为30个。使用随机梯度下降以较低的学习率和动量对模型进行训练。

完整的基准模型如下所示。

原文:http://machinelearningmastery.com/dropout-regularization-deep-learning-models-keras/

发表评论