Dropout 在训练时以概率 p 随机将神经元输出置零,迫使网络不依赖任何单个特征,学习冗余表示,效果近似训练指数多个子网络并做集成,从而缓解过拟合。
训练与推理的关键差异:训练时每个神经元以 1-p 概率保留,推理时全部保留。为使期望输出一致,需做尺度校正——现代框架用 inverted dropout,训练时把保留的激活除以 (1-p),推理时原样输出,无需任何调整。
易错点:Dropout 与 BatchNorm 联用时方差偏移可能互相干扰,实践中在卷积网络里常二选一;大模型时代 Dropout 使用率明显下降——海量数据下欠拟合才是主要矛盾,很多 LLM 预训练根本不用 Dropout,只在微调小数据集时启用。追问方向:为什么 Dropout 可看作贝叶斯近似(MC Dropout 做不确定性估计)?DropConnect、DropPath 的区别?
nn.Dropout(p=0.1) # 训练时按 0.1 概率置零并除以 0.9
model.eval() # 推理时自动关闭