【深度学习】关键技术-正则化(Regularization)

server/2025/1/17 14:12:36/

正则化(Regularization) 是一种用于防止模型过拟合的技术。它通过在损失函数中添加额外的约束项,限制模型的复杂度,从而提高模型的泛化能力。


正则化的主要作用

  1. 防止过拟合:通过抑制模型对训练数据的过度拟合,提升对未见数据的预测能力。
  2. 控制模型复杂度:约束模型参数的大小,避免模型过于灵活。
  3. 提高稳定性:减少模型对输入噪声的敏感性。

常见的正则化方法

1. L1 正则化
  • 在损失函数中添加权重绝对值的和。
  • 正则项:

    \text{Regularization Term} = \lambda \sum |w_i|
  • 特点:倾向于使一些权重变为零,具有稀疏性,适合特征选择。
2. L2 正则化
  • 在损失函数中添加权重平方和。
  • 正则项:

    \text{Regularization Term} = \lambda \sum w_i^2
  • 特点:限制权重大小,但不会将权重直接设为零。
3. Elastic Net 正则化
  • 综合 L1 和 L2 正则化:

    \text{Regularization Term} = \lambda_1 \sum |w_i| + \lambda_2 \sum w_i^2
  • 特点:结合了 L1 的稀疏性和 L2 的稳定性。
4. Dropout
  • 在每次训练中随机忽略一定比例的神经元,使模型更具鲁棒性。
  • 特点:通过减少神经元之间的依赖,降低过拟合风险。
5. Early Stopping
  • 在训练过程中监控验证集的损失,当验证集性能开始下降时提前停止训练。
  • 特点:不需要显式正则化项,依赖于训练动态。
6. 数据增强
  • 虽然不直接添加正则项,但通过对训练数据的扩充(如翻转、旋转、裁剪),提升模型的泛化能力。
7. Batch Normalization
  • 在每一层输入上进行标准化,并引入可学习参数重新调整数据分布。
  • 特点:间接起到正则化的效果,同时加速训练。

正则化的损失函数公式

对于一个带正则化的模型,损失函数通常为:

\text{Loss} = \text{Original Loss} + \text{Regularization Term}

例如:

  • L1 正则化:

    \text{Loss} = \text{MSE} + \lambda \sum |w_i|
  • L2 正则化:

    \text{Loss} = \text{MSE} + \lambda \sum w_i^2

代码示例

以下是使用 L2 正则化和 Dropout 的代码示例:

L2 正则化
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.regularizers import l2# 创建模型
model = Sequential([Dense(64, activation='relu', kernel_regularizer=l2(0.01), input_shape=(100,)),Dense(64, activation='relu', kernel_regularizer=l2(0.01)),Dense(1, activation='sigmoid')
])# 编译模型
model.compile(optimizer='adam', loss='binary_crossentropy')

Dropout

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout# 创建模型
model = Sequential([Dense(64, activation='relu', input_shape=(100,)),Dropout(0.5),  # Dropout 层,随机忽略 50% 的神经元Dense(64, activation='relu'),Dropout(0.5),Dense(1, activation='sigmoid')
])# 编译模型
model.compile(optimizer='adam', loss='binary_crossentropy')

正则化的选取建议

  1. 数据量较少时:尝试 L2 正则化和 Dropout。
  2. 特征较多时:尝试 L1 正则化以实现特征选择。
  3. 避免过早停止:结合 Early Stopping 监控验证集性能。
  4. 复杂网络:使用 Dropout 和 Batch Normalization。

正则化的参数(如 \lambda 和 Dropout 比例)需要通过实验和交叉验证来选择。


http://www.ppmy.cn/server/159104.html

相关文章

【遥感目标检测】【数据集】DOTA:用于航空图像中目标检测的大规模数据集

DOTA:A large-scale dataset for object detection in aerial images DOTA:用于航空图像中目标检测的大规模数据集 CVPR 2018 论文地址 数据集地址 0.论文摘要 目标检测是计算机视觉中一个重要而富有挑战性的问题。尽管过去十年见证了自然场景中目标检测的重大进展…

aws(学习笔记第二十四课) 使用sam开发step functions

aws(学习笔记第二十四课) 使用sam开发step functions 学习内容: 生成sam的step functions实例程序什么是SAM amazon Serverless Application ModelSAM程序结构SAM执行程序 1. 生成sam的step functions实例程序 参照文档 这里参照AWS的官方文档SAM amazon Serverl…

Windows图形界面(GUI)-QT-C/C++ - Qt控件与布局系统详解

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 目录 Qt布局系统(Layouts) 布局管理器基础 高级布局技巧 嵌套布局 设置间距和边距 常用控件详解 按钮类控件 QPushButton (标准按钮) QRadioButton (单选按钮) QCheckBox (复选框) …

GaussDB中的Vacuum和Analyze

GaussDB中的Vacuum和Analyze 基本概念与区别手动Vacuum和Analyze查看Vacuum和Analyze记录Autovacuum配置参数 基本概念与区别 使用VACUUM、VACUUM FULL和ANALYZE命令定期对每个表进行维护,主要有以下原因: VACUUM FULL可回收已更新或已删除的数据所占据…

日拱一卒(20)——leetcode学习记录:大小为 K 且平均值大于等于阈值的子数组数目

一、题目 给定数组,统计数组中长度为k的子数组且该子数组的平均值大于threshold的数量 二、思路 滑动窗思路,计算长度为k的滑动窗的平均值,关键点在于,每滑动一次,只需要去掉头增加尾,而不需要重新全部计…

vue运用uniapp框架开发企业微信小程序中常用的一些基础方法

嗨,我是小路。今天主要和大家分享的主题是“vue运用uniapp框架开发企业微信小程序中常用的一些基础方法”。 作为一名程序员,很多代码都是忘了再用,用了再忘。 今天梳理下日常开发中常用到的一些基础的方法,以方便后期开…

2Hive表类型

2Hive表类型 1 Hive 数据类型2 Hive 内部表3 Hive 外部表4 Hive 分区表5 Hive 分桶表6 Hive 视图 1 Hive 数据类型 Hive的基本数据类型有:TINYINT,SAMLLINT,INT,BIGINT,BOOLEAN,FLOAT,DOUBLE&a…

利用 rclone 挂载华为云 OBS 到本地

利用 rclone 挂载华为云 OBS 到本地 作者:Maki 日期:2025年01月14日 前言 通过 rclone 可以将华为云 OBS 挂载到本地目录或盘符,直接使用文件管理器或编辑器对其操作。本文将详细介绍从下载安装到挂载的完整步骤,支持 Windows …