Dropout是一种用于人工神经网络的正则化技术,通过防止训练数据上的复杂共适应来减少过拟合。该技术包括在训练过程中(而非推理期间)随机将神经元的输入和/或输出设置为零。通过暂时从网络中移除单元,dropout迫使剩余单元学习更稳健、能够独立工作的特征,而不是依赖其他特定单元的存在。这种方法已成为Deep learning和Machine learning中的标准工具,尤其是在训练大型模型且过拟合风险显著时。
这一概念与一种更古老的技术,,稀释(dilution)密切相关,后者会随机将权重向零减小。稀释通常根据移除连接的比例分为弱稀释和强稀释。虽然dropout常被描述为稀释的一个特例,但它的不同之处在于移除的是整个节点(权重矩阵中的行),而非单个权重,这对数学分析和实际实现都有影响。
历史发展
随机扰动神经网络连接的想法源于早期关于噪声注入和权重衰减的研究。作为dropout的前身,稀释在20世纪80年代和90年代于Hopfield网络和联想记忆模型的背景下得到了研究。研究人员观察到,随机移除一小部分连接可以改善泛化能力,尽管当时的理论理解有限。
现代dropout由Nitish Srivastava和Geoffrey Hinton在University of Toronto于2012年的一篇论文中提出,更详细的期刊文章于2014年发表。该技术在图像分类任务中成功应用后获得了广泛关注,与之前的方法相比显著减少了过拟合。2014年的论文报告了在多个基准数据集上的改进,包括MNIST手写数字数据集和CIFAR-10图像数据集上的测试误差降低。
自推出以来,dropout已被扩展和改编为多种形式,包括反向dropout(在训练期间缩放激活以保持一致的输出幅度)和变分dropout(对该技术应用贝叶斯解释)。这些变体已被纳入许多Neural network架构,并得到主要Machine learning框架的支持。
数学表述
在广义线性网络中,来自一层线性节点的输出可以描述为 \( y_i = \sum_j w_{ij} x_j \),其中 \( y_i \) 是节点 \( i \) 的输出,\( w_{ij} \) 是稀释前的实值权重(也称为Hebb连接强度),\( x_j \) 是节点 \( j \) 的输入。用向量符号表示,即 \( \mathbf{y} = \mathbf{W} \mathbf{x} \),其中 \( \mathbf{y} \) 是输出向量,\( \mathbf{W} \) 是权重矩阵,\( \mathbf{x} \) 是输入向量。
在弱稀释期间,被移除连接的有穷比例很小,从而产生极小的不确定性。这种边缘情况可以用平均场理论精确求解。稀释后的权重 \( \hat{w}_{ij} \) 由 \( \hat{w}_{ij} = c w_{ij} \) 给出,其中 \( c \) 是遵循概率分布 \( P(c) \) 的随机变量,表示保留权重的概率。在弱稀释中,只有一小部分固定比例的权重被稀释,当求和中的项数趋于无穷时,它仍然保持无穷大,从而可以应用平均场理论。
强稀释发生在被移除连接的有穷比例很大时,从而产生巨大的不确定性。在这种情况下,平均场理论的假设可能不再成立,分析变得更加复杂。
Dropout是权重方程的一个特例,其中权重矩阵中的整行被移除,而不是随机的单个权重。稀释后的行 \( \hat{\mathbf{w}}_j \) 由 \( \hat{\mathbf{w}}_j = c \mathbf{w}_j \) 给出,其中 \( c \) 是保留权重矩阵中一行的概率。由于dropout移除的是整行,之前关于弱稀释的假设以及平均场理论的使用不再适用。
机制与实现
在训练期间,dropout在每次前向传播时随机将一部分神经元激活设置为零。这个比例通常称为dropout率,是一个超参数,通常设置在0.2到0.5之间。对于每个训练样本,会丢弃一组不同的单元,从而有效地创建一个共享权重的瘦身网络集成。在推理时,使用所有单元,但它们的输出会按保留概率进行缩放,以考虑活跃单元数量的增加。
将节点驱动为零的过程,无论是通过将权重设为零、移除节点还是其他方式,都不会影响最终结果,也不会产生新的独特情况。如果神经网络由高性能数字阵列乘法器处理,那么在处理图后期将值驱动为零可能更有效。如果网络由受限硬件实现处理,例如AMD或Intel加速器,具体方法可能影响效率,但不会影响结果。
在实践中,dropout更常应用于全连接层,而非卷积层,尽管它可以用于网络的任何部分。对于像Transformer (architecture)这样的Large language model架构,dropout通常应用于注意力层和前馈层的输出,比率通常在0.1左右。现代框架如TensorFlow和PyTorch提供了内置的dropout层,可以自动处理缩放。
与稀释的关系
稀释和dropout是相关但不同的技术。稀释随机将权重向零减小,而dropout将整个神经元激活设置为零。稀释通常分为弱稀释和强稀释,两者之间的界限没有明确区分,通常取决于特定用例的先例,并对如何求解精确解有影响。
有时稀释用于向输入添加阻尼噪声。在这种情况下,弱稀释指添加少量阻尼噪声,而强稀释指添加更多阻尼噪声。两者都可以改写为权重稀释的变体。
这些技术有时也被称为权重的随机剪枝,但这通常是非重复的单向操作。网络被剪枝,然后如果比之前的模型有所改进则保留。稀释和dropout都指迭代过程,其中网络在应用技术后继续学习。相比之下,权重剪枝通常不意味着网络继续学习。
优点与局限性
Dropout在训练神经网络中提供了几个好处。它通过防止复杂的共适应(神经元过度依赖其他特定神经元)来减少过拟合,从而在未见数据上实现更好的泛化。Dropout还作为一种模型平均形式,因为它训练了一个瘦身网络集成,并在推理时平均它们的预测。这可以提高鲁棒性并减少预测中的方差。
然而,dropout也有局限性。它增加了训练时间,因为网络必须在随机缺失单元的情况下学习,这可能会减慢收敛速度。Dropout率必须仔细调整;过高的比率可能导致欠拟合,而过低的比率则提供很少的正则化好处。对于具有空间相关性的卷积层,dropout效果较差,此时可能更倾向于使用批归一化或权重衰减等其他技术。
在Generative AI和Artificial intelligence系统的背景下,dropout通常与其他正则化方法一起使用。例如,在OpenAI和Google DeepMind开发的基于Transformer (architecture)的模型中,dropout应用于注意力权重和前馈层,以防止在大型数据集上过拟合。
在现代AI中的应用
Dropout已成为训练各种领域深度神经网络的标准组件。在计算机视觉中,它用于图像分类和目标检测的卷积网络。在自然语言处理中,它应用于循环网络和transformer,用于语言建模和翻译等任务。在强化学习中,dropout可用于正则化策略网络和价值函数。
对于Large language model训练,dropout通常以较低的比率应用,因为大规模的数据和模型参数已经提供了一些正则化。然而,对于较小的模型或训练数据有限时,它仍然有用。像Anthropic和Amazon Web Services这样的公司在各种AI服务的训练流程中纳入了dropout。
Dropout在不确定性估计中也有应用。通过在推理时应用dropout,称为蒙特卡洛dropout,模型可以产生多个具有不同丢弃单元的预测,从而估计预测不确定性。这在自动驾驶等安全关键应用中很有用,Waymo或Tesla开发的系统可能受益于不确定性量化。
理论视角
从理论角度看,dropout可以被解释为一种随机正则化形式。它在训练过程中引入噪声,这可以被视为特征级别的数据增强。一些研究人员将dropout与贝叶斯推断联系起来,其中dropout率对应于网络权重的先验。
Stanford AI Lab和BAIR (Berkeley AI Research)等机构的研究人员研究了dropout的理论性质,包括其对损失景观和泛化边界的影响。虽然完整的理论理解仍然是一个开放问题,但经验证据有力地支持了其有效性。
结论
Dropout是一种简单而强大的正则化技术,对Deep learning领域产生了深远影响。通过在训练期间随机丢弃单元,它防止过拟合并改善泛化,使其成为Machine learning从业者工具库中的基本工具。它与稀释的关系凸显了更广泛的随机正则化方法家族,而它在现代架构中的持续使用则强调了其持久的相关性。