为什么我们应该在输入层使用(或不使用)dropout?

数据挖掘 机器学习 机器学习模型 辍学 深度学习
2021-10-10 05:03:58

人们通常避免在输入层本身使用 dropout。但是使用它不是更好吗?

添加 dropout(考虑到它是随机的,它可能最终会像另一个正则化器一样)应该使模型更加健壮。它将使其更独立于给定的一组特征,这总是很重要,并让神经网络也找到其他模式,然后模型可以更好地泛化,即使我们可能会丢失一些重要特征,但这是每个时期随机决定的。

这是一个错误的解释吗?我错过了什么?

这不就相当于我们一般的做法,一个个去掉特征,然后重建非NN的模型,看看它的重要性吗?

2个回答

为什么不呢,因为风险大于收益。

它可能在图像中起作用,其中像素/体素的损失可能会被其他层在某种程度上“重建”,像素/体素的损失在图像处理中也很常见。但是,如果您将它用于 NLP 或表格数据等其他问题,随机删除数据列不会提高性能,并且您将冒着随机丢失重要信息的风险。这就像开彩票扔掉数据并希望其他层可以重建数据。

在 NLP 的情况下,您可能会丢弃重要的关键词,或者在表格数据的情况下,您可能会丢弃无法复制的数据,例如基因组中的基因、表格中的数字或因子等。

我想如果您使用的是输入丢失隐藏层模型,正如您所描述的那样作为更大集成的一部分,我想这可能会起作用,以便该模型专注于数据的其他不太明显的特征。然而,理论上,这已经通过隐藏层后的 dropout 实现。

在输入上使用 dropout 并不少见。在原始论文中,作者通常使用 dropout,隐藏单元的保留率为 50%,(实值)输入的保留率为 80%。对于表示分类值(例如 one-hot 编码)的输入,简单的 dropout 过程可能不合适。

他们还认为,应用于线性回归输入的 dropout 会产生一个类似于 Ridge Regression 的模型,其中 dropout 率与正则化强度相关[dropout 在输入中增加可变性/噪声导致权重压缩]。

对于更深的网络,这不是很清楚。但是,一般来说,dropout 会给数据增加噪音,并且对于更大的数据集更有用。

类似于 dropout 的方法在其他算法中也很常见,比如随机森林,在这些算法中,并不是所有的特征都需要在每一步都使用相同的想法来考虑。

问题是当您已经为隐藏层使用 dropout 时,是否向输入层添加 dropout 会增加很多好处。根据我的经验,它不适用于大多数问题。对于某些问题,在网络的早期注入噪声更有意义,以避免从一开始就过度拟合,有时仅在已经构建了一些更复杂的特征之后才在后面的层。