深度学习探索-基础篇-正则化篇

文章目录

  • 一、正则化介绍
    • 1.1 正则化的简介
    • 1.2 正则化的方法介绍
    • 1.3 正则化的用途
  • 二、正则化的详细介绍
    • 2.1 L1正则化
    • 2.2 L2正则化
      • 2.2.1 L2正则化的工作原理
      • 2.2.2 如何在训练中应用L2正则化
      • 2.2.3 L2正则化的效果
    • 2.3 Weight Decay
    • 2.4 Dropout

一、正则化介绍

1.1 正则化的简介

在深度学习领域中,正则化是一种用于防止过拟合的技术。过拟合是指模型在训练数据上表现良好,但在未见过的数据上表现较差的情况,这可能是因为模型学习到了训练数据中的噪声或者细节,而无法泛化到新数据。

正则化的本质是通过修改学习算法,使其降低泛化误差而非训练误差。正则化是在损失函数的基础上加入一个正则项(或罚项),这个正则项通常是对模型参数的某种惩罚,例如L1范数或L2范数。 这样做的目的是在不改变模型复杂度的情况下,减小某些参数的值,从而减少模型对训练数据的过度拟合

1.2 正则化的方法介绍

  1. 权重衰减(Weight Decay):一种简单的正则化方法,通过在损失函数中加入模型权重的平方和作为惩罚项,以约束模型的学习能力。
  2. L1正则化:通过对权重进行L1范数惩罚,使得部分权重为零,从而实现模型稀疏化,有助于特征选择。
  3. L2正则化:通过对权重进行L2范数惩罚,限制权重的大小,防止权重过大导致过拟合。
  4. Dropout:在训练过程中随机地将一些神经元的输出设置为0,从而强制模型去学习多个独立的子模型,减少神经网络的复杂性,提高模型的泛化能力。

1.3 正则化的用途

  1. 防止过拟合:通过限制模型的复杂度,确保模型在训练数据上表现良好时,也能在新数据上保持良好的泛化能力。
  2. 提高模型的泛化能力:通过减少模型对训练数据的依赖,使模型能够更好地应对未知数据。
  3. 增强模型的鲁棒性:通过引入额外的约束或惩罚项,使模型在面对不同的输入数据时更加稳定和可靠。

二、正则化的详细介绍

2.1 L1正则化

在深度学习和更广泛的机器学习领域中,L1正则化是一种用于控制模型复杂度和防止过拟合的技术。过拟合是指模型在训练数据上表现得过于出色,以至于它开始捕捉数据中的噪声或偶然的细节,这会导致模型在未见过的数据上的性能下降。

L1正则化通过在模型的损失函数中添加一个额外的项来实现,这个项被称为正则化项。正则化项基于模型权重的L1范数,即所有权重绝对值的总和。具体来说,如果 w w w 代表模型的权重向量,那么L1正则化项可以表示为:

λ ∥ w ∥ 1 = λ ∑ i = 1 n ∣ w i ∣ \lambda \|w\|_1 = \lambda \sum_{i=1}^{n} |w_i| λw1=λi=1nwi

这里, λ \lambda λ 是正则化参数,控制正则化项对总体损失的影响程度, n n n 是权重的数量。较大的 λ \lambda λ 值意味着正则化项对最终损失的贡献更大,从而导致模型权重的值更小。

L1正则化的一个关键特性是它倾向于产生稀疏的权重向量,也就是说,许多权重会被精确地推至零。 这是因为L1范数的梯度在权重接近零时是恒定的,这有助于权重进一步向零移动。这种效果有利于特征选择,因为它可以自动消除不重要的特征,从而使模型更简单,更易于解释,并且减少计算成本。

下面是L1正则化如何影响梯度下降更新过程的简化示例。假设我们有一个损失函数 L L L ,并且我们正在使用梯度下降法来最小化它。在没有正则化的情况下,权重 w w w 的更新规则如下:

w : = w − α ∂ L ∂ w w := w - \alpha \frac{\partial L}{\partial w} w:=wαwL

其中 α \alpha α 是学习率。引入L1正则化后,更新规则变为:

w : = w − α ( ∂ L ∂ w + λ sign ( w ) ) w := w - \alpha \left( \frac{\partial L}{\partial w} + \lambda \text{sign}(w) \right) w:=wα(wL+λsign(w))

