[二十一]深度学习Pytorch-正则化Regularization之weight decay

0. 往期内容

[一]深度学习Pytorch-张量定义与张量创建

[二]深度学习Pytorch-张量的操作:拼接、切分、索引和变换

[三]深度学习Pytorch-张量数学运算

[四]深度学习Pytorch-线性回归

[五]深度学习Pytorch-计算图与动态图机制

[六]深度学习Pytorch-autograd与逻辑回归

[七]深度学习Pytorch-DataLoader与Dataset(含人民币二分类实战)

[八]深度学习Pytorch-图像预处理transforms

[九]深度学习Pytorch-transforms图像增强(剪裁、翻转、旋转)

[十]深度学习Pytorch-transforms图像操作及自定义方法

[十一]深度学习Pytorch-模型创建与nn.Module

[十二]深度学习Pytorch-模型容器与AlexNet构建

[十三]深度学习Pytorch-卷积层(1D/2D/3D卷积、卷积nn.Conv2d、转置卷积nn.ConvTranspose)

[十四]深度学习Pytorch-池化层、线性层、激活函数层

[十五]深度学习Pytorch-权值初始化

[十六]深度学习Pytorch-18种损失函数loss function

[十七]深度学习Pytorch-优化器Optimizer

[十八]深度学习Pytorch-学习率Learning Rate调整策略

[十九]深度学习Pytorch-可视化工具TensorBoard

[二十]深度学习Pytorch-Hook函数与CAM算法

[二十一]深度学习Pytorch-正则化Regularization之weight decay

深度学习Pytorch-正则化Regularization之weight decay

1. 正则化Regularization定义

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

正则化降低方差,解决过拟合问题。
在这里插入图片描述在这里插入图片描述

2. L2 Regularization=weight decay

在这里插入图片描述
lamda是超参数,用于调和loss与正则项之间的比例。

在这里插入图片描述

3. 代码示例

# -*- coding:utf-8 -*-
"""
@file name  : L2_regularization.py
@brief      : weight decay使用实验
"""
import torch
import torch.nn as nn
import matplotlib.pyplot as plt
from tools.common_tools import set_seed
from torch.utils.tensorboard import SummaryWriter

set_seed(1)  # 设置随机种子
n_hidden = 200
max_iter = 2000
disp_interval = 200
lr_init = 0.01


# ============================ step 1/5 数据 ============================
def gen_data(num_data=10, x_range=(-1
### 深度学习中的正则化 #### 正则化的定义 正则化是一种用于减少模型过拟合的技术,在深度学习中通过引入额外的信息或约束条件,使得模型更加简单并具有更好的泛化性能。它主要通过对损失函数增加惩罚项的方式实现,从而抑制模型参数的过度增长。 #### 常见的正则化方法及其作用 1. **L1 正则化** L1 正则化通过对权重向量的绝对值之和施加惩罚来简化模型结构。其核心在于促使部分权重变为零,从而使模型更稀疏[^2]。这种特性对于特征选择非常有用,因为它可以自动忽略那些不重要的输入特征。 数学表达式如下: \[ J(w) = Loss + \lambda \|w\|_1 \] 2. **L2 正则化 (Ridge Regression)** L2 正则化则是通过对权重平方和进行惩罚,使所有权重都趋向于较小数值而非完全为零。这种方法能够有效平滑权重分布,避免某些权值过大而导致模型不稳定的情况发生。 表达形式为: \[ J(w) = Loss + \frac{\lambda}{2} \|w\|_2^2 \] 3. **Dropout 技术** Dropout 是一种专门针对神经网络设计的独特正则化手段。在训练过程中随机丢弃一部分节点(即让这些节点暂时失效),以此模拟多个子网络的同时工作状态。最终预测时采用整个网络作为平均效果输出。这种方式不仅降低了各层之间可能存在的依赖关系,还显著增强了系统的鲁棒性和抗干扰能力。 4. **Early Stopping 提前终止法** Early stopping 并不属于严格意义上的正则化策略,但它确实可以通过监控验证集误差变化趋势及时停止迭代过程达到类似目的——既防止因长时间优化而陷入局部最优解又保持了一定程度上的简洁性[^1]。 以下是基于 PyTorch 的一个简单的 L2 正则化代码实例: ```python import torch from torch import nn, optim class SimpleModel(nn.Module): def __init__(self): super(SimpleModel, self).__init__() self.fc = nn.Linear(10, 1) model = SimpleModel() criterion = nn.MSELoss() optimizer = optim.SGD(model.parameters(), lr=0.01, weight_decay=0.001) # 设置weight decay即实现了L2 regularization for epoch in range(num_epochs): outputs = model(inputs) loss = criterion(outputs, targets) optimizer.zero_grad() loss.backward() optimizer.step() ``` 上述代码片段展示了如何利用 `torch.optim` 中的 `SGD` 类内置选项轻松完成带有 L2 正则化的梯度下降操作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值