machine-learning - 卷积神经网络中隐藏层的丢弃率指导

标签 machine-learning neural-network conv-neural-network convolution recurrent-neural-network

我目前正在构建一个卷积神经网络来玩 2048 游戏。它有卷积层和 6 个隐藏层。所有在线指南都提到辍学率约为 50%。我即将开始训练,但担心 6 层中每一层的 50% dropout 有点过大,会导致拟合不足。

我非常感谢对此的一些指导。你们建议什么作为辍学的起点?我也很想了解您为什么推荐您所做的事情。

最佳答案

首先,请记住,dropout 是一种对抗过度拟合并提高神经网络泛化能力的技术。因此,好的起点是关注训练性能,并在清楚地看到过度拟合后处理它。例如,在某些机器学习领域,例如强化学习,学习的主要问题可能是缺乏及时的奖励,并且状态空间太大,泛化不存在问题。

下面是过度拟合在实践中的大致情况:

overfitting-chart

顺便说一句,dropout 并不是唯一的技术,最新的卷积神经网络往往更喜欢批量和权重归一化而不是 dropout。

无论如何,假设过度拟合确实是一个问题,并且您想要专门应用 dropout。尽管通常建议将 dropout=0.5 作为默认值,但此建议遵循 original Dropout paper 中的建议。由 Hinton 等人提出,当时专注于全连接层或密集层。此外,该建议隐含地假设研究人员进行超参数调整以找到最佳的 dropout 值。

对于卷积层,我认为你是对的:dropout=0.5 似乎太严格了,研究也同意这一点。例如,参见 "Analysis on the Dropout Effect in Convolutional Neural Networks" Park 和 Kwak 的论文:他们发现较低级别的 dropout=0.1dropout=0.2 效果更好。在我自己的研究中,我对超参数调整进行贝叶斯优化(参见this question),它通常选择从网络的第一个卷积层开始逐渐增加丢弃概率。这是有道理的,因为过滤器的数量也增加了,共同适应的机会也增加了。因此,架构通常如下所示:

  • CONV-1:filter=3x3size=32,在 0.0-0.1 之间丢失
  • CONV-2:filter=3x3size=64,dropout 介于 0.1-0.25
  • ...

这对于分类任务确实表现良好,但是,它肯定不是通用架构,您绝对应该针对您的问题交叉验证和优化超参数。您可以通过简单的随机搜索或贝叶斯优化来做到这一点。如果您选择贝叶斯优化,则有很好的库,例如 this one .

关于machine-learning - 卷积神经网络中隐藏层的丢弃率指导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47892505/

相关文章:

python - 使用 Keras 预训练 CNN 微调。如何卡住批归一化?

python - 如何更改keras的plot_model中的dpi

r - H20 - R 中的堆叠回归中的错误消息

python - 如何根据句子相似度对句子进行聚类和绘图?

machine-learning - 神经网络(非线性)

python - 如何在keras中的某个时期后执行一些python代码

machine-learning - 为什么LeNet5使用32×32图像作为输入?

machine-learning - 预测缺少预测器的新实例

python - Keras 的 fit_generator 中是否使用了所有训练样本?

neural-network - 卷积神经网络中的 "Activations"、 "Activation Gradients"、 "Weights"和 "Weight Gradients"是什么?