常见的正则化方法以及L1,L2正则化的简单描述
深度学习中的正则化是通过在模型训练过程中引入某些技术来防止模型过拟合的一种策略。过拟合是指模型在训练数据上表现非常好,但在新的、未见过的数据上表现不佳。正则化通过限制模型的复杂度或对模型参数施加约束,从而提高模型的泛化能力。
常见的正则化技术包括:
-
L1正则化(Lasso)和L2正则化(Ridge):
- L1正则化:通过对损失函数中添加参数的绝对值来抑制模型的某些权重,从而使某些权重归零。这种方法有助于特征选择。
- L2正则化:通过对损失函数中添加参数的平方和来抑制过大的权重,从而使模型更平滑。
-
Dropout: Dropout是一种在训练期间随机“丢弃”一部分神经元,使其不参与计算的技术。通过这种方式,网络避免了过度依赖某些神经元,从而增强了模型的泛化能力。
-
数据增强: 数据增强通过对原始训练数据进行随机变换(如旋转、裁剪、缩放等)来扩充训练集的多样性,减少模型对某些特定数据的依赖。
-
早停法(Early Stopping): 早停法是在训练过程中监测验证集的性能,当验证误差开始增加时停止训练。这避免了模型继续拟合训练集中的噪声或细节,防止过拟合。
-
Batch Normalization: 通过对每一批输入的数据进行归一化,Batch Normalization能使得模型训练更加稳定,并有助于防止过拟合。
通过这些正则化方法,可以有效地提升模型的泛化能
L1正则化(Lasso)和L2正则化(Ridge)是深度学习和机器学习中常用的正则化技术,主要用于防止模型过拟合。它们通过在损失函数中添加惩罚项,对模型参数施加一定的约束,减少模型复杂度。以下是它们的详细介绍:
1. L1正则化(Lasso)
L1正则化通过在损失函数中添加权重系数的绝对值和来实现正则化,即在损失函数中加上如下项:

-
作用:L1正则化倾向于将某些权重系数压缩为零,从而实现特征选择。通过这种方式,模型可以简化为只使用重要的特征,而不依赖无关的或多余的特征。
-
优点:L1正则化适合处理高维数据集,因为它可以通过将不重要的特征权重设为零,进行自动特征选择。
-
应用场景:在高维数据集或特征较多的情况下,L1正则化非常有用,因为它能够使得模型更具解释性,并降低计算复杂度。
2. L2正则化(Ridge)
L2正则化通过在损失函数中添加权重系数的平方和来实现正则化,即在损失函数中加上如下项:

-
作用:L2正则化不会将权重系数压缩为零,但会均匀地缩小所有权重的大小。它通过限制权重的幅度,防止模型对某些特定特征的过度依赖,从而减少过拟合的风险。
-
优点:L2正则化适合那些特征较多且特征之间存在相关性的情况,它能确保所有特征都对模型的预测有一定的贡献,并使模型更加平滑。
-
应用场景:L2正则化更适合用于特征之间存在多重共线性的问题。因为它不会完全忽略特征,而是对权重进行均匀的缩放,从而使模型更加稳健。
L1和L2的主要区别:
-
权重处理:
- L1正则化更倾向于产生稀疏模型,许多权重被压缩为零,进行特征选择。
- L2正则化则缩小权重的数值,但通常不会使它们完全为零。
-
模型简化:
- L1正则化可以自动简化模型,保留对结果最有用的特征。
- L2正则化则通过平滑权重来防止模型过拟合,而不会丢弃特征。
-
公式差异:
- L1正则化的惩罚项是权重绝对值的和。
- L2正则化的惩罚项是权重平方的和。
在实际应用中,可以根据数据集的特征和问题类型来选择使用L1或L2正则化,有时也会结合两者(Elastic Net)以兼具稀疏性和稳定性。
力,使其在新数据上的表现更加稳健。
举个例子大家就明白了
假设我们在做线性回归,模型的目标是预测房屋价格。输入特征是房屋的面积(平方英尺)和房间数量,输出是房价。模型的基本形式如下:

其中:
- y^\hat{y}y^ 是预测的房价
- x1x_1x1 是房屋的面积
- x2x_2x2 是房间数量
- w1w_1w1 和 w2w_2w2 是模型的参数(权重)
- bbb 是偏置(截距)
我们希望通过最小化预测值 y^\hat{y}y^ 和真实房价之间的误差来找到最优的 w1w2。损失函数一般是误差的平方和,称为均方误差(MSE):

引入正则化:
如果模型的权重太大,可能会导致过拟合。为了避免过拟合,我们可以在损失函数中加入正则化项,即对 w1w_1w1 和 w2w_2w2 的大小进行约束。
1. L1 正则化(Lasso):
L1 正则化的目标是将一些不重要的特征权重压缩到零,这样模型会变得更简单。L1 正则化的损失函数如下:

