神经网络常用归一化和正则化方法解析(一)

🎀个人主页: https://zhangxiaoshu.blog.csdn.net
📢欢迎大家:关注🔍+点赞👍+评论📝+收藏⭐️,如有错误敬请指正!
💕未来很长,值得我们全力奔赴更美好的生活!

前言

神经网络中的归一化和正则化是为了提高训练稳定性、加速收敛、减少过拟合等目的而采取的一系列技术手段,本文对常见的归一化方法如,批归一化BN、层归一化LN、实例归一化IN、组归一化GN进行介绍。有关常见的正则化方法L1正则化、L2正则化、dropout 和 Early Stopping的介绍参见我写的这篇文章:神经网络常用归一化和正则化方法解析(二)


文章目录

  • 前言
  • 一、归一化和正则化
    • 1. 归一化(Normalization)
    • 2. 正则化(Regularization)
  • 二、常用归一化方法
    • 1. 批归一化(Batch Normalization)
    • 2. 层归一化(Layer Normalization)
    • 3. 实例归一化(Instance Normalization)
    • 4. 组归一化(Group Normalization)
    • 5. PyTorch演示
  • 总结


一、归一化和正则化

1. 归一化(Normalization)

归一化是一组技术,用于调整神经网络中输入数据的分布,以帮助网络更有效地学习。主要包括批归一化、层归一化、实例归一化和组归一化等。归一化的目标是使输入数据的分布更稳定,有助于缓解梯度消失或爆炸的问题,并提高网络的训练速度和泛化性能。

  • 加速收敛: 归一化可以帮助加速神经网络的收敛过程。在训练过程中,各层输入的分布可能会发生变化,导致训练过程不稳定。通过归一化,可以保持每层输入的分布相对稳定,有助于梯度的传播和权重的更新。

  • 缓解梯度消失/爆炸问题: 在深层网络中,梯度消失或爆炸是常见的问题。通过在每层输入上进行归一化,可以避免梯度在反向传播时变得非常小或非常大。

  • 更好的泛化能力: 归一化有助于提高模型的泛化能力,使其在未见过的数据上表现更好。

常见的归一化技术包括批归一化(Batch Normalization)、层归一化(Layer Normalization)实例归一化(Instance Normalization)、组归一化(Group Normalization)。

2. 正则化(Regularization)

正则化是一种用于控制模型复杂度、防止过拟合的技术。过拟合指的是模型在训练数据上表现很好,但在测试数据上表现较差,因为模型过度适应了训练数据的噪声和细节。

  • 防止过拟合: 正则化是一种减少模型在训练数据上过拟合的技术。

  • 控制权重的大小: 正则化通过在损失函数中添加额外的惩罚项,如L1正则化和L2正则化,可以控制模型参数的大小,防止其变得过于复杂。

  • 提高泛化能力: 正则化有助于提高模型在未见过的数据上的泛化能力,使其更好地适应新的输入。

常见的正则化技术包括L1正则化、L2正则化、dropout和Early Stopping。

综合来说,归一化和正则化在神经网络中的使用可以使模型更稳定、更容易训练,同时提高其泛化能力,从而更好地适应未见过的数据。归一化是一种数据处理的方法,旨在将数据缩放到相对一致的尺度,以便更好地进行比较和分析。归一化通常用于预处理数据,使得不同特征或不同样本的数值范围相对一致。 正则化是一种用于控制模型复杂度、防止过拟合的技术。正则化通过在模型的损失函数中添加额外的项,对模型参数进行惩罚,从而限制模型的复杂性。

  • 归一化适用于数据预处理,正则化适用于模型训练。 如果你的数据具有不同的尺度,可能需要进行归一化;如果你的模型在训练集上表现良好但在测试集上泛化能力差,可能需要考虑正则化。

  • 归一化通常是标准的数据预处理步骤,而正则化是训练模型时的一种策略。 在训练模型之前,你通常会对数据进行归一化,以便更好地训练模型。正则化则是在训练过程中使用的手段,用于控制模型的复杂度。

  • 具体选择取决于任务和模型。 在实际应用中,选择归一化和正则化的方法需要考虑具体任务、数据的特性以及所使用的模型。不同的场景可能需要不同的策略。

二、常用归一化方法

1. 批归一化(Batch Normalization)

Batch Normalization(BN)的基本思想:

