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

正则化(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.mzph.cn/news/892902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么在iPhone手机上使用便签进行记录?

宝子们,在这个快节奏的时代,灵感的火花总是一闪而过,待办事项也常常让人应接不暇。好在咱们的 iPhone手机便签超给力,能满足各种记录需求!今天就来给大家分享一下,如何在 iPhone 手机上巧用便签&#xff0c…

渗透测试之越权漏洞详解 水平越权 垂直越权 目录越权 SQL跨库查询越权 以及未授权漏洞 一篇文章说明白

目录 什么是越权 越权漏洞形成的原因是: 越权常见分类 漏洞产生条件 越权细分类 水平越权: 水平越权解释: 垂直越权: 垂直越权示例: 解释: 修复建议 例如 越权漏洞易发生的点 1.基础参数 2.多阶段验证 3.基于参数的访…

ANSYS Fluent学习笔记(七)求解器四部分

16.亚松弛因子 Controls面板里面设置,它能够稳定计算的过程。如果采用常规的迭代算法可能结果就会发生振荡的情况。采用亚松驰因子可以有助于残差的稳定。 他的取值范围是0-1,0代表没有亚松驰,1表示物理量变化很快,一般情况下取…

ComfyUI安装

项目地址:https://github.xyz/comfyanonymous/ComfyUI 下载地址(我下载时的最新版时v0.3.10):https://github.xyz/comfyanonymous/ComfyUI/releases/tag/v0.3.10 加速下载地址:https://bgithub.xyz/comfyanonymous/ComfyUI/releases/tag/v0…

《C++11》静态断言(Static Assert)的使用与优势

C11引入了许多新特性,其中之一就是静态断言(Static Assert)。这是一种在编译时期进行断言的机制,它可以帮助我们在编译阶段就发现错误,而不是等到运行时才发现。这样可以大大提高代码的质量和稳定性。本文将详细介绍静…

cv::moments

1、 代表所有像素值之和。 2、 代表所有像素值乘以该位置处的x坐标,然后再求和。 3、 代表所有像素值乘以该位置处的y坐标,然后再求和。 4、 5、

JavaScript-正则表达式方法(RegExp)

RegExp 对象用于将文本与一个模式匹配。 有两种方法可以创建一个 RegExp 对象:一种是字面量,另一种是构造函数。 字面量由斜杠 (/) 包围而不是引号包围。 构造函数的字符串参数由引号而不是斜杠包围。 new RegExp(pattern[, flags])一.符集合 1.选择…

Apache搭建https服务器

Apache搭建https服务器 REF: 使用OpenSSL自建一个HTTPS服务

从Arrays源码学习定义工具类

背景 在日常编码中,一个比较好的实践是:我们把一些业务无关的、可复用的一些通用逻辑,封装成工具类、甚至jar包。这样一方面方便通用代码抽取、代码复用,同时也隔离经常变动的业务代码和不变的通用代码。那如何定义好一个工具类呢…

w~Transformer~合集11

我自己的原文哦~ https://blog.51cto.com/whaosoft/12472192 #LightSeq 最高加速9倍!字节跳动开源8比特混合精度Transformer引擎,近年来,Transformer 已经成为了 NLP 和 CV 等领域的主流模型,但庞大的模型参数限制了它的高效训练和推理。…

【Rust自学】13.1. 闭包 Pt.1:什么是闭包、如何使用闭包

13.1.0. 写在正文之前 Rust语言在设计过程中收到了很多语言的启发,而函数式编程对Rust产生了非常显著的影响。函数式编程通常包括通过将函数作为值传递给参数、从其他函数返回它们、将它们分配给变量以供以后执行等等。 在本章中,我们会讨论 Rust 的一…

Linux服务器配置onnxruntime-gpu

本文实现 onnxruntime-gpu 不依赖于服务器主机上 cuda 和 cudnn,仅使用虚拟环境中的 cuda 依赖包实现 onnx GPU 推理加速的安装教程。为了适配推理节点,因此我们仅在 base 下配置环境,不需要重新创建新的虚拟环境。 升级 pip pip install -…

近红外简单ROI分析matlab(NIRS_SPM)

本次笔记主要想验证上篇近红外分析是否正确,因为叠加平均有不同的计算方法,一种是直接将每个通道的5分钟实时长单独进行叠加平均,另一种是将通道划分为1分钟的片段,将感兴趣的通道数据进行对应叠加平均,得到一个总平均…

G1原理—5.G1垃圾回收过程之Mixed GC

大纲 1.Mixed GC混合回收是什么 2.YGC可作为Mixed GC的初始标记阶段 3.Mixed GC并发标记算法详解(一) 4.Mixed GC并发标记算法详解(二) 5.Mixed GC并发标记算法详解(三) 6.并发标记的三色标记法 7.三色标记法如何解决错标漏标问题 8.SATB如何解决错标漏标问题 9.重新梳…

npm发布工具包+使用

1.初始化package包 npm init -y {"name": "common-cjs-tools","version": "1.0.0","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" &&…

C# Web 开发:ASP.NET Core 从入门到实战

ASP.NET Core 是一个开源、跨平台、高性能的 Web 框架,适用于构建现代 Web 应用和 API。它不仅支持传统的 Web 应用开发,还支持 RESTful API、实时应用、微服务等架构。与传统的 ASP.NET 框架相比,ASP.NET Core 更加轻量级、模块化&#xff0…

http转化为https生成自签名证书

背景 项目开发阶段前后交互采用http协议,演示环境采用htttps协议 ,此处为个人demo案例 组件 后端:springBoot 前端:vue web 服务:tomcat 部署环境:linux 生成自签名证书 创建目录 存储证书位置 # mkdir -p…

【初阶数据结构】序列系统重构:顺序表

文章目录 1.线性表2.顺序表2.1 概念及结构2.1.1 静态顺序表2.2.2 动态顺序表 2.2 接口实现2.2.1 顺序表打印2.2.2 顺序表初始化2.2.3 顺序表销毁2.2.4 顺序表容量检查2.2.5 顺序表尾插2.2.6 顺序表头插2.2.7 顺序表尾删2.2.8 顺序表头删2.2.9 顺序表在pos位置插入x2.2.10 顺序表…

AI 编程工具—Cursor进阶使用 阅读开源项目

AI 编程工具—Cursor进阶使用 阅读开源项目 首先我们打开一个最近很火的项目browser-use ,直接从github 上克隆即可 索引整个代码库 这里我们使用@Codebase 这个选项会索引这个代码库,然后我们再选上这个项目的README.md 文件开始提问 @Codebase @README.md 这个项目是用…

MyBatis-XML映射配置

引言 在 Mybatis 中,既可以通过注解配置 SQL 语句,也可以通过 XML 配置文件配置 SQL 语句。默认规则: 1. XML 映射文件的名称与 Mapper 接口名称一致,并且将 XML 映射文件和 Mapper 接口放置在相同包下 (同包同名&…