Dropout的定义和目的:
Dropout 是一种神经网络正则化技术,它在训练时以指定的概率丢弃一个单元(以及连接)p。
这个想法是为了防止神经网络变得过于依赖特定连接的共同适应,因为这可能是过度拟合的症状。直观上,dropout 可以被认为是创建一个隐式的神经网络集合。
PyTorch 的nn.Dropout实现
根据这个定义,PyTorch 的nn.Dropout “使用伯努利分布的样本以概率p将输入张量的一些元素随机归零。每个通道将在每次前向呼叫时独立清零。”
Dropout — PyTorch 2.2 documentationhttps://pytorch.org/docs/stable/generated/torch.nn.Dropout.html
Dropout 可以被认为是根据给定的概率p随机将输入张量中的一些元素归零。当这种情况发生时,一部分输出将丢失。为了解决这个问题,输出也按因子1⁄₍₁_ₚ₎进行缩放。
由此推断,这意味着不必计算 dropout。正如杨章所解释的,“因为 dropout 仅在训练期间有效,而在推理期间不有效,如果没有缩放,则在推理期间预期输出会更大,因为元素不再被随机丢弃(设置为 0)。”
缩放使输入平均值和输出平均值大致相等。
示例演示 dropout 及其缩放如何影响输入。
当 dropout 率为p = 0.1时,大约 10 个值应为 0。比例率如下所示;这是每个输出应该的值。
结果显示,其中 10 个值被完全清零,并对结果进行缩放以确保输入和输出具有相同的平均值 - 或尽可能接近它。
在本例中,输入和输出的平均值均为 1.0。
原文链接:https://medium.com/@hunter-j-phillips/a-simple-introduction-to-dropout-3fd41916aaea