Dropout
Dropout 是训练时的正则化:每个样本临时屏蔽一部分隐藏激活,让网络难以只依赖某些共同出现的路径拟合训练数据。
本课的带噪双月数据中,不用 dropout 的训练 BCE 降到 0.0006,留出 BCE 却升到 1.5929。p = 0.25 的训练 BCE 为 0.2998,留出 BCE 为 0.3464。要看留出表现选择强度,不能只追求训练损失最低。
Dropout 如何工作
隐藏单元 j 的激活为 hⱼ,屏蔽概率为 p。训练时各单元独立采样:
mⱼ ~ Bernoulli(1 − p)
再计算:
h̃ⱼ = mⱼhⱼ / (1 − p)
mⱼ=0 时,该路径没有前向贡献,也没有来自这个样本的损失梯度。mⱼ=1 时除以保留概率。这是 inverted dropout,条件于原激活的期望为:
E[h̃ⱼ] = (1 − p)hⱼ / (1 − p) = hⱼ
保持单个激活的期望,不代表整个非线性网络输出的期望完全不变。评估时取消掩码,全部单元参与,不再额外缩放。普通确定性推理不应继续随机屏蔽,否则测量的是另一种过程。
Dropout 不删除参数。某单元本次被屏蔽,后续掩码可能让它回来;普通推理则使用全部单元。
Dropout 逐步演示
默认配置是 { dropoutRate: 0.25, hidden: 16 }。两条路径共用 40 个训练样本(八个固定标签翻转)、400 个干净标签留出样本、同一初始化,以学习率 0.01 的 full-batch Adam 训练 5,000 epoch。左侧 p=0,右侧只改变 dropout。
从同一网络开始。 epoch 0 的两个 2→16→1 网络损失相同,后续差异不能归因于数据、初始权重、优化器或训练时间不同。
采样掩码。 p=0.25 的保留概率为 0.75,期望保留 16 × 0.75 = 12 个单元。某一次可以高于或低于 12。
进行带掩码更新。 屏蔽路径对该样本的损失梯度为零,保留激活乘 1 / 0.75。这不保证参数完全不动:全批次还有其他样本,Adam 也保存历史动量,其他正则项同样可能影响更新。各样本与各 epoch 重新采样,在共享参数上形成重叠子网络。
测量时恢复完整网络。 训练与留出指标都以推理模式计算,不使用掩码,使实线、虚线口径一致。
观察曲线分开。 在 500、2,000、5,000 epoch 暂停。不用 dropout 的训练 BCE 为 0.222、0.010、0.0006,留出 BCE 为 0.495、1.202、1.5929,对八个错误标签的拟合越来越强。
p=0.25 的最终训练 BCE 为 0.2998,没有达到对照组的近零水平;留出 BCE 为 0.3464,对照值约为它的 4.60 倍。留出准确率 86.75%,对照为 76.75%。
这些结果只适用于本数据、初始化和训练设置,不证明 0.25 在所有任务最优。
屏蔽率与宽度
p 控制已有单元多常被屏蔽,H 控制网络本来有多少隐藏容量,两者独立。
- No dropout,p=0。 两条路径完全相同,重放同一记忆化轨迹,不是另一个特殊实现。
- Sweet spot,p=0.25、H=16。 在本课命名预设中,最终留出损失最低,代价是训练拟合较弱。
- Too much,p=0.8。 平均只保留
16 × 0.2 = 3.2单元,最终训练 BCE 0.5676,留出 BCE 0.4659。仍改善了记忆化对照,但本身出现欠拟合。 - Too narrow,p=0.25、H=2。 最终留出 BCE 0.4571。正则化不能凭空增加窄网络缺少的特征表达空间。
实际应与更多数据、数据增强、权重衰减、早停、归一化及合适模型规模比较,也可按层选择性使用 dropout。用留出数据反复选择设置时,它承担验证角色,最终测试应另留数据。
边界情况
- p=0。 掩码全一,比例为一,与无 dropout 对照相同。
- p=1。 此公式会除零,因此本课排除;某些库另有约定,不在这里讨论。
- 很高但合法的 p。 保留下来的有效路径太少,训练更嘈杂,可能欠拟合。
- 窄隐藏层。 加强屏蔽不能补足容量,反而可能让有限容量更难使用。
- 保留数偏少。
(1−p)H是期望,不是每个掩码的精确数量。 - 评估时仍屏蔽。 Monte Carlo dropout 会为不确定性估计刻意在推理采样,它与本课确定性评估不同。
常见错误
- 叫作删除神经元。 只是训练时临时屏蔽激活,存储的参数还在。
- 缩放两次。 Inverted dropout 训练时已除以保留率,推理恢复全网,不再乘同一因子。
- 只看训练损失。 对照的 0.0006 最低,默认比较的最终留出损失却最差。
- 认为更多 dropout 更安全。 p=0.8 已欠拟合,正则化不是单向提升旋钮。
- 混淆屏蔽率与保留率。 p=0.25 意味着保留 0.75。
- 要求每次正好保留期望数。 每个掩码都是独立随机抽样。
- 使用不同初始化或预算来归因。 本比较固定数据、初始化、优化器和 epoch,才能隔离所改设置的影响。
模型的简化
合成双月数据、一个隐藏层、固定 Adam 与随机种子。训练只有 40 点,刻意翻转八个标签,以便在短演示里看到记忆化。子网络是同一参数集合的重叠视图,不是独立训练的多个模型。
真实网络会组合更多数据、归一化、增强、权重衰减和早停。批归一化、残差连接、循环状态、注意力和结构化 dropout 会改变适用位置。本课只隔离一个比较,不建议给所有层加同一屏蔽率。