AI知识分享AI知识分享
✿导航
  • 人工智能
  • 神经网络
  • 机器学习
  • 深度学习
  • 强化学习
  • 自然语言处理
  • 计算机视觉
  • 大模型基础
  • 动手学深度学习
  • 理论理解
  • 工程实践
  • 应用开发
  • AI For Everyone
  • AIGC_2024大会
  • AIGC_2025大会
  • Transformer
  • Pytorch
  • HuggingFace
  • 蒸馏
  • RAG
  • 目标检测
  • MCP
  • 概念
  • 意图识别
  • 工具
✿导航
  • 人工智能
  • 神经网络
  • 机器学习
  • 深度学习
  • 强化学习
  • 自然语言处理
  • 计算机视觉
  • 大模型基础
  • 动手学深度学习
  • 理论理解
  • 工程实践
  • 应用开发
  • AI For Everyone
  • AIGC_2024大会
  • AIGC_2025大会
  • Transformer
  • Pytorch
  • HuggingFace
  • 蒸馏
  • RAG
  • 目标检测
  • MCP
  • 概念
  • 意图识别
  • 工具
  • 大模型基础

    • 语言模型基础

      • 概述
      • 基于统计方法的语言模型
      • 基于神经网络的语言模型
      • 语言模型的采样方法
      • 语言模型的评测
    • 大语言模型架构

      • 概述
      • 主流模型架构
      • Encoder-only
      • Encoder-Decoder
      • Decoder-only
      • 非Transformer 架构
    • Prompt工程

      • 工程简介
      • 上下文学习
      • 思维链
      • 技巧
    • 参数高效微调

      • 概述
      • 参数附加方法
      • 参数选择方法
      • 低秩适配方法
      • 实践与应用
    • 模型编辑

      • 简介
      • 方法
      • 附加参数法
      • 定位编辑法
    • RAG

      • 基础
      • 架构
      • 知识检索
      • 生成增强
  • 动手学深度学习

    • 深度学习基础

      • 引言
      • 数据操作
      • 数据预处理
      • 数学知识(线代、矩阵计算、求导)
      • 线性回归
      • 基础优化方法
      • Softmax回归
      • 感知机
      • 模型选择
      • 过拟合和欠拟合
      • 环境和分布偏移
      • 权重衰减
      • Dropout
      • 数值稳定性
    • 卷积神经网络

      • 模型基本操作
      • 从全连接层到卷积
      • 填充和步长
      • 多个输入和输出通道
      • 池化层
      • LeNet
      • AlexNet
      • VGG
      • NiN网络
      • GoogleNet
      • 批量归一化
      • ResNet
    • 计算机视觉

      • 图像增广
      • 微调
      • 目标检测
      • 锚框
      • 区域卷积神经网络
      • 单发多框检测
      • 一次看完
      • 语义分割
      • 转置卷积
      • 全连接卷积神经网络
      • 样式迁移
    • 循环神经网络

      • 序列模型
      • 语言模型
      • 循环神经网络
      • 序列到序列学习
      • 搜索策略
    • 注意力机制

      • 优化算法

Dropout

问题背景:为什么需要 Dropout?

在深度学习模型中,过拟合(Overfitting) 是一个常见问题,即模型在训练集上表现很好,但在测试集上泛化能力差。传统解决方法包括:

  • L1/L2 正则化(限制权重大小)
  • 早停(Early Stopping)
  • 数据增强(Data Augmentation)

但深度神经网络(DNN)由于参数众多,仍然容易过拟合。2012年,Hinton 团队提出 Dropout,通过随机“关闭”神经元来增强模型鲁棒性。

Dropout 的核心思想

Dropout 的核心思想是:在训练时,随机丢弃一部分神经元的输出,迫使网络不依赖任何单个神经元,从而提高泛化能力。

训练阶段

对于每一层(或指定层)的每一个神经元,在每一次前向传播(Forward Pass)时:

  1. 生成掩码:以概率 ppp(丢弃率,例如 0.5)将该神经元的输出置为 0。
  2. 缩放(Scaling):为了保持输出的期望值不变,通常将剩余神经元的输出除以 (1−p)(1-p)(1−p)。
    • 注:有些框架(如 PyTorch 的 nn.Dropout)在训练时直接进行缩放(Inverted Dropout),这样测试时就不需要再操作了。
  3. 反向传播:被丢弃的神经元不参与本次的反向传播(梯度为 0),权重不更新。

测试/推理阶段 (Inference)

  • 不使用 Dropout:所有神经元都参与计算。
  • 无需调整权重:如果在训练时使用了“反向 Dropout”(Inverted Dropout,即训练时已经放大了激活值),测试时直接使用原始网络即可,不需要做任何修改。这保证了推理速度不受影响。

使用Dropout

通常将 Dropout 作用在隐藏全连接层的输出上

image-20260304202317023

Dropout vs. 权重衰减

特性Dropout权重衰减 (Weight Decay)
作用机制随机屏蔽神经元,打破共适应。惩罚大权重,限制模型复杂度。
主要效果强制网络学习冗余的、鲁棒的特征。使决策边界更平滑。
计算开销训练时略微增加(生成掩码),推理时无开销。几乎无额外开销。
适用性对全连接层效果显著;CNN 中需谨慎使用。通用,适用于几乎所有层。
组合使用经常与权重衰减一起使用,两者互补,效果更佳。常与 Dropout 搭配。
最近更新: 2026/3/22 18:37
Contributors: klc407073648
Prev
权重衰减
Next
数值稳定性