深度学习-丢弃法 Dropout

发布于:2025-07-31 ⋅ 阅读:(16) ⋅ 点赞:(0)

Dropout 相当于是一个正则项,只在训练时使用,即在层之间加入噪声,增加模型的鲁棒性

因此,推理过程中,Dropout直接返回输入本身。

【补充知识点】:

正则化(regularization)的核心定义只有一句话:

  • 任何显式地牺牲训练误差、换取模型复杂度下降的操作或约束,都叫正则化

把这句话拆成三个关键词:

  1. 显式——它必须是人为“加进去”的,而不是模型本来就有的;

  2. 牺牲训练误差——如果不付出代价,就不叫正则化;

  3. 换取复杂度下降——最终目的是降低泛化误差(测试误差)。

常用的正则化方法

牺牲代价(训练误差↑)

换取的复杂度下降

L2 权重衰减(Weight Decay)

额外惩罚项 λ‖w‖² 拉高损失

权重变小 → 函数更平滑,VC 维↓

L1 权重衰减(Lasso)

额外惩罚项 λ‖w‖₁ 拉高损失

权重稀疏 → 特征选择,有效参数量↓

Dropout

训练时随机屏蔽神经元/权重,网络更难拟合

抑制共适应 → 网络更鲁棒,等效集成大量子网络

Early Stopping

提前终止训练,训练误差未降至最低

迭代次数↓ → 有效容量↓

训练时把 p概率 的神经元置 0,相当于把剩余神经元的“总输出强度”缩小了 (1−p) 倍;

除以 (1−p) 是把强度再拉回原来的期望值,这样推理阶段无需任何缩放就能得到一致的输出。

例如,自主实现的dropout函数中,结果如下:

在 Dropout 技术中,训练时以概率 p 随机保留神经元(丢弃概率为 1−p)。

除以保留概率 p 的核心原理是:

  • 保持该层输出的期望值(均值)在训练和测试时一致。

  • 若不进行缩放,训练时输出的期望值仅为原始值的 p 倍,而测试时为原始值,会导致网络行为不一致。

  • 缩放操作确保了训练和测试时输出的期望值相同,提升模型泛化能力。

假设某层有 4 个神经元,输出值为 [2,4,6,8],保留概率 p=0.5(即丢弃概率 1−p=0.5)。

  1. 生成掩码: 以 50% 概率保留每个神经元。例如掩码为 [1,0,1,0](意思是:保留第 1、3 个,丢弃第 2、4 个)。

  2. 应用 Dropout(未缩放): 输出变为 [2×1,4×0,6×1,8×0]=[2,0,6,0]。 期望值 = (2+0+6+0)/4=2而原始期望值为 (2+4+6+8)/4=5。

  3. 缩放(除以 p=0.5):缩放后输出 = [2/0.5,0,6/0.5,0]=[4,0,12,0]。 期望值 = (4+0+12+0)/4=4(与原始期望值 5 仍有偏差,因单次采样有随机性)。

  4. 多次采样验证期望值: 重复多次实验,缩放后的平均输出趋近原始值:

    1. 实验1:掩码 [1,0,1,0] → [4,0,12,0] → 均值 = 4

    2. 实验2:掩码 [0,1,0,1] → [0,8,0,16] → 均值 = 6

    3. 实验3:掩码 [1,1,0,0] → [4,8,0,0] → 均值 = 3

    4. 平均期望 = (4+6+3)/3≈4.33 → 接近原始均值 5(采样越多越接近)。


网站公告

今日签到

点亮在社区的每一天
去签到