常见的正则化方法以及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…...

【C++】类和对象(三)再探构造函数|static成员函数|友元函数|内部类|匿名对象|对象拷贝时的编译优化
欢迎来到HarperLee的学习笔记! 一、再探构造函数 初始化列表:构造函数初始化的第二种方式(第一种是使用函数体内赋值)。使用方式:以一个冒号:开始,用逗号,分隔数据成员列表,每个成员变量后面跟…...

2024中国算力大会 2024 China Computational Power Conference
文章目录 一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题六、咨询 一、会议详情 二、重要信息 大会官网:https://ais.cn/u/vEbMBz提交检索:EI Compendex、IEEE Xplore、Scopus会议时间:2024年9月27-29日会议地点:…...

jEasyUI 扩展行显示细节
jEasyUI 扩展行显示细节 jEasyUI 是一个基于 jQuery 的前端框架,它提供了一系列的 UI 组件,使得 Web 应用的界面开发变得更加简单快捷。在 jEasyUI 的表格(datagrid)组件中,扩展行显示细节是一个常用的功能,它允许用户通过点击一行来展开更多的信息,这样可以有效地展示…...

YOLOv8+Deepsort+PyQt+GUI 语义分割+目标检测+姿态识别 三者合一(集成于一套系统)综合视觉分析系统
综合视觉分析系统 技术栈: YOLOv8:用于目标检测,是一个快速且准确的目标检测框架。DeepSORT:用于目标跟踪,结合了深度学习特征提取和卡尔曼滤波器来预测目标轨迹。GUI:提供一个直观易用的图形用户界面&am…...

机器学习无监督学习
版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl1. 无监督学习概述 1.1 定义与特点 无监督学习是一种数据挖掘技术,它允许机器通过观察数据来学习数据的内在结构和模式,而无需预先标注的输出变量。这种方法特别适用于数据探索和发现隐藏在数据…...

windows10-VMware17-Ubuntu-22.04-海康2K摄像头兼容问题,求解(已解决)
文章目录 1.webrtc camera测试2.ffmpeg 测试3.Ubuntu 自带相机4.解决办法 环境:windows10系统下,VMware的Ubuntu-22.04系统 问题:摄像头出现兼容问题,本来是想开发测试的,Ubuntu方便些。买了海康2K的USB摄像头…...

【系统架构设计师】解释器模式
解释器模式(Interpreter Pattern)是一种行为型设计模式,它定义了文法的表示,并定义了一个解释器,该解释器使用该表示来解释语言中的句子。在解释器模式中,通常包括一个抽象语法树(Abstract Synt…...

Hive原理剖析
1. 概述 背景介绍 Apache Hive是一个基于Hadoop的开源数据仓库软件,为分析和管理大量数据集提供了SQL-like的接口。最初由Facebook开发并贡献给Apache,Hive现已成为大数据处理领域的重要工具之一。它将传统的SQL功能与Hadoop的强大分布式处理能力结合&…...

在 Ubuntu 上查看重复文件
一般情况下 1. 使用 fdupes 工具 fdupes 是一个专门用于查找重复文件的工具。 安装: sudo apt-get install fdupes 使用: fdupes -r /path/to/directory -r 选项会递归查找子目录中的重复文件。 2. 使用 rmlint 工具 rmlint 是另一个强大的重复文件查找工具…...

docker容器高效连接 Redis 的方式
在微服务架构中,Redis 是一种常见的高效缓存解决方案,通常用于存储临时数据、会话信息或 token。如何在服务容器中高效、稳定地连接 Redis 是架构设计中的一个重要环节。 这篇博客将以实际项目为例,详细介绍如何配置 Flask 应用中的服务容器…...