对每个特征维度上的输入进行标准化,使其均值接近0,方差接近1。即,BN为一个batch内,在所有图像对应的相同通道上做归一化

BN的计算过程如下

  1. 对于每个特征维度,计算该维度上的均值和方差。
  2. 对输入进行标准化,即减去均值并除以方差。
  3. 将标准化后的数据乘以一个可学习的缩放参数(gamma)并加上一个可学习的平移参数(beta)。

这个过程可以用数学公式表示为:

B N ( x i ) = γ ( x i − μ σ 2 + ϵ ) + β \mathrm{BN}\left(x_{i}\right)=\gamma\left(\frac{x_{i}-\mu}{\sqrt{\sigma^{2}+\epsilon}}\right)+\beta BN(xi)=γ(σ2+ϵ xiμ)+β

其中:

  • x i x_{i} xi是输入的第 i 个特征。
  • μ \mu μ是特征维度上的均值。
  • σ \sigma σ是特征维度上的标准差。
  • ϵ \epsilon ϵ是一个很小的常数,防止除法中的零。
  • γ \gamma γ是缩放参数、 β \beta β是平移参数,两者都是可学习得参数,这是因为归一化后数据为正态分布,使得表达能力下降,所以加入可学习得参数自己学习归一化分布。

BN的优势包括:

  • 加速收敛: BN可以减少训练深度神经网络时的收敛时间,因为它缓解了梯度消失和爆炸的问题。

  • 增强模型的泛化能力: BN有轻微的正则化效果,可以降低模型对参数初始化和超参数的敏感性,提高模型在未见过的数据上的泛化能力。

  • 允许使用较大的学习率: BN的标准化效果使得可以使用更高的学习率,加速模型收敛。

  • 独立性: BN对每个批次独立工作,使得模型在小批次上也能较好地进行训练。

BN通常被应用在卷积层和全连接层之间,以及激活函数之前。在实践中,BN已经成为训练深度神经网络时的标配技术之一。

2. 层归一化(Layer Normalization)

Layer Normalization(LN)的基本思想:

Layer Normalization是一种归一化技术,其基本思想是对每一层的输入进行标准化,使得每个神经元在同一层的输入具有相似的分布。相较于Batch Normalization(BN),它更关注对每个样本(实例)的独立性,而不是整个批次。即,LN为一个batch内,在一个图像对应的所有通道上做归一化

Layer Normalization的计算过程:

给定输入 x x x,假设 x x x 的维度为 ( N , C , H , W ) (N, C, H, W) (N,C,H,W),其中 N N N 是批次大小, C C C 是通道数, H H H W W W 是高度和宽度。Layer Normalization对每个样本(实例)在通道维度上进行标准化,计算过程如下:

对每个通道 c c c 计算均值 μ c \mu_c μc 和标准差 σ c \sigma_c σc

μ c = 1 H × W ∑ i = 1 H ∑ j = 1 W x c i j \mu_{c}=\frac{1}{H \times W} \sum_{i=1}^{H} \sum_{j=1}^{W} x_{c i j} μc=H×W1i=1Hj=1Wxcij
σ c = 1 H × W ∑ i = 1 H ∑ j = 1 W ( x c i j − μ c ) 2 + ϵ \sigma_{c}=\sqrt{\frac{1}{H \times W} \sum_{i=1}^{H} \sum_{j=1}^{W}\left(x_{c i j}-\mu_{c}\right)^{2}+\epsilon} σc=H×W1i=1Hj=1W(xcijμc)2+ϵ

其中, ϵ \epsilon ϵ 是一个很小的常数,防止除法中的零。

对每个通道 c c c 对输入 x x x 进行标准化:

x c i j ^ = x c i j − μ c σ c \hat{{x}_{cij}} =\frac{{x}_{cij}-\mu_c }{\sigma_c } xcij^=σcxcijμc

对标准化后的结果进行缩放和平移,得到最终的输出:

y c i j = γ c x c i j ^ + β c {y}_{cij}=\gamma_c \hat{{x}_{cij}} +\beta_c ycij=γcxcij^+βc

其中, γ c \gamma_c γc β c \beta_c βc 是可学习的缩放和平移参数。

