【深度学习】关键技术-正则化(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表示物理量变化很快,一般情况下取…

CSS样式justify-content: space-between;详细解读

含义:当使用 justify-content: space-between; 时,弹性容器中的项目会沿着主轴分布,第一个项目会靠向主轴起点,最后一个项目会靠向主轴终点,而项目之间的间隔会平均分配剩余的空间。效果示例: 假设我们有一…

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…

《Java开发手册》核心内容

文章目录 引言I 编程规约II 异常日志III 单元测试 :IV 安全规约 :V MySQL数据库:VI 工程结构 :VII 设计规约 :引言 手册的愿景是提升代码质量和开发效率,通过规范化的编码实践来减少错误和提高系统的稳定性。 I 编程规约 命名风格:规定了命名的一致性和规范性,避免使…

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

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

cv::moments

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

Dart语言的数据结构

Dart语言中的数据结构探讨 引言 Dart是一种现代化的编程语言,主要用于构建移动应用、Web应用和服务端应用。随着应用程序的复杂性日益增加,选择合适的数据结构显得尤为重要。数据结构不仅影响程序的性能,也影响程序的可维护性和可扩展性。本…

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

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

如何解决Outlook无法连接到服务器的问题

Microsoft Outlook 是一款广泛使用的电子邮件客户端,它能够帮助用户高效地管理邮箱、日历和任务。然而,尽管其功能强大,用户有时会遇到“Outlook无法连接到服务器”的问题。这种问题通常会让用户无法接收或发送电子邮件,甚至可能导…

CSS 元素的显示模式(块元素,行内元素,行内块元素)

一. 块元素(block) 又称:块级元素 特点: 1. 在页面中独占一行,不会与任何元素共用一行,是从上到下排列的。 2. 默认宽度:撑满父元素。 3. 默认高度:由内容撑开。 4. 可以通过 CSS 设…

Apache搭建https服务器

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

线上工单引发的思考:Spring Boot 中 @Autowired 与 @Resource 的区别

最近接手了离职同事负责的业务,在处理一个线上工单的时候,看了下历史逻辑,在阅读他们写的代码时,发现他们竟然把Autowired和Resource注解混用。今天就借此机会聊聊SpringBoot项目中这两者之间的区别。 1. 注解来源 Autowired&am…

React 第三方状态管理库相关 -- Redux MobX 篇

一、redux 首先安装依赖: npm install redux react-redux reduxjs/toolkit 示例代码: // src/store/index.js import { configureStore } from reduxjs/toolkit import couterSlice from ./couterSliceconst store configureStore({reducer:{coute…

从Arrays源码学习定义工具类

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

spark,读取和写入同一张表问题

读取a表,写入a表 1.写入的是分区表,不报错 2.读取上来之后,创建为临时视图temp,然后先写入a表,再使用temp,就会报错 解决办法:可以先使用temp,再写入a表 3.写入的不是分区表&…

工作记录小点

postman问题 postman 返回404 可以先看看这个模块是否集成到pom文件中 postman 返回200不调debug 请求参数Json有错误请求方式不对Get/Post debug报错连接失败 host文件没copy同事的 2.对应组件的不同服务白名单没添加导致的 host文件刷新 进入 C:\windows\system32\drivers\e…

GaussDB中的Vacuum和Analyze

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

w~Transformer~合集11

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