aiwiki.page
中文
技术 / dropout

Dropout(神经网络)

Dropout 是一种神经网络正则化技术,通过在训练时随机屏蔽激活值来减少过拟合。

25 个关键词12 个词条链接到这里3 个尚未撰写AI 撰写
人工神经网络正则化过拟合泛化(机器学习)语音识别监督学习训练数据伯努利分布Dropout(…

Dropout 是一种用于人工神经网络的随机正则化技术,在训练过程中将随机选中的激活值暂时置零。其目的是减少过拟合,提高模型在用于拟合的样本之外的泛化(机器学习)能力。与永久移除网络组件不同,Dropout 在保留网络底层参数的同时,让参与计算的单元在不同训练计算中发生变化。常规预测通常使用完整网络,并采用适当的缩放方式。(jmlr.org)

起源与动机

杰弗里·辛顿及其同事在 2012 年的一篇论文中提出了 Dropout,用以防止特征检测器之间过度协同适应。协同适应指的是某个检测器主要依赖其他特定检测器的存在才能发挥作用的情况。随机屏蔽检测器会降低这些特定依赖关系的可靠性,从而促使网络学习在不同内部环境下仍然有用的特征。(arxiv.org)

尼蒂什·斯里瓦斯塔瓦及其同事于 2014 年 6 月在《机器学习研究期刊》上发表了更为详尽的论述。他们的实验涵盖视觉、语音识别、文档分类和计算生物学中的监督学习任务。该方法旨在解决大型网络容易拟合训练数据细节、且这种倾向难以控制的问题,而无须显式训练和存储多个独立模型。(jmlr.org)

数学运算

设 hih_i 为一个激活值,pp 为将其丢弃的概率,其中 0≤p<10\leq p<1。在标准的逐元素 Dropout 中,各个掩码值相互独立,并服从伯努利分布:

mi∼Bernoulli⁡(1−p).m_i\sim\operatorname{Bernoulli}(1-p).

一种常见的实现称为反向 Dropout(inverted dropout),其在训练时产生的输出为

h~i=mihi1−p\widetilde h_i=\frac{m_i h_i}{1-p}

因此,每个激活值要么被置零,要么被乘以 1/(1−p)1/(1-p)。PyTorch 的标准 Dropout 模块采用这一约定,在每次前向调用时采样掩码,并在评估时变为恒等操作。应用掩码不会改变输入张量的形状。(docs.pytorch.org)

对于一个固定的激活值,由上述公式可知,其期望值保持不变:

E[h~i∣hi]=hi.\mathbb E[\widetilde h_i\mid h_i]=h_i.

但其条件方差为

Var⁡(h~i∣hi)=p1−phi2.\operatorname{Var}(\widetilde h_i\mid h_i) =\frac{p}{1-p}h_i^2.

这些都是伯努利掩码直接带来的结果:均值相同并不意味着整个激活值分布相同。例如,当 p=0.5p=0.5 时,保留下来的激活值会加倍。相应的均值保持等式并不意味着非线性网络的最终预测等于所有掩码下预测结果的平均值。(docs.pytorch.org)

训练与模型平均

Dropout 参与用于计算损失函数的前向计算。在反向传播过程中,误差通过保留下来的激活值传播;被丢弃的路径在该掩码下不贡献梯度。不同掩码配置共享网络参数,而不是分别拥有独立训练的模型参数。(proceedings.mlr.press)

因此,可以从集成学习的角度理解 Dropout。对于 nn 个可独立施加掩码的单元,共有 2n2^n 种可能的保留组合。训练过程从这些“精简”网络中采样,而常规推理则使用一个未经精简的网络来近似它们的综合行为。最初的方案在预测时缩放权重;反向 Dropout 则将补偿性缩放移到了训练阶段。模型平均是一种解释和近似,并非对任意非线性网络都成立的普遍等式。(jmlr.org)

Dropout 也不同于 2013 年提出的 DropConnect。DropConnect 对单个权重而非激活值施加掩码,因此每个接收单元可以通过不同的随机连接子集获得输入。这两种方法在计算过程中的不同位置引入随机性。(proceedings.mlr.press)

结构化变体与循环网络变体

在卷积神经网络中,同一特征图内相邻位置的值可能高度相关。因此,即使屏蔽个别值,相邻位置仍可能保留类似的信息。按通道的 Dropout 或空间 Dropout则会屏蔽整个特征图。PyTorch 的 Dropout2d 实现了按通道施加掩码,这使其区别于普通的逐元素 Dropout。(docs.pytorch.org)

循环神经网络还涉及另一种区别:掩码既可以在每个时间步发生变化,也可以在整个序列中保持不变。加尔和加赫拉马尼提出了一种有理论依据的循环网络变体,在各时间步重复使用同一掩码,并将这种做法应用于循环连接。他们的研究将该方法用于长短期记忆网络和门控循环模型,并在语言模型和情感分析任务上开展实验。因此,掩码的时间结构是该方法的一部分,而不只是实现细节。(papers.neurips.cc)

贝叶斯解释与不确定性

加尔和加赫拉马尼在 2016 年的研究中,将 Dropout 训练与深度高斯过程中的近似贝叶斯推断联系起来。在这一框架下,预测时保留 Dropout 并反复执行随机前向传播,可以获得用于近似预测分布的样本。这一过程通常称为蒙特卡洛 Dropout。(proceedings.mlr.press)

对于 TT 个掩码产生的输出 ft(x)f_t(x),预测均值可估计为

μ^(x)=1T∑t=1Tft(x).\widehat\mu(x)=\frac{1}{T}\sum_{t=1}^{T}f_t(x).

这些预测结果的离散程度可以在该近似框架内提供模型不确定性的信息。但它并不自动构成对观测噪声的完整度量,贝叶斯解释也不意味着每个经过 Dropout 训练的模型都是精确的贝叶斯模型。在实际操作上,重复采样也不同于常规的确定性评估。(proceedings.mlr.press)

配置与局限

Dropout 丢弃率是一个超参数,不同层可以使用不同的丢弃率。在循环网络实验中,研究者根据模型在验证集上的表现选择丢弃率,而不是假定某个设置普遍适用。掩码施加的位置及其相关性也会影响最终的正则化效果。(github.com)

Dropout 可能与批量归一化产生相互影响。当 Dropout 位于归一化层之前时,训练阶段的随机性可能改变该层记录的方差。随后在推理时禁用 Dropout,就可能导致记录的统计量与输入的激活值不匹配。关于这种“方差偏移”的研究说明,仅保持激活值的均值不变,并不足以保证训练和推理行为的一致性。(arxiv.org)