Layer Normalization的优势:

  • 不依赖于批次大小: LN 不像 BN 那样依赖于批次大小,因此在小批次的情况下表现更好。

  • 适用于变长序列: LN 适用于变长序列数据,因为它是在通道维度上进行标准化,而不考虑序列的长度。

  • 保持样本独立性: LN 更注重样本(实例)之间的独立性,适用于一些不同样本之间具有不同特性的情况。

总体而言,LN 在一些特定场景中可能比 BN 更适用,特别是在处理变长序列等情况下。然而,选择使用哪种归一化方法通常取决于具体的任务需求和实验结果。

3. 实例归一化(Instance Normalization)

实例归一化(Instance Normalization)的思想:

实例归一化是一种深度学习中的归一化技术,与批归一化(Batch Normalization)不同,实例归一化主要关注单个样本(实例)的数据分布,而不是整个批次。实例归一化的基本思想是对每个样本在每个通道上进行独立的标准化,使得每个样本在通道的分布接近标准正态分布。相对于批归一化,实例归一化在每个样本上进行独立的归一化,因此更适用于一些样本之间分布差异较大的情况,例如风格迁移等任务。即,IN为一个batch内,在每个图像对应的每个通道上做归一化

实例归一化的优势:

  • 适用于样本差异较大的任务: 实例归一化逐个样本地进行归一化,因此更适用于样本之间的分布差异较大的情况,例如风格迁移等任务。

  • 减少内部协变量偏移: 实例归一化有助于减少内部协变量偏移,即在深度神经网络中,每一层的输入分布在训练过程中发生的变化。

  • 不依赖于批次大小: 相对于批归一化,实例归一化对于批次大小的依赖较小,因此在小批次的情况下仍然表现良好。

  • 保留样本的个体性: 实例归一化保留了每个样本的个体性,不同样本之间的特征分布更为独立,有助于保留样本之间的个性。

总体而言,实例归一化是一种在特定任务和场景下表现出色的归一化技术,特别适用于样本之间分布差异较大的情况。在一些生成模型、风格迁移等任务中,实例归一化已经得到广泛的应用。

4. 组归一化(Group Normalization)

组归一化(Group Normalization)的思想:

组归一化是一种深度学习中的归一化技术,它介于批归一化(Batch Normalization)和实例归一化(Instance Normalization)之间。与批归一化不同,组归一化将通道分为若干组,然后对每一组的特征进行独立的归一化。这样的归一化方式保留了通道之间的独立性,同时避免了对整个批次的依赖。组归一化在每一组内进行归一化,使得每组内的特征在训练过程中保持相对独立的分布。即,GN为一个batch内,一个图像对应的所有通道的分组上做归一化

组归一化的优势:

  • 适用于小批次和大批次: 与批归一化相比,组归一化对批次大小的依赖较小,因此在小批次和大批次的情况下都能表现良好。

  • 减少内部协变量偏移: 组归一化有助于减少内部协变量偏移,使得每组内的特征在训练过程中保持相对独立的分布。

  • 适用于高分辨率图像: 在处理高分辨率图像时,组归一化的性能通常比批归一化更好,因为它不依赖于批次大小,有助于保持特征之间的独立性。

  • 灵活性: 由于组归一化对通道进行了分组,因此在某些场景下可以更灵活地控制每个分组的特征独立性,适应不同的模型结构和任务需求。

总体而言,组归一化在一些特定场景中表现出色,特别是在处理小批次和高分辨率图像的情况下。在一些最新的深度学习模型中,组归一化逐渐得到了广泛的应用。

5. PyTorch演示

下面是使用 PyTorch 随机生成张量并演示四种归一化的输出的代码:

import torch
import torch.nn as nn

# 随机生成张量
x = torch.rand((2, 3, 4, 4))  # 2个样本,3个通道,每个通道尺寸为4x4

# Batch Normalization
batch_norm = nn.BatchNorm2d(3)
x_batch_norm = batch_norm(x.clone())

# Layer Normalization
layer_norm = nn.LayerNorm(x.size()[1:])
x_layer_norm = layer_norm(x.clone())

# Instance Normalization
instance_norm = nn.InstanceNorm2d(3)
x_instance_norm = instance_norm(x.clone())

# Group Normalization
group_norm = nn.GroupNorm(1, 3)  # 1 group for simplicity
x_group_norm = group_norm(x.clone())

