Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Dropout Layer

Dropout 层在训练期间随机将一部分激活值置零,使网络无法依赖任何单个单元,从而减少过拟合。

Dropout 层是神经网络中的一种正则化组件,它会在每个训练步骤中随机将比例为 p 的输入设为零,而在推理时保持所有值不变。由于任意单元都可能在任意步骤中失效,网络无法依赖少数特定神经元或它们之间脆弱的协同适应,因此会学习冗余特征,从而更好地泛化,并减少对训练数据的过拟合。Geoffrey Hinton 及其同事于 2012 年提出了这项技术,Srivastava、Hinton 等人于 2014 年对其进行了完整阐述。它是 PyTorch、TensorFlow及大多数其他深度学习框架的内置层,适用于从全连接分类器头到 Transformer的各种架构。

Dropout 的工作原理#

训练期间,该层会在每次前向传播时采样一个新的随机掩码,以 1 − p 的概率保留每个元素,以 p 的概率将其置零。因此,每个步骤都会训练一个不同的精简子网络,而测试时使用的完整网络则近似于对指数级数量、共享权重的子网络求平均;这就是为什么 dropout 常被称为廉价的集成训练。为了让两个阶段的预期激活值保持一致,现代框架使用反向 dropout:训练时将保留值乘以 1 / (1 − p),这样推理时该层就无需执行任何操作。在 PyTorch 中,nn.Dropout会根据模块的训练或评估模式运行:

import torch
from torch import nn

torch.manual_seed(0)
dropout = nn.Dropout(p=0.5)
x = torch.ones(10)

# 训练模式:大约一半的值会被置零,其余值缩放为 1 / (1 - p) = 2
dropout.train()
print("Train:", dropout(x))

# 评估模式:该层保持所有值不变
dropout.eval()
print("Eval: ", dropout(x))

训练模式下,十个值中有六个被丢弃,其余四个变为 2.0,使期望值保持在 1.0;评估模式下,十个值都保持为 1.0。

常见的 Dropout 变体#

  • 空间 Dropout:PyTorch 的 nn.Dropout2d会将整个特征图通道置零,这适用于卷积网络,因为同一通道中相邻像素高度相关,单独丢弃像素几乎无法起到正则化作用。
  • 随机深度 (DropPath):它不会随机丢弃单个激活值,而是针对每个样本随机跳过整个残差分支,这是训练视觉 Transformer 和现代 CNN 的常用方法。
  • 蒙特卡洛 Dropout:推理时保持 Dropout 启用状态,并让模型对同一个输入执行多次前向传播。预测结果的离散程度可为安全关键型系统低成本地估算模型不确定性;Gal 和 Ghahramani 将这种方法解释为近似贝叶斯推断。
  • DropConnect:随机将单个权重置零,而不是激活值,并为每个连接生成独立的掩码。

实践中的 Dropout#

Dropout 比率的调优方式与其他超参数相同。Srivastava 等人发现,在各种网络和任务中,以 0.5 的概率丢弃隐藏单元效果良好,而输入单元最好以接近 1 的概率保留;最初的 Transformer 使用 p = 0.1。比率过高会减慢收敛并导致欠拟合,而在批归一化之前直接使用 dropout,则可能因训练与测试阶段的方差偏移而降低准确率。许多卷积神经网络主要依赖批归一化、数据增强和权重衰减,只在分类器头中使用 dropout。Ultralytics YOLO26 分类模型也采用这一模式:模型中只有一个 dropout 层,位于池化后的 1,280 通道特征与最终线性分类器之间,其比率由 dropout 训练参数设置(默认为 0.0)。

from ultralytics import YOLO

# 加载一个 YOLO26 分类模型,其分类头中包含 dropout 层
model = YOLO("yolo26n-cls.pt")

# 在较小的 MNIST 子集上训练,并在分类头中使用 10% 的 dropout
results = model.train(data="mnist160", epochs=10, imgsz=64, dropout=0.1)

实际应用#

  • 医学图像分析:带标签的扫描图像获取成本很高,因此诊断分类器通常会从预训练主干网络出发,使用几千张图像进行微调。分类器头中的 Dropout 可减少模型头在如此小的数据集上对个别病例的记忆。
  • 自然语言处理:在预训练和微调期间,BERT 等 Transformer 编码器会在包括注意力权重在内的所有层中,以 0.1 的概率应用 dropout。
  • 批归一化:批归一化会标准化每一层的输入以稳定训练,只通过批次统计量引入轻微噪声,不会移除任何单元。
  • 标签平滑:标签平滑通过训练目标进行正则化,将独热标签变得更平滑,同时保留所有激活值。
  • 剪枝:剪枝会永久移除重要性较低的权重以缩小模型,而 dropout 的置零只持续一个训练步骤,不会改变参数数量。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来