资讯

Dropout 是什么?训练时随机“关掉”神经元来防止过拟合

2026-11-052 分钟阅读百科
TL;DRDropout 是 Geoffrey Hinton 团队在 2012 年提出的神经网络正则化技术,在训练时随机让一部分神经元暂时失效,迫使网络不依赖少数特定神经元,从而有效减轻过拟合,在 AlexNet 中的成功使用让它广为流行。

Dropout 是一种防止神经网络过拟合的正则化技术,由 Geoffrey Hinton 和他的团队在 2012 年提出,相关论文是《通过防止特征检测器的共适应来改进神经网络》。同年,Hinton 团队在里程碑式的 AlexNet 论文《用深度卷积神经网络进行 ImageNet 分类》中也使用了 Dropout,帮助模型在 ImageNet 竞赛中大获成功,让这项技术迅速广为流行。2014 年,Srivastava 等人发表了对它更系统的论述。

过拟合问题

神经网络的参数很多,容易出现过拟合:在训练数据上表现很好,甚至把训练数据中的噪声和偶然规律都记住了,但在新数据上表现很差,就像学生死记硬背了练习题的答案,换一道题就不会了。

Dropout 怎么做

Dropout 的做法简单得出奇:在训练的每一步,随机地让一部分神经元暂时“失效”,比如以 50% 的概率把每个神经元的输出设为零,相当于把它们从网络中暂时拿掉。每一步被拿掉的神经元都不一样。训练结束、实际使用模型时,所有神经元都参与工作,但要对输出做相应的缩放,保证整体的数值大小和训练时一致。

为什么有效

论文的解释是防止“共适应”:如果没有 Dropout,一些神经元可能会形成固定的搭档关系,互相依赖、互相弥补错误,组合起来恰好能拟合训练数据中的特殊情况,但这种依赖在新数据上就不灵了。有了 Dropout,每个神经元都不能确定它的搭档这一次是否在场,于是被迫学习更独立、更有用的特征,整个网络也就更加鲁棒。

另一个角度是集成学习:每次随机拿掉不同的神经元,相当于在训练一个不同结构的子网络。整个训练过程相当于同时训练了指数级数量的子网络,并且它们共享参数;使用时让所有神经元参与,近似于把这些子网络的预测结果平均起来,而集成多个模型通常比单个模型更准确、更稳定。

今天的使用

Dropout 至今仍被广泛使用,Transformer 中就包含了 Dropout 层。不过在大规模预训练的大语言模型中,由于训练数据极其庞大、过拟合不再是主要问题,很多模型在预训练时会把 Dropout 设得很低甚至关闭,在微调阶段才使用。