卷积神经网络中隐藏层的辍学率指导

时间:2017-12-19 17:44:12

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

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

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

1 个答案:

答案 0 :(得分:6)

首先,请记住,辍学是一种对抗过度拟合并改善神经网络泛化的技巧。因此,良好的起点是专注于训练表现,并在您清楚地看到它后处理过度拟合。例如,在一些机器学习领域,例如强化学习,学习的主要问题可能是缺乏及时的奖励,而且状态空间是如此之大,以至于概括没有问题。

这里有一个非常接近的图片,说明在实践中过度拟合的样子:

overfitting-chart

顺便说一句,辍学并不是唯一的技术,最新的卷积神经网络往往倾向于批量和权重归一化到辍学。

无论如何,假设过度拟合确实是一个问题,你想要专门应用辍学。虽然建议dropout=0.5作为默认值是很常见的,但这个建议遵循Hinton的original Dropout paper的建议,当时的建议主要集中在完全连接或密集的层上。此外,建议隐含地假设研究进行超参数调整以找到最佳的丢失值。

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

  • CONV-1:filter=3x3size=320.0-0.1之间的退出
  • CONV-2:filter=3x3size=640.1-0.25之间的辍学
  • ...

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