当前位置: 首页 > news >正文

Dropout

Dropout(丢弃法)是一种在神经网络训练中广泛使用的正则化(Regularization)技术。它的主要作用是防止模型在训练集上过拟合(Overfitting),从而提高模型在未见过数据(测试集)上的泛化能力。


Dropout 类的作用和工作原理

如果你要在你的面向对象的神经网络框架中实现一个 Dropout 类,它会像 SigmoidLinear 层一样,拥有 forwardbackward 方法,但其内部操作非常独特:

1. 训练阶段(forward 方法):随机“失活”

在训练时,Dropout 层的 forward 操作会随机地将该层的一部分神经元设置为零(失活)

步骤 操作 目的
1. 生成掩码 (Mask) 根据设定的丢弃概率 $p$(例如 $p=0.5$),生成一个与输入数据同形状的随机布尔矩阵(掩码)。 决定哪些神经元应该被临时“删除”。
2. 丢弃 将输入数据与这个掩码相乘,使得被选中丢弃的神经元的输出变为 0 实现随机失活,打破神经元之间的共适应性。
3. 缩放 (Scaling) 将剩下的未失活神经元的输出除以 $1-p$(保持概率)。 “反向缩放”。这是为了保证下一层神经元的输入总和的期望值与没有 Dropout 时保持一致。

2. 测试/验证阶段(forward 方法):不做任何事

在测试、验证或实际部署模型时,Dropout 层不执行任何随机丢弃操作,它只是简单地传递输入数据

  • 原因: 如果在测试时也随机丢弃神经元,会引入不确定性,导致每次运行的结果不同。由于训练时的缩放已经补偿了神经元减少的影响,测试时无需再做处理。

3. 反向传播(backward 方法):传递梯度

在反向传播时,Dropout 层只对在前向传播中被保留下来的神经元传递梯度。

  • 它将上游传来的梯度(G)与训练时生成的掩码相乘,实现梯度传递。
  • 同时,梯度也需要被 $1-p$ 缩放,保持与前向传播的一致性。

Dropout 的价值:正则化

Dropout 的核心思想是,通过随机“折磨”模型,使其变得更加健壮:

  1. 防止特征共适应性: 强制要求每个神经元不能完全依赖于前一层特定的某些神经元,因为它不知道下一次训练时哪些神经元会“存活”。这迫使神经元学习到更通用、更具鲁棒性的特征。
  2. 集成学习: 每次训练迭代都相当于在一个稍微不同的网络上进行,Dropout 最终效果类似于训练了一个庞大的集成模型(Ensemble Model)
  3. 简化网络: 由于它的作用,通常可以在使用 Dropout 的情况下使用更大的网络规模,而不用担心过拟合。
# 定义Dropout类
class Dropout(Module):def __init__(self, p=0.3):super().__init__()self.info += f"**    Dropout(p={p})"  # 打印信息self.p = pdef forward(self, x):r = np.random.rand(*x.shape) # 矩阵r与x的shape相同,值在0-1之间随机生成self.nagtive=r<self.px[self.nagtive]=0return xdef backward(self, G):G[self.nagtive]=0return G
http://www.rkmt.cn/news/12894.html

相关文章:

  • 经典排序算法深度解析 - 实践
  • 第十篇:模块一总结与答疑:如何养成良好的编码习惯和调试思维 - 实践
  • Java网络编程(七):NIO实战构建高性能Socket服务器 - 实践
  • 完整教程:【大模型理论篇】用于时间序列预测的纯解码器基础模型TimesFM-2.5
  • Tita 项目经营一体化建筑业企业解决方案
  • CD78.【C++ Dev】以AVL任务的bug讲讲调试技巧
  • np.random.rand
  • 冯延巳-风乍起,吹皱一池春水。
  • 完整教程:逻辑回归中的决策边界解析与应用实例
  • VSCode+Window+Chrome常用快捷键
  • Linux环境下VSCode快速安装终极指南:debian/ubuntu/linux平台通用
  • 学习Sci. Adv. 关于AMP_generator文章-复现
  • 完整教程:【微实验】激光测径系列(六)MATLAB 实现 CCD 图像像素与实际距离标定
  • 坐观垂钓者,徒有羡鱼情:孟浩然与当代人的无能为力之痛
  • Linux安全 | 防火墙工具 iptables 详解 - 详解
  • SQL子查询(Subquery)优化
  • 深入解析:GraphRAG(知识图谱结合大模型)对人工智能中自然语言处理的深层语义分析的影响与启示
  • C++项目:仿muduo库高并发服务器 - 实践
  • 完整教程:zk管理kafkakafka-broker通信
  • InteractiveCommunication Problems
  • JSON 框架混用避坑指南:FastJSON vs Jackson
  • 企业级大数据技术栈:基于Hadoop+Spark的全球经济指标分析与可视化环境实践
  • 若邻接矩阵是三角矩阵,则存在拓扑序列;反之则不一定成立
  • Gateway-断言 - 指南
  • 字符串基础
  • Kubernetes 进阶实战:CRD、Gateway API 与优先级调度 - 实践
  • 单片机 -- USART总线 - 实践
  • 题解:P11667 [USACO25JAN] Astral Superposition B
  • 北极通讯网络题解(做题记录)
  • 个人学习——前端react项目框架