首页 文章

卷积神经网络 - 辍学杀死性能

提问于
浏览
0

我和'm building a convolutional neural network using Tensorflow (I'两个都是新的),以便识别字母 . 我把它(即keep_proba保持在1),它表现得相当好并且学习(参见Tensorboard下面的准确度和丢失截图,蓝色训练和橙色测试) .
Tensorboard - loss and accuracy without dropout

然而,当我在训练阶段(我尝试在0.8和0.5)时放入辍学层时,网络什么都没学到:损失在3或4左右快速下降并且不再移动(我也注意到我的网络始终预测相同值,无论输入图像如何) . 相同的图表:
Tensorboard - loss and accuracy with dropout

造成这种奇怪行为的原因是什么?我已经读过辍学是一件好事,可以避免过度拟合 . 我用错了吗?

如果有用,这是我的网络架构: CONVOLUTION -> MAX_POOL -> RELU -> CONVOLUTION -> MAX_POOL -> RELU -> FC 1024 neurons -> DROPOUT -> OUTPUT LAYER .

非常感谢任何帮助或想法 .

1 回答

  • 1

    Dropout是一种正则化技术,通过基于丢失率在列车时间概率性地移除神经元,使网络更加稳健地拟合数据 . 它可以成为减轻神经网络中数据过度拟合的强大工具 .

    对于“使用多少”的丢失正则化,确实没有严格的规则 . 使用正确的训练数据,您可能根本不需要任何辍学,而在其他情况下,其缺席将导致严重的过度拟合病理 . 在您的情况下,似乎50%或80%的辍学率可能过高(过度正规化通常会导致不合适) .

    过度拟合病理学的典型指标是列车和测试装置之间的差异(通常,两者都会改善一段时间,但是随着测试误差开始向相反方向发展,训练误差将继续下降) . 虽然您的训练误差明显小于您的测试误差,但测试误差在训练期间不会恶化(这将是过度拟合的明确指示) . 可能仍有一些机会来换取一些训练误差,以获得更好的样本外预测误差(这通常是最终目标),并且具有适度的丢失量 . 知道这一点的唯一方法是以更适度的辍学率进行测试(我看到两者的退化(这在第二组图中非常明显) .

    正如其他人所指出的,您可能会发现丢失正则化在卷积层中更有效(或者不是,如果不尝试它就很难说) . 模型结构的空间和所有超参数设置都太大了,无法有效地进行搜索,并且理论方法并没有太多指导我们的选择 . 一般来说,最好从已证明可以有效处理类似问题的食谱(基于已发布的结果)开始,并从那里进行测试和实验 .

    能够有效地使用神经网络与学习从列车测试指标中识别这些动态有很大关系,这将使您能够根据模型结构或超参数(包括辍学率)的变化来识别改进 .

相关问题