这里的 sign ( w ) \text{sign}(w) sign(w) 函数返回 w w w 的符号,即如果 w > 0 w > 0 w>0 ,则 sign ( w ) = 1 \text{sign}(w) = 1 sign(w)=1 ,如果 w < 0 w < 0 w<0 ,则 sign ( w ) = − 1 \text{sign}(w) = -1 sign(w)=1 ,如果 w = 0 w = 0 w=0 ,则 sign ( w ) \text{sign}(w) sign(w) 可以被定义为任何值,但通常定义为0。

关键:

Q1. 如何理解:L1正则化的一个关键特性是它倾向于产生稀疏的权重向量,也就是说,许多权重会被精确地推至零。

在没有正则化的情况下,模型可能分配非零权重给所有特征,即使某些特征实际上并不重要。然而,当应用L1正则化时,正则化项会惩罚大权重,尤其是那些对模型贡献较小的特征的权重。由于L1正则化基于权重的绝对值,它会在权重接近零时产生一个恒定的梯度,这意味着这些权重在每一步梯度下降中都会朝着零的方向移动。因此,不重要的特征权重逐渐减小,直至变为零。这也意味着L1正则化具备特征筛选的能力

2.2 L2正则化

在深度学习以及更广泛的机器学习领域中,L2正则化是一种常用的防止模型过拟合的技术。它的核心思想是在模型的损失函数中添加一个额外的项,这个项惩罚模型参数(权重)的大小,从而鼓励模型寻找较小的权重值,这样可以减少模型的复杂度,提高模型的泛化能力。

2.2.1 L2正则化的工作原理

L2正则化项基于模型权重的L2范数,也就是权重向量各个元素平方的和再开平方。在深度学习中,我们通常只计算平方和而不进行开方操作,因为开方不会改变优化方向,同时可以节省计算资源。L2正则化项可以表示为:

λ ∥ w ∥ 2 2 = λ ∑ i = 1 n w i 2 \lambda \|w\|^2_2 = \lambda \sum_{i=1}^{n} w_i^2 λw22=λi=1nwi2

其中 w w w 是权重向量, λ \lambda λ 是正则化参数,用来控制正则化项对总损失函数的影响程度。较大的 λ \lambda λ 值会使正则化项对总损失的贡献更大,从而导致模型权重的值更小。

2.2.2 如何在训练中应用L2正则化

在训练神经网络时,L2正则化项被加到损失函数上。如果 J ( w ) J(w) J(w) 是没有正则化项的损失函数,那么加上L2正则化后的损失函数 J r e g ( w ) J_{reg}(w) Jreg(w) 可以表示为:

J r e g ( w ) = J ( w ) + λ ∥ w ∥ 2 2 J_{reg}(w) = J(w) + \lambda \|w\|^2_2 Jreg(w)=J(w)+λw22

在梯度下降的更新步骤中,L2正则化会影响权重的更新规则。没有正则化时,权重的更新规则是:

w : = w − α ∂ J ∂ w w := w - \alpha \frac{\partial J}{\partial w} w:=wαwJ

其中 α \alpha α 是学习率。而在L2正则化下,权重更新规则变为:

w : = w − α ( ∂ J ∂ w + 2 λ w ) w := w - \alpha \left( \frac{\partial J}{\partial w} + 2\lambda w \right) w:=wα(wJ+2λw)

可以看到,L2正则化项在更新过程中起到了“权重衰减”的作用,它会使得权重在每次更新时都朝向零的方向稍微移动一点,但这并不像L1正则化那样会把权重精确地推至零。

2.2.3 L2正则化的效果

L2正则化的主要效果是平滑权重,它鼓励模型参数分布在一个较小的范围内,而不是让某些参数变得非常大。这有助于减少模型的波动性,使得模型对输入数据的变化更加稳健,从而降低过拟合的风险。此外,L2正则化有助于模型在参数空间中找到一个“平均”解决方案,这通常意味着更好的泛化性能

2.3 Weight Decay

Weight Decay本质上是一种实现L2正则化的方法,但是它是在权重更新步骤中直接应用的,而不是通过修改损失函数来实现。

2.4 Dropout

Dropout是深度学习中一种非常流行的正则化技术,由Geoffrey Hinton和他的团队在2012年提出。其主要目的是减少神经网络的过拟合问题,增强模型的泛化能力。在训练过程中,Dropout通过随机“丢弃”(即设置为0)网络中的一部分神经元,从而模拟训练多个不同的神经网络,这样可以防止神经元之间过于依赖彼此,增强网络的鲁棒性和泛化能力。

