dropout

Dropout是一种用于神经网络的正则化技术,旨在减少过拟合。过拟合通常在模型在训练数据上表现得很好,但在新数据上表现不佳时发生。Dropout通过在训练过程中随机关闭(丢弃)神经元的方式来防止过拟合。

Dropout的原理如下:

  1. 随机丢弃神经元: 在每个训练迭代中,Dropout会随机选择一些神经元并将其输出置零。这相当于将这些神经元从网络中删除,因此网络的每个训练迭代都会使用不同的子集神经元。

  2. 独立丢弃: 每个神经元都有一个与其相关的丢弃概率,通常用超参数 dropout 表示。该概率表示在训练时每个神经元被丢弃的概率。例如,如果 dropout=0.5,则每个神经元在每个训练迭代中都有50%的概率被丢弃。

  3. 防止过拟合: Dropout通过减少神经元之间的共适应性(co-adaptation)来防止过拟合。因为每个神经元都可能在某个训练迭代中被丢弃,网络不能过度依赖于任何一个特定的神经元,从而增加了模型的泛化能力。

  4. 测试时全保留: 在测试阶段,所有神经元都被保留,但其输出值要乘以 1 - dropout 这个比例。这是为了在测试时保持输入和输出之间的一致性,因为在训练时某些神经元被丢弃了。

Dropout的引入可以看作是在训练过程中对模型进行了集成学习,通过多次训练不同的子集,模型能够更鲁棒地适应不同的数据分布,从而提高泛化性能。

复制代码
def dropout_layer(X,dropout):
    assert 0 <= dropout <= 1
    if dropout == 1:
        return torch.zeros_like(X)
    if dropout == 0:
        return X
    mask = (torch.rand(X.shape) > dropout).float()
    return mask * X / (1.0 - dropout)
相关推荐
思绪无限1 小时前
YOLOv5至YOLOv12升级:钢材表面缺陷检测系统的设计与实现(完整代码+界面+数据集项目)
深度学习·yolo·目标检测·yolov12·yolo全家桶·钢材表面缺陷检测
_小雨林6 小时前
(UPDATING)LLM微调之实战,SFTTrainer官方案例、LoRA/QloRA微调案例、Unsloth、分布式训练、LLaMA Factory
人工智能·深度学习
xiaotao1317 小时前
03-深度学习基础:循环神经网络(RNN)
人工智能·深度学习·机器学习
今日说"法"9 小时前
数值计算与浮点误差:深度学习中梯度崩溃的数学根源与归一化对策
人工智能·深度学习
LaughingZhu9 小时前
Product Hunt 每日热榜 | 2026-04-21
人工智能·经验分享·深度学习·神经网络·产品运营
keineahnung234510 小时前
PyTorch 張量尺寸為 1 時,步長為何不具語意?
人工智能·pytorch·python·深度学习
思绪无限11 小时前
YOLOv5至YOLOv12升级:日常场景下的人脸检测系统的设计与实现(完整代码+界面+数据集项目)
深度学习·yolo·目标检测·日常场景下的人脸检测·yolov12·yolo全家桶
一休哥※11 小时前
YOLOv11改进系列 | 引入EMO ICCV2023的C3k2_iRMB模块,轻量注意力残差混合块增强C3k2,多尺度分割更稳更准
深度学习·yolo·计算机视觉
小超同学你好11 小时前
Transformer 27. Vision Transformer(ViT):把图像当作「词序列」的编码器
人工智能·深度学习·transformer
赋创小助手12 小时前
RTX PRO 6000 vs RTX 5090:从一组230B模型测试数据谈企业级推理选型
服务器·人工智能·科技·深度学习·自然语言处理