Neural network 辍学能否提高培训数据的性能?

Neural network 辍学能否提高培训数据的性能?,neural-network,deep-learning,training-data,loss-function,dropout,Neural Network,Deep Learning,Training Data,Loss Function,Dropout,我正在训练一个辍学的神经网络。当我将辍学率从0.9减少到0.7时,训练数据的损失(交叉验证错误)也会减少。我还注意到,随着我减少辍学参数,精确度也会提高 我觉得很奇怪。有意义吗?Dropout的工作原理是概率地删除或“退出”层的输入,这些输入可能是数据样本中的输入变量,也可能是前一层的激活。它可以模拟大量具有完全不同的网络结构的网络,从而使网络中的节点通常对输入更加鲁棒 随着辍学(辍学率小于某个较小的值),准确率将逐渐增加,损失将首先逐渐减少(这就是您的情况)。 当您将“辍学”增加到某个阈值以上

我正在训练一个辍学的神经网络。当我将辍学率从0.9减少到0.7时,训练数据的损失(交叉验证错误)也会减少。我还注意到,随着我减少辍学参数,精确度也会提高


我觉得很奇怪。有意义吗?

Dropout的工作原理是概率地删除或“退出”层的输入,这些输入可能是数据样本中的输入变量,也可能是前一层的激活。它可以模拟大量具有完全不同的网络结构的网络,从而使网络中的节点通常对输入更加鲁棒

随着辍学(辍学率小于某个较小的值),准确率将逐渐增加,损失将首先逐渐减少(这就是您的情况)。 当您将“辍学”增加到某个阈值以上时,将导致模型无法正确拟合。直观地说,较高的辍学率会导致某些层次的差异较大,这也会降低培训质量

您应该始终记住的是,退出与所有其他形式的正则化一样,它会降低模型容量。如果你把容量减少得太多,肯定会得到不好的结果


希望这能对你有所帮助。

辍学是一种正规化技术。您应该只使用它来减少差异(验证性能与培训性能)。它不是为了减少偏差,您不应该以这种方式使用它这很容易误导。

你看到这种行为的原因可能是你使用了一个非常高的退出值。0.9意味着你中和了太多的神经元。这是有道理的,一旦你把0.7改为0.7,网络就有了更高的神经元,可以在训练集上学习。因此,对于较低的值,性能将提高

您通常会看到培训性能有所下降,同时提高验证集的性能(如果没有验证集,至少在测试集上)。这是使用dropout时所需的行为。当前的行为是因为如果dropout的值非常高

从0.2或0.3开始比较偏差与方差,以获得良好的辍学值

我的明确建议:不要用它来改善偏差,而是减少差异(验证集上的错误)。

为了更好地适应训练环境,我建议:

  • 找到一个更好的架构(或者改变每个架构的神经元数量) 层)
  • 尝试不同的优化器
  • 超参数调谐
  • 也许训练网络的时间再长一点

  • 希望这有帮助

    您是否在代码段中描述了培训数据性能的验证/测试性能:“辍学(辍学率小于某个小值)…能够正确匹配”?如果您正在撰写有关培训数据性能的文章,直觉上的原因是“直觉上,较高的辍学率会导致某些层的差异较大,这也会降低培训质量”;那么,你说的“某些层的方差更大”是什么意思?谢谢你的回答。我对辍学参数的理解很差。我是按相反的顺序处理的。和我想的不同,衰减参数高意味着中和了太多中子。抱歉弄错了。@Waliston没问题,伙计。是的。很高兴你能很好地理解这个概念。谢谢你的解释。我犯了一个错误:我记得当我试图学习Tensorflow时,退出参数高意味着中和太少的参数。所以,如果这对tensorflow是真的或不是真的,现在我可以理解发生了什么,正如你明确解释的,辍学高意味着太多的神经元被中和了。现在它有意义了。对不起,我弄错了。