在训练阶段,Dropout以一个固定的概率p(通常称为dropout比率或丢弃概率)随机地将网络中的神经元的输出置为0,而存活下来的神经元的输出则被放大1/(1-p)倍,以保持前向传播的期望值不变。在测试阶段,所有神经元都活跃,但它们的权重会被乘以(1-p),这是因为在训练时每个神经元的输出都被放大了,所以在测试时需要相应地缩小。

同时,在dropout的基础上也衍生出了许多相关技术:

  • DropBlock: DropBlock是一种针对卷积神经网络的扩展,它不是随机丢弃单个神经元,而是随机地丢弃神经元的连续区域,这样可以强制网络学习更鲁棒的特征。
  • Spatial Dropout: 空间Dropout主要应用于卷积神经网络(CNN),它不是独立地丢弃每个神经元,而是按通道或特征图的方式整块地丢弃神经元,这样可以保持特征图之间的空间关系。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/30628.shtml

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

相关文章

AJAX 综合案例-day2

Bootstrap 弹框 功能&#xff1a;不离开当前页面&#xff0c;显示单独内容&#xff0c;供用户操作 步骤&#xff1a; 1. 引入 bootstrap.css 和 bootstrap.js 2. 准备 弹框标签 &#xff0c;确认结构 3. 通过 自定义属性 &#xff0c;控制弹框的 显示 和 隐藏 1. 通过属性…

【中南林业科技大学校园生存指南】学业指南

前言 本专栏所有内容来自同学们所提供的建议&#xff0c;已经征得收集者意见在此发布。 学业指南 关于学业指南的设想源于诸多任课教师对于课程细节的描述不够清晰明确。同学们在获取课程信息&#xff0c;如教师评价、课程覆盖范围及往年考试试卷时&#xff0c;往往依赖于高…

人工智能 -- AI常用算法

人工智能是一门致力于研究、开发和实现智能系统的学科。它通过模拟人类的认知和学习过程&#xff0c;使计算机系统能够执行类似于人类的智能活动。人工智能技术涵盖了多个领域&#xff0c;包括机器学习、深度学习、自然语言处理和专家系统等。这些技术被广泛应用于各个行业&…

08--LVS网站高并发解决方案

前言&#xff1a;LVS&#xff0c;工作稳定&#xff0c;抗负载能力强&#xff0c;属于运维基础&#xff0c;这里将lvs两种模式的部署方式在这里记录一下&#xff0c;并在示例完成后&#xff0c;补充一下基础概念。本章不可避免的涉及到一些网络方面知识&#xff0c;会形象简单的…

PostgreSQL源码分析——pg_waldump

PG中有个可以打印WAL日志信息的工具&#xff0c;pg_waldump&#xff0c;对于开发人员来说&#xff0c;掌握该工具是十分有必要的。 用法 具体用法这里不去详解&#xff0c;可见官网pg_waldump文档。 postgresslpc:~$ pg_waldump --help pg_waldump decodes and displays Pos…

C#.Net筑基-集合知识全解

01、集合基础知识 .Net 中提供了一系列的管理对象集合的类型&#xff0c;数组、可变列表、字典等。从类型安全上集合分为两类&#xff0c;泛型集合 和 非泛型集合&#xff0c;传统的非泛型集合存储为Object&#xff0c;需要类型转。而泛型集合提供了更好的性能、编译时类型安全…

华为数通——ACL

ACL基本介绍 ACL:访问控制列表&#xff0c;通过端口对数据流进行过滤&#xff0c;ACL判别依据是五元组&#xff1a;源IP地址&#xff0c;源端口&#xff0c;目的IP地址&#xff0c;目的端口、协议。&#xff08;ACL工作于OSI模型第三层&#xff0c;是路由器和三层交换机接口的…

SpringBoot的配置文件和YAML文件的语法

1.SpringBoot的有两种格式的全局配置文件&#xff0c;使用任何一个功能都是一样的 注意&#xff1a;SpringBoot的全局配置文件名都是固定的application.xxx ① application.properties&#xff0c; 这个是默认Spring initializr默认自动生成的配置文件&#xff0c;也是我们属…

2024免费数据恢复工具EasyRecovery电脑必备软件

&#x1f389; 数据安全小能手&#xff0c;EasyRecovery最新功能揭秘 &#x1f513; 亲爱的小红书的朋友们&#xff01;你们有没有因为不小心删除了重要文件而焦急万分&#xff1f;或者因为电脑突然崩溃&#xff0c;担心珍贵的资料丢失&#xff1f;别怕&#xff0c;今天我就来给…

