核心要点

  • 能说清训练时以概率 p 随机置零神经元输出,迫使网络学鲁棒特征而非依赖少数神经元

  • 能解释 Dropout 等价于训练指数级子网络的隐式集成,推理近似对子网络平均

  • 能说明推理时必须 model.eval() 关闭 Dropout,PyTorch 用 inverted dropout 在训练时除以 (1-p) 保持期望一致

  • 能给合理取值:全连接层 p≈0.5,卷积层 p 较小(0.1~0.3)或改用空间 Dropout,过大 p 会欠拟合

简要回答

Dropout(Srivastava et al.)是缓解 过拟合正则化技术;

机制

  • 训练时:以概率 p(如 0.5)随机丢弃神经元输出(置 0)
  • 推理时model.eval() 关闭 Dropout,或输出乘以 (1-p) 保持期望一致(PyTorch nn.Dropout 自动处理)

为何有效

  1. 破坏共适应:神经元不能依赖固定搭档,须学鲁棒特征
  2. 隐式集成:每步相当于训练不同子网络,推理近似平均
  3. 降低有效容量:防止记忆训练集噪声

实践

  • 全连接层 p=0.5 常见

标准回答

Dropout(Srivastava et al.)是缓解 过拟合 的正则化技术。

机制

  • 训练时:以概率 p(如 0.5)随机丢弃神经元输出(置 0)
  • 推理时model.eval() 关闭 Dropout,或输出乘以 (1-p) 保持期望一致(PyTorch nn.Dropout 自动处理)

为何有效

  1. 破坏共适应:神经元不能依赖固定搭档,须学鲁棒特征
  2. 隐式集成:每步相当于训练不同子网络,推理近似平均
  3. 降低有效容量:防止记忆训练集噪声

实践

PyTorch:nn.Dropout(p=0.5)。详见 深度学习训练技巧

常见误区

⚠️ 常见踩坑

推理前忘记 model.eval(),Dropout 仍随机置零,导致同一输入预测结果抖动、指标虚低;另一个是把 Dropout 直接堆在 Batch Normalization 前后,二者方差统计互相干扰反而掉点,现代 CNN 多只在 FC 头或用 BN 替代 Dropout。

追问

追问 1Dropout 和 L2 正则有何不同?

L2(权重衰减)持续约束权重幅度,让所有权重变小、更平滑;Dropout 通过随机丢弃破坏神经元共适应,近似集成多个子网络。前者作用于权重大小,后者作用于网络连接结构,二者常叠加使用、互补。

追问 2为什么 eval 模式必须关 Dropout?

训练时随机丢弃,推理需确定性输出。eval() 关闭 Dropout 并用训练时 scale 补偿,否则推理输出随机且幅度错误。

追问 3Dropout 能用在卷积层吗?

能,但效果有限:卷积特征图相邻像素强相关,独立置零单个像素仍能由邻居恢复信息。更有效的是 nn.Dropout2d(空间 Dropout),按整张特征图通道丢弃。实践中 CNN 更多靠 Batch Normalization + 数据增强,Dropout 多放在最后的全连接头。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。

🛠️ AI 工具

  • Pytorch

    Meta 开源的深度学习框架,100K+ stars。以动态计算图和 Pythonic 风格著称,在学术界和工业界都有广泛应用,支持分布式训练、移动端部署和 ONNX 导出

  • Tensorflow

    全球最流行的机器学习框架之一,195K+ stars。Google 开源的端到端 ML 平台,支持 TensorFlow、Keras 等多种 API,覆盖深度学习、强化学习、移动端部署等全场景,是 AI 工程师的必备工具