# 打印结果
print("Original Tensor:")
print(x)
print("\nBatch Normalization:")
print(x_batch_norm)
print("\nLayer Normalization:")
print(x_layer_norm)
print("\nInstance Normalization:")
print(x_instance_norm)
print("\nGroup Normalization:")
print(x_group_norm)

总结

在这里插入图片描述
以下是对这四种归一化方法的简要总结:

批归一化(Batch Normalization):

  • 思想: 一个batch内,在所有图像对应的相同通道上做归一化。
  • 优点: 提高训练稳定性,加速收敛,有轻微的正则化效果,对深度网络和各种激活函数都有效。
  • 缺点: 不太适用于小数据集,可能引入一些额外的计算开销。

层归一化(Layer Normalization):

  • 思想: 一个batch内,在一个图像对应的所有通道上做归一化。
  • 优点: 在不同大小的小批量上效果更为稳定,适用于循环神经网络(RNN)等场景。
  • 缺点: 对小数据集和卷积神经网络(CNN)的效果可能不如批归一化。

实例归一化(Instance Normalization):

  • 思想: 一个batch内,在每个图像对应的每个通道上做归一化。
  • 优点: 对于样本维度较大的情况效果较好,适用于图像生成等任务。
  • 缺点: 在其他任务上的效果可能不如批归一化。

组归一化(Group Normalization):

  • 思想: 一个batch内,一个图像对应的所有通道的分组上做归一化。
  • 优点: 适用于小批量、样本数不同的情况,对卷积层效果较好。
  • 缺点: 对小数据集的效果可能较差,相对于批归一化在某些场景下可能计算开销较大。

综合而言,选择归一化方法需要考虑具体的任务和网络结构,不同的方法在不同的场景下表现更为优越。在实践中,根据具体问题进行实验和验证,选择最适合的归一化方法。

文中图片大多来自论文和网络,如有侵权,联系删除,文中有不对的地方欢迎指正。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代理IP和网络加速器的区别有哪些

随着互联网的普及,越来越多的人开始使用网络加速器来提高网络速度。然而,很多人并不清楚代理IP和网络加速器之间的区别。本文将详细介绍两者的概念及区别。 一、代理IP 代理IP是一种通过代理服务器进行网络连接的方式。在使用流冠代理IP时,用…

伴随高性能多级网关和多级分布式缓存架构应用实战经验

随着互联网业务的快速发展,对于高性能网络架构的需求越来越迫切。在这篇文章中,我们将介绍高性能多级网关和多级分布式缓存架构在实际应用中的经验,并提供相关示例代码。 一、高性能多级网关的设计与实现 高性能多级网关是一个重要的网络架构…

软件外包公司的核心竞争力

软件外包公司的核心竞争力可以涵盖多个方面,这取决于公司的战略、专业领域和市场定位。以下是一些可能构成软件外包公司核心竞争力的因素,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1…

js中hasOwnProperty() 方法详解

hasOwnProperty 会返回一个布尔值,判断对象中是否存在该属性,不是继承属性,和原型链上的属性,是对象自身的属性,有返回true,没有返回false hasOwnProperty() 方法是 Object 的原型方法(也称实例方法),它定义在 Object.prototype 对象之上&am…

动能资讯 | 智慧汽车—城市NOA迎爆发

在特斯拉引领的 TransformerBev 架构驱动下,智驾算法趋近于端到端的智驾大模型,使得智能驾驶开始步入城市 NOA 新时代。 消费者认知增强,未来市场空间广阔。伴随城市 NOA 在 23-24 年的落地和普及、L3 法规在年内的落地,行业 0-1…

众里寻她千百度:使用Excalidraw一句话绘制进销存系统采购入库流程

引言: 本文将介绍如何使用Excalidraw这一在线绘图工具来绘制进销存系统中的采购入库流程,帮助您更好地理解和优化采购流程。 正文: 1. 打开Excalidraw网站: 在浏览器中输入"https://excalidraw.com",打开Ex…

聚观早报 |真我GT5 Pro细节曝光;iQOO Neo9系列参数曝光

【聚观365】12月5日消息 真我GT5 Pro细节曝光 iQOO Neo9系列参数曝光 抖音商城双12好物节 蔚来正式获得独立造车资质 三星Galaxy S24 Ultra手写笔获认证 真我GT5 Pro细节曝光 今年的顶级旗舰大比拼也进入最后的高潮,剩余还未亮相的骁龙8 Gen3旗舰新机目前也基…

