Dropout
训练时随机关闭一部分神经元,强迫网络分散能力——像小组学习随机让人请假,逼每个人都学全部内容,防止少数节点"包办一切"。
直觉理解
小组 5 个人一起备考。如果每次 5 个人都在,最聪明的那个会包办所有题目——其他人什么都没学到。
新规则:每次随机一人请假。没人知道谁会缺席,所以每个人都必须学全部内容。
Dropout 做的就是这件事:训练时随机关闭一部分神经元,让剩下的神经元也必须学会做出正确预测。
与 ReLU 截断的区别
Dropout 和 ReLU 截断的效果有点像——都是"某些路被封了,信号过不去"。但关键区别:
- ReLU 截断是意外发生的(输入恰好为负数,该神经元输出为零)
- Dropout是故意设计的——为了防止少数神经元"包办一切",强迫网络分散能力
训练 vs 测试
- 训练时:每个神经元有一定概率被关闭(如
Dropout(0.5)= 50% 概率关闭) - 测试时:所有神经元全部开启——就像考试那天所有人都到齐
代码中的实现
PyTorch 中用 nn.Dropout(p) 表示每个神经元有 p 的概率被关闭。注意 p 是关闭概率,不是保留概率:nn.Dropout(0.3) 意味着 30% 关闭、70% 工作。