概述
它成为了对抗深度学习中过拟合的最具影响力的技术之一。
深入探讨
Dropout 由 Hinton 团队于 2012 年左右提出,解决了大型网络的一个关键弱点:神经元可以共同适应,学习以仅适用于训练数据的方式修复彼此的错误。在训练期间的每次前向传递中,dropout 都会以某个概率 p(在密集层中通常为 0.5)随机将每个神经元的输出设置为零。由于任何神经元都可能消失,因此网络不能依赖脆弱的伙伴关系,并且必须在许多单元之间传播有用的信息。这就像训练一个共享权重的稀疏网络的巨大集合。在测试时,dropout 被关闭,并使用完整的网络,并缩放激活值,以便预期的输出与训练相匹配。结果通常是更好的泛化,但代价是训练时间稍长。
现实世界的实施
在 PyTorch 或 Keras 中的图像或文本分类器的密集层之间添加 p 约为 0.5 的 Dropout 层
Transformer 模型在预训练期间将 dropout 应用于注意力权重和前馈激活
蒙特卡罗 dropout,其中 dropout 在推理时保持不变,以产生医疗或安全关键预测的不确定性估计
随机深度 (DropPath) 随机跳过残差块以规范 ResNet 和视觉 Transformer 等非常深的网络
Dropout 和随机正则化的未来
在卷积视觉网络中,批量归一化在很大程度上取代了标准 dropout,但变体在其他地方蓬勃发展:变压器将 dropout 应用于注意力层和前馈层,DropPath(随机深度)丢弃整个残差块。蒙特卡罗 dropout 使 dropout 在推理时保持活跃,用于估计模型不确定性。期望随机正则化仍然是一个灵活的工具包,根据架构进行调整,而不是单一的固定配方。
付诸实践
为什么这很重要
- 更清晰的判决. 它可以帮助您将清晰的技术声明与营销语言分开。
- 成本与预算. 在花费金钱或时间之前,您可以提出更好的实施问题。
- 团队与工作流程. 具有共同理解的团队可以做出更好的产品、政策和学习决策。
留意
- 不同的团队可能会以不同的方式使用同一术语,因此请尽早定义范围。
- 基准测试可能看起来很强大,但实际性能却参差不齐。
- 忽视数据质量和评估计划通常会产生脆弱的结果。
后续步骤
- 从您需要的结果的简单语言定义开始。
- 在测试之前选择一种成功指标和一种失败条件。
- 使用代表性数据运行小型试点,而不是完善的演示集。
- 记录 Dropout 和随机正则化在哪些方面有帮助,以及哪些更简单的方法更好。
不断探索
常见问题
什么是 Dropout 和随机正则化?
Dropout 是一种正则化技巧,它在每个训练步骤中随机关闭一小部分神经元,迫使网络构建冗余、鲁棒的表示。它成为深度学习中对抗过度拟合最有影响力的技术之一。
dropout在训练过程中做了什么?
Dropout 在训练期间以概率 p 随机将每个神经元归零,因此每一步都使用不同的细化子网络。
为什么 dropout 可以提高泛化能力?
通过随机删除单元,dropout 可以阻止神经元形成仅适用于训练数据的脆弱伙伴关系,从而提高鲁棒性。
测试(推理)时丢失会发生什么?
在推理时,整个网络在禁用 dropout 的情况下运行,并且激活被缩放,以便预期输出与训练分布匹配。
一层中 p = 0.5 的 dropout 率在训练期间大致意味着什么?
当 p = 0.5 时,每个神经元有 50% 的机会被归零,因此平均每次前向传递大约有一半被丢弃。
通常将 dropout 描述为近似值是什么?
每一步对不同的子网络进行采样近似于对指数数量的共享权重网络进行平均,这是一种廉价的集成形式。