6.Dropout


整理自视频 老袁不说话

6.Dropout

Dropout:暂退法
欠拟合:无论训练集还是测试集,模型误差都很大
过拟合:在训练集上误差很小,在测试集上误差很大
在这里插入图片描述
正则化方法:为了解决过拟合提出的方法。
Dropout:其中一种正则化方法。过拟合之所以产生,是因为模型对于噪声没有适应性,对噪声太敏感,微小的噪声都可以让模型产生很大的误差。正则化方法还有L1范数,L2范数,BatchNormal,LayerNormal等。
一个好的AI模型,应该对微小的噪声不敏感,对噪声有适应性。
解决方法:向模型中添加噪声,是向中间值添加噪声。
实现公式:以概率 p p p 舍弃值,剩下的给原数值除以 1 − p 1-p 1p h ′ = { 0 p h 1 − p 1 − p h^{\prime}=\left\{\begin{array}{ccc}0&&p\\\frac{h}{1-p}&&1-p\end{array}\right. h={01php1p
实现办法,随机舍弃一些值。

代码

import torch
from torch import nn

dropout=nn.Dropout(0.1) # 概率p,0.1
inputs=torch.randn(10000,dtype=torch.float)
outputs=dropout(inputs) # forward
print((outputs==0).sum().item()) # 大约有10000*p个数字为0

Dropout已经称为AI中非常常见的技术,在各种模块之后通常都会添加dropout。

正则化方法

正则化(Regularization)方法是机器学习中用于防止过拟合、提高模型泛化能力的技术,主要通过在损失函数中添加约束项在训练过程中引入限制来实现。以下是常见的正则化方法分类及说明:

1. L1 和 L2 正则化

  • L1 正则化(Lasso)

    • 在损失函数中添加权重的绝对值之和:( λ ∑ ∣ w i ∣ \lambda\sum|w_i| λwi)
    • 作用:倾向于产生稀疏权重矩阵,适合特征选择(部分权重变为0)。
    • 适用场景:高维数据、特征数量远大于样本数时。
  • L2 正则化(Ridge)

    • 在损失函数中添加权重的平方和:( λ ∑ w i 2 \lambda \sum w_i^2 λwi2)
    • 作用:使权重整体缩小,但不会完全为0,提高稳定性。
    • 适用场景:通用性强,尤其适用于特征间相关性高的数据。
  • 弹性网络(Elastic Net)

    • 结合L1和L2正则化:( λ 1 ∑ ∣ w i ∣ + λ 2 ∑ w i 2 \lambda_1 \sum |w_i| + \lambda_2 \sum w_i^2 λ1wi+λ2wi2)
    • 平衡稀疏性和稳定性,适用于特征数量极多且存在共线性的情况。

2. Dropout

  • 原理:在神经网络训练中,随机丢弃(置零)一部分神经元的输出。
  • 作用:打破神经元间的依赖,防止过拟合,类似模型集成(Ensemble)。
  • 注意:仅在训练时使用,测试时需要调整输出(如乘以保留概率)。

3. 早停(Early Stopping)

  • 原理:在训练过程中监控验证集性能,当性能不再提升时提前终止训练。
  • 作用:避免模型在训练集上过度优化(过拟合)。
  • 优点:简单高效,无需修改损失函数。

4. 数据增强(Data Augmentation)

  • 原理:通过人工扩展训练数据(如旋转、平移图像,添加噪声等)。
  • 作用:增加数据多样性,等效于隐式正则化。
  • 典型应用:计算机视觉(CV)、自然语言处理(NLP)中的文本替换/回译。

5. 批量归一化(Batch Normalization)

  • 原理:对每一层的输入进行标准化(均值为0,方差为1)。
  • 间接作用:减少内部协变量偏移(Internal Covariate Shift),允许更大的学习率,从而隐式正则化模型。

6. 权重衰减(Weight Decay)

  • 本质:等价于L2正则化,通过优化器(如SGD)在每一步更新时对权重施加惩罚。
  • 公式:( w t + 1 = w t − η ( ∇ L + λ w t ) w_{t+1} = w_t - \eta (\nabla L + \lambda w_t) wt+1=wtη(L+λwt))。

7. 标签平滑(Label Smoothing)

  • 原理:将硬标签(如0或1)替换为软标签(如0.1和0.9)。
  • 作用:防止模型对训练标签过度自信,提升泛化能力。

8. 其他方法

  • 参数共享:如卷积神经网络(CNN)中的卷积核共享,减少参数量。
  • 噪声注入:在输入、权重或梯度中添加随机噪声(类似数据增强)。
  • 稀疏性约束:如对激活函数施加L1惩罚(如稀疏自编码器)。

选择建议

  • 神经网络:常用Dropout、批量归一化、早停。
  • 线性模型:L1/L2正则化或弹性网络。
  • 数据不足时:数据增强或标签平滑。

不同方法可组合使用(如L2正则化+Dropout),具体需根据任务和模型调整超参数(如正则化系数λ)。

LayerNorm归一化

彻底搞懂:Batch Norm, Layer Norm, Instance Norm & Group Norm
Layer Normalization(LayerNorm) 本身并不是一种典型的正则化方法,但它能通过稳定训练过程间接起到类似正则化的效果,尤其是在深层神经网络中。LayerNorm 不是严格意义上的正则化方法,但它通过标准化层输入改善模型训练,间接影响了泛化能力。若需显式正则化,仍需结合Dropout、L2权重衰减等方法。以下是详细分析:

1. LayerNorm 的核心作用

  • 功能:对神经网络中某一层的输入进行标准化(按特征维度进行,区别于BatchNorm的按批次标准化),使其均值为0、方差为1。

  • 公式
    输出 = γ ⋅ x − μ σ 2 + ϵ + β \text{输出} = \gamma \cdot \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} + \beta 输出=γσ2+ϵ xμ+β
    其中 μ \mu μ σ \sigma σ 是当前层输入的均值和标准差, γ \gamma γ β \beta β 是可学习的缩放和偏移参数。

  • 主要目的

    • 缓解内部协变量偏移(Internal Covariate Shift),加速训练收敛。
    • 对小批量数据(如RNN/Transformer)更鲁棒,不依赖批量大小(与BatchNorm不同)。

2. 与正则化的关联

虽然LayerNorm的设计初衷不是直接防止过拟合,但它可能间接带来正则化效果

  1. 梯度稳定性:通过标准化激活值,避免梯度爆炸/消失,使优化过程更平滑,类似早停或权重衰减的作用。
  2. 隐式约束:对层输入的分布进行约束,可能限制模型的自由度(类似L2正则化对权重的约束)。
  3. 与Dropout的协同:在Transformer等模型中,LayerNorm常与Dropout共用,进一步防止过拟合。

3. 与典型正则化的区别

特性LayerNorm经典正则化(如L2/Dropout)
主要目标稳定训练过程显式防止过拟合
实现方式标准化层输入修改损失函数或随机丢弃单元
是否依赖超参数依赖缩放参数(\gamma)依赖正则化系数(\lambda)或丢弃率

4. 典型应用场景

  • Transformer 模型:LayerNorm是核心组件(如每个子层后应用),对训练稳定性至关重要。
  • RNN/LSTM:解决长序列训练中的梯度问题。
  • 小批量或在线学习:当BatchNorm不适用时(因依赖大批次统计量)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值