- 理解:L1 正则化会对每个权重的绝对值进行惩罚,假如 w1 或 w2太大,模型会通过增大损失值的方式“惩罚”它们,逼迫权重缩小甚至压缩为 0。
2. L2 正则化(Ridge):
L2 正则化通过将权重的平方和添加到损失函数中来抑制大权重。L2 正则化的损失函数如下:

- 理解:L2 正则化则会对权重的平方进行惩罚,虽然不会将权重压缩为 0,但会让它们变得更小、更平滑。模型会倾向于分散权重,使它们不会太大。
计算示例:
假设我们有以下简单的数据:
| 面积 (平方英尺) x1x_1x1 | 房间数量 x2x_2x2 | 实际房价 yyy |
|---|---|---|
| 1000 | 3 | 300000 |
| 1200 | 4 | 350000 |
| 1500 | 5 | 400000 |
假设我们有一个初始模型 w1=200w_1 = 200w1=200、w2=10000w_2 = 10000w2=10000,现在计算 L1 和 L2 正则化对模型的影响。
1. 没有正则化(普通线性回归):

总结:
- L1 正则化通过让一些权重趋向于零,从而减少不必要的特征,简化模型。
- L2 正则化通过让权重整体变小,避免某些权重过大,从而减少过拟合的风险。
在实际应用中,L1 更适合做特征选择,而 L2 更适合处理权重过大的问题。有时我们可以结合两者的优势,使用 Elastic Net 正则化,兼具稀疏性和权重缩小的效果。
L1 正则化对每个权重 www 的更新,在原有的梯度更新基础上,施加了一个与权重符号相关的减小量。简单来说,L1 正则化的惩罚项是权重 www 的绝对值,因此对不同符号的权重,影响也不同。具体来说:
在没有正则化的情况下,权重更新的规则是根据梯度来调整,即:

而当加入 L1 正则化时,权重的更新规则会增加一个正则化项:

这意味着,对于正的权重,L1 正则化会让权重减少(施加一个负的额外项),对于负的权重,L1 正则化会让权重增加(施加一个正的额外项),从而将权重的数值逐渐压缩向 0。
总结来说,L1 正则化通过在每次更新时,根据权重的符号施加一个固定大小的惩罚,这使得较小的权重更容易被压缩到 0,从而产生稀疏的特征选择效果。
L2 正则化的更新机制
L2 正则化会将损失函数中加入权重的平方项作为惩罚项。对于每个权重 www,L2 正则化的更新规则是:

