深度学习正则化:Dropout与BatchNorm
1. 正则化简介
正则化是深度学习中防止过拟合的重要技术,它通过在模型训练过程中引入一定的约束或噪声,提高模型的泛化能力。
核心概念
- 过拟合:模型在训练数据上表现良好,但在测试数据上表现较差
- 泛化能力:模型对未见数据的预测能力
- 正则化:通过各种技术限制模型复杂度,防止过拟合
- Dropout:随机失活神经元的正则化方法
- BatchNorm:批归一化,同时具有正则化效果
2. Dropout原理与实现
2.1 Dropout基本原理
Dropout是一种简单而有效的正则化技术,其基本思想是在训练过程中随机将一部分神经元的输出置为0,从而减少神经元之间的依赖关系。
工作原理:
- 在每次前向传播时,随机选择一部分神经元
- 将这些神经元的输出置为0
- 保持其他神经元的输出不变
- 在测试时,使用所有神经元,但将输出乘以 dropout 概率
2.2 Dropout的数学表达
假设 dropout 概率为 p (即每个神经元被保留的概率),则:
- 训练时: y = ext{dropout}(x) dot x ,其中 ext{dropout}(x) 是一个二进制掩码
- 测试时: y = p dot x
2.3 PyTorch实现
import torch import torch.nn as nn class DropoutNet(nn.Module): def __init__(self, input_size, hidden_size, output_size, dropout_prob=0.5