HAL-DMA中断空闲接受不定长数据

title: HAL-DMA中断空闲接受不定长数据 tags: STM32HalCubemax 面对无规律长度的数据帧如何处理&#xff1f; 不定长数据接收可以使用每帧数据发送完成后会有一定的空闲时间"帧的时间间隔?" 如果你想每帧都要可以采用dma加空闲中断的方式空闲中断一次就是一帧数据…

while循环或for循环写九九乘法表

print("\n") i1 while i<9:j1while j<i:print(f"{j}*{i}{i*j}\t",end)j1print("\n")i1 print(\n) for i in range(1,10):for j in range(1,10):if j<i:print(f"{i}*{j}{i*j}\t",end)else:breakprint(\n)

岁月长河中的温柔等待

在那个年代&#xff0c;爱情往往像是一条静静流淌的小河&#xff0c;不动声色却又波澜不惊。在一个小村庄里&#xff0c;住着一对中年夫妻&#xff0c;人们叫他们李大叔和赵阿姨。他们的故事&#xff0c;就像是那个时代的缩影&#xff0c;承载着岁月的沧桑与深情的守候。 李大…

【CT】LeetCode手撕—160. 相交链表

目录 题目1- 思路2- 实现⭐160. 相交链表——题解思路 3- ACM 实现 题目 原题连接&#xff1a;160. 相交链表 1- 思路 模式识别&#xff1a;相交链表 ——> 判断是否相交 思路 保证 headA 是最长的那个链表&#xff0c;之后对其开始依次遍历 2- 实现 ⭐160. 相交链表—…

基于振弦采集仪的地下综合管廊工程安全监测技术研究

基于振弦采集仪的地下综合管廊工程安全监测技术研究 地下综合管廊工程是一项重要的城市基础设施工程&#xff0c;承载着城市供水、供电、供热、排水等重要功能。为了确保地下综合管廊工程的安全运行&#xff0c;需要进行有效的安全监测。本文将重点研究基于振弦采集仪的地下综…

【HarmonyOS NEXT】使用RSA非对称密钥分段加解密

加密 调用cryptoFramework.createAsyKeyGenerator、AsyKeyGenerator.generateKeyPair&#xff0c;生成RSA密钥类型为RSA1024、素数个数为2&#xff08;不填默认&#xff09;的非对称密钥对&#xff08;KeyPair&#xff09;。KeyPair对象中包括公钥PubKey、私钥PriKey。 如何生…

【中南林业科技大学校园生存指南】序 | 大学之道

前言 本专栏所有内容来自同学们所提供的建议&#xff0c;已经征得收集者意见在此发布。 由于刚开始做&#xff0c;故后续内容会在积累一定程度时发布&#xff0c;感谢支持。 序 回顾大学四年&#xff0c;我仔细梳理了每一刻&#xff0c;把它们凝结成文字&#xff0c;记录下我…

Socket编程之多进程模型

一、多进程模型概述 基于最初的阻塞网络 I/O &#xff0c;若服务器要为多个客户端提供支持&#xff0c;在较为传统的手段中&#xff0c;多进程模型是常用的选择&#xff0c;即为每个客户端都分配一个进程来处理其请求。 服务器的主进程主要负责对客户连接的监听&#xff0c;一旦…

JSON 对象

JSON 对象 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript编程语言的一个子集,但JSON是独立于语言的文本格式,代码中可以使用各种语言来解析和生成它。JSON格式通常用于数据交换、配置文件以…

vmware 虚拟机保留数据扩展C盘

1&#xff0c;在默认安装系统的时候&#xff0c;VMWARE一般给C盘50G&#xff0c;很多人想着够用了&#xff0c;但是后面慢慢的安装各种大型软件&#xff0c;游戏&#xff0c;才发现&#xff0c;悔时已晚。 2&#xff0c;有很多人虚拟机其实就是拿来游戏多开&#xff0c;但是当…

局域网共享文件夹怎么加密?方法很简单

局域网共享文件夹是企业内部信息、数据传递沟通的重要工具&#xff0c;而为了保护共享文件夹数据安全&#xff0c;我们需要使用专业的加密软件加密保护局域网共享文件夹。下面我们就来了解一下局域网共享文件夹加密方法。 局域网共享文件夹加密 在加密共享文件夹时&#xff0c…