个体诊所电子处方系统哪个好用,推荐一款可以自由设置配方模板能够填写病历可以查询历史病历的门诊处方笺软件

一、前言 1、功能实用,操作简单,不会电脑也会操作,软件免安装,已内置数据库。 2、中医西医均可用此软件开电子处方,支持病历记录查询,药品进出库管理,支持配方模板一键导入电子处方。 二、电子…

Java 基础学习(五)面向对象编程-对象和类

1 类和对象 1.1 面向对象概述 1.1.1面向对象简史 面向对象编程思想最初的起源可以追溯到1960年的Simula语言,这被认为是第一个支持面向对象编程概念的语言。Simula引入了类、对象、继承等概念,将数据和操作进行封装。Simula的创始人奥利-约翰达尔&…

【数电笔记】09-逻辑代数的基本定律、常用公式

目录 说明: 逻辑代数的基本定律 1. 常量间的运算 2. 逻辑变量与常量的运算 3. 与普通代数相似的定律 4. 摩根定律(反演律) 5. 等式证明方法例题 逻辑代数的常用公式 1. 吸收律 2. 冗余律 3. 示例应用 4. 关于异或运算的一些公式 …

uniapp得app云打包问题

获取appid,具体可以查看详情 也可以配置图标,获取直接生成即可 发行 打包配置 自有证书测试使用时候不需要使用 编译打包 最后找到安装包apk安装到手机 打包前,图片命名使用要非中文,否则无法打包成功会报错

聊聊 Jetpack Compose 原理 -- Compose 是如何将数据转换成 UI 的?

Compose 是一个声明式的 UI 框架,提供了很多开箱即用的组件,比如 Text()、Button、Image() 等等,Compose 会经过几个不同的阶段,最终渲染出 UI 界面。 此转换过程分为【三个阶段】: 组合: 显示什么布局&a…

Dynamics 365 关闭新特性“试用新外观“

微软总是喜欢悄默默上线一些新功能,比如之前的高级设置直接跳转Power apps的管理后台,被骂了一周改回来了。 这次又搞了个试用新外观,但一般这种都是有关闭的地方的,去Power Platform中的环境设置中找了半天没找到。 最终在应用的…

缓冲区溢出及原理

缓冲区缓冲区溢出缓冲区溢出的 C 程序实例缓冲区溢出错误的危害Linux IA32 的进程映像缓冲区溢出的原理 缓冲区 缓冲区是一块用于存取数据的 内存,其位置和长度(大小)在编译时确定 或 在程序运行时动态分配。 缓冲区通常用于存储临时数据&am…

智能优化算法应用:基于吉萨金字塔建造算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于吉萨金字塔建造算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于吉萨金字塔建造算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.吉萨金字塔建造算法4.实验参数设…

新手小白-没有弱口令的挖掘思路

没有弱口令怎么挖?依稀记得有一个很老的思路叫做禁用js可以跳转后台,奈何学习两年半到现在从未发现一个这种漏洞。 不过,虽然不能直接搞到未授权后台登录,但是站有站的设计,小白有小白的打法! 访问某URL ip…

Nuxt3 使用 pinia 基础

官方文档 一、安装 pnpm add pinia/nuxt二、配置 添加到 nuxt.config.js 中的 modules (Nuxt 3)或 buildModules (Nuxt 2): // Nuxt 2 export default {buildModules: [[pinia/nuxt, { disableVuex: true }]], } /…

【单片机】MCU内存管理

keil中查看内存使用情况 Code-Data,RO-Data,RW-Data,ZI-Data的含义 Code-Data:代码占用的flash大小 RO-Data:[read-only data],只读常量大小(const和#define) RW-Data:[read write data],初始化了的变量大小 ZI-Da…

深入了解JavaScript事件绑定:实现高效可靠的事件处理

​🌈个人主页:前端青山 🔥系列专栏:JavaScript篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:JavaScript-事件绑定方式 目录 事件绑定方式 什么是事件 DOM0级 事件 DOM0级事件…

PCB走线要“尽量”短_笔记

PCB走线要“尽量”短_笔记 关键影响要素作为“走线要尽量短”这条规则的补充的理论依据方波信号控制走线的特征阻抗 大家都知道两点之间直线最短,但是假如两点之间没有直线路径怎么办? 你会绕过去好还是换层好,尽量短就行?又有问题来了 究竟…