可以看到,L2 正则化对每个权重的更新,施加了一个额外的 λ⋅w\lambda \cdot wλ⋅w 项,这个额外项是根据权重的大小和方向(正负号)调整的。具体来说:
因此,L2 正则化是根据权重的大小比例减少权重值的,而不是像 L1 正则化那样施加一个固定的惩罚。L2 正则化使所有的权重都被缩小,但不会把某些权重压缩到 0,这意味着模型不会变得稀疏。
总结 L1 和 L2 的区别
- L1 正则化 会施加一个与权重符号相关的固定减小量,逐步将较小的权重压缩到 0,产生稀疏效果。
- L2 正则化 施加的是与权重大小成比例的减小量,会让权重整体减小,但不会让权重变为 0,更多地是让权重的值变小,起到平滑模型的作用。
因此,虽然 L2 正则化也会对每个权重施加惩罚,但它不会产生稀疏性,而是通过减小权重的幅度来控制模型复杂度。
相关文章:
常见的正则化方法以及L1,L2正则化的简单描述
深度学习中的正则化是通过在模型训练过程中引入某些技术来防止模型过拟合的一种策略。过拟合是指模型在训练数据上表现非常好,但在新的、未见过的数据上表现不佳。正则化通过限制模型的复杂度或对模型参数施加约束,从而提高模型的泛化能力。 常见的正则…...
深入理解 Milvus:新一代向量数据库的基础技术与实战指南
一、什么是 Milvus? Milvus 是一个开源的向量数据库,专门设计用于存储和检索大规模的高维向量数据。无论是图像、视频、音频还是文本,通过将这些数据转换为向量,Milvus 都能通过近似最近邻搜索(Approximate Nearest N…...
Maven教程——从入门到入坑
第1章 为什么要使用Maven 1.1 获取第三方jar包 开发中需要使用到的jar包种类繁多,获取jar包的方式都不尽相同。为了查找一个jar包找遍互联网,身心俱疲。不仅如此,费劲心血找到的jar包里有的时候并没有你需要的那个类,又或者有…...
研究生深度学习入门的十天学习计划------第九天
第9天:深度学习中的迁移学习与模型微调 目标: 理解迁移学习的核心概念,学习如何在实际应用中对预训练模型进行迁移和微调,以应对不同领域的任务。 9.1 什么是迁移学习? 迁移学习(Transfer Learning&#…...
perl的学习记录——仿真regression
1 记录的背景 之前只知道有这个强大语言的存在,但一直侥幸自己应该不会用到它,所以一直没有开始学习。然而人生这么长,怎就确定自己不会用到呢? 这次要搭建一个可以自动跑完所有case并且打印每个case的pass信息到指定的文件中。…...
【Go】go连接clickhouse使用TCP协议
离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么 🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time&q…...
Emlog-Pro访问网站时需要密码验证插件
插件介绍 EmlogPro访问网站密码验证插件,为你的网站添加输入密码访问网站功能,在应用中的场景往往运用在为内部或是个人使用的页面里面,在访问的时候可以提示输入密码,做隐私保护。 下载地址: Emlog-Pro访问网站时需…...
Apache ShardingSphere数据分片弹性伸缩加解密中间件
Apache ShardingSphere Apache ShardingSphere 是一款分布式 SQL 事务和查询引擎,可通过数据分片、弹性伸缩、加密等能力对任意数据库进行增强。 软件背景 ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding…...
Django+Vue家居全屋定制系统的设计与实现
目录 1 项目介绍2 项目截图3 核心代码3.1 需要的环境3.2 Django接口层3.3 实体类3.4 config.ini3.5 启动类3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质创作者&…...
如何把自动获取的ip地址固定
在大多数网络环境中,设备通常会自动从DHCP服务器获取IP地址。这种动态分配IP的方式虽然灵活方便,但在某些特定场景下,我们可能需要将设备的IP地址固定下来,以确保网络连接的稳定性和可访问性。本文将详细介绍如何把自…...
Java应用的数据库死锁问题分析与解决
Java应用的数据库死锁问题分析与解决 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 数据库死锁是多线程环境中常见的问题,尤其是在复杂的事务处理和数据访问中。死锁发生时&#x…...
ImportError: cannot import name ‘DglNodePropPredDataset‘ from ‘ogb.nodepropp
ImportError: cannot import name DglNodePropPredDataset from ogb.nodepropp 问题: 在跑深度学习时引入这个模块一直报错不能引入, 但看环境相关的包都安装好了,就是读取不到,时间还白白浪费。 解决办法 from ogb.nodeproppr…...
基于SSM(Spring、SpringMVC、MyBatis)框架的高校信息管理系统
基于SSM(Spring、SpringMVC、MyBatis)框架的高校信息管理系统是一个典型的Java Web应用开发项目。这类系统通常需要处理大量的学生、教师及课程信息,并提供相应的管理功能。下面是一个简化的设计方案,旨在帮助你理解如何构建这样的…...
C++第一节入门
一、历史 C是在C上继承拓展的! java是一家公司(甲骨文)借鉴C生成的! C#是微软借鉴java生成的! 二、命名空间 当我们定义一个名叫rand的变量,但是由于stdlib头文件里面有个函数跟rand重名!因此…...
全能型 AI 的崛起:未来的市场宠儿还是昙花一现?
近日,OpenAI 宣布将在秋季推出代号为“草莓”的新一代 AI 模型。这款 AI 被描述为全能型,从处理复杂的数学问题到应对主观性强的营销策略,它的能力可以覆盖多个领域。听起来像是科技界的“万能钥匙”,无论面对什么问题,…...
如何在PPT中插入已经绘制好的excel表格数据
1、新建一个演示文稿 2、点击“插入—对象” 3、点击“由文件创建—浏览” 4、浏览选择电脑上所处理好的excel表格数据 5、这样就可将excel表格数据插入PPT中...
微积分直觉:隐含微分
目录 一、介绍 二、梯子问题 三、结论 四、一个额外的例子 一、介绍 让我们想象一个半径为 5 的圆,以 xy 平面为中心。现在假设我们想在点 (3,4) 处找到一条切线到圆的斜率。 好吧,为了做到这一点,我们必须非常接近圆和…...
Matlab自学笔记三十五:表table数据与外部文件的读入和写出
1.首先新建一个表变量t xingming{zhangsan;lisi;wangwu}; xuehao{1001;1002;1003}; chengji[89 95;90 87;88 84]; ttable(xingming,xuehao,chengji) 2.把表t的数据写出到student.txt writetable(t,student.txt) %使用writetable函数写出数据到txt文件 3.从student.txt文…...
闯关leetcode——3.Longest Substring Without Repeating Characters
大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/longest-substring-without-repeating-characters/description/ 内容 Given a string s, find the length of the longest substring without repeating characters. Example 1: Input: s “abc…...
Android Radio2.0——公告注册及监听(三)
前面文章内容介绍了 Radio 相关功能的设置,我们知道可以通过设置来监听不同内容的广播公告,但是在开启对应功能的同时,还需要先注册对应公告监听,这里我们就来看一下广播公告监听的注册流程。 一、注册公告 1、接口封装 private final AtomicBoolean mHasRegisterTa = n…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
