【深度学习】归一化(十一)

本文介绍了归一化的作用和常见类型,如Rescaling和Standardization。重点讲解了深度学习中两种重要的归一化技术:批量归一化(Batch Normalization)和权重归一化(Weight Normalization),以及它们在神经网络训练中的应用和优势。
摘要由CSDN通过智能技术生成

今天要学习的内容是一个小知识点:归一化

什么是归一化

归一化(Normalization): 是一种无量纲处理手段,即将有量纲的表达式,经过变换,化成无量纲的表达式,称为标量。通常来说,想比较两个有度量单位的物理量是不可以的,但是我们可以先将度量单位去掉,变成标量,就可以作比较了。归一化的具体作用是:归纳样本的统计分布性;操作是:把数据经某种算法限制在(0,1)或者(-1,1)范围内,限制数据到(0,1)区间是统计样本的概率分布,而限制到(-1,1)区间是统计样本的坐标分布。

常见的归一化方式是Rescaling (min-max normalization) 线性归一化:适用在数据比较集中的情况
x ′ = x − min ⁡ ( x ) max ⁡ ( x ) − min ⁡ ( x ) x^\prime=\frac{x-\min(x)}{\max(x)-\min(x)} x=max(x)min(x)xmin(x)

不论是计算,还是建模,首先要做的是对样本数据进行预处理,这要求样本的度量单位要统一,不然无法做统计分析,因此预处理的第一步往往是对数据去量纲。而去量纲化的操作通常有这几种:归一化和标准化。

易混淆概念–标准化

标准化(Standardization): 是对原始数据按比例进行缩放处理,使得数据落入一个小的特定区间,这跟归一化差不多,但是唯一的差别就是缩放本质不同,归一化是将样本的特征值转化到同一量纲下,把数据映射到(0,1)或者(-1,1)区间。 而标准化是将数据通过去均值实现中心化(中心化:将数据的平均值变为0的操作),得到的数据是符合标准正态分布的,区别在于标准化是依照特征矩阵的列,归一化是依照特征矩阵的行处理数据。

标准化的形式是:Standardization (Z-score normalization)标准差归一化:将数据处理成符合均值为0,方差为1的标准正态分布
x ′ = x − μ ( x ) σ ( x )    ,    μ 为 均 值 , σ 为 方 差 x^\prime=\frac{x-\mu(x)}{\sigma(x)}\;,\; \mu为均值,\sigma为方差 x=σ(x)xμ(x),μσ

个人观点:我认为归一化和标准化其实是起着相同效果的操作,在实际中无需将两者划分得这么清楚,因为他们的共同点都是消除不同量纲,都是一种线性变换,都是对样本x按比例缩放再平移。

为什么要归一化

在训练神经网络之前,我们一般都要对数据进行归一化,这样做的原因有三点:

  1. 避免神经元饱和: 当神经元的激活在接近0或1时会出现饱和现象,这时候,梯度几乎为0,一旦出现梯度接近0,根据梯度的链式反应,在反向传播过程中就会出现梯度消失的问题;
  2. 加快收敛: 样本数据中普遍会存在一些奇异样本,这些样本数据会引起网络训练时间加长,以及网络无法收敛等问题。为避免这种情况,加快网络学习速度,我们先要对数据进行归一化处理,使得所有的样本的输入信号的均值接近0,或者均方差很小;
  3. 避免数值问题: 太大的数会引发计算机的数值问题。

Batch Normalization

批量归一化(Batch Normalization,BN): 顾名思义,就是批量地将样本进行归一化操作,它是基于mini-batch的数据计算均值和方差的,而不是整个training set。当小批次数量,即mini-batch设置较大时,数据分布较接近,在训练前充分打乱,将BN层设置在非线性映射前,这样有利于网络收敛。
BN
BN在具体训练时的操作流程为:

输入:上一层输出的结果 X = { x 1 , . . . , x i , . . . , x n } X=\{x_1,...,x_i,...,x_n\} X=

  • 8
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在深度学习中,归一化是非常重要的。随着深层网络的出现,数据在传递过程中的梯度往往会非常小,导致网络无法有效地训练。而归一化可以解决这个问题,使得数据分布可以更加均匀,从而提高网络的训练效果。 在Matlab中,可以通过一些内置的函数和工具箱实现深度学习归一化处理。例如,可以使用Matlab中的normc函数将数据列向量进行单位向量归一化,使得每个向量的长度都为1。此外,还可以使用Matlab中的zscore函数进行标准化,将数据转化为均值为0,方差为1的分布。这种归一化方式既可以用于训练数据,也可以用于测试数据。 如果需要对网络的输入数据进行归一化,也可以使用Matlab中的Preprocessing Toolbox中的函数。例如,可以使用mapminmax函数将数据缩放到指定的范围内,使得所有的数据都在0到1之间。通过预处理数据进行归一化,可以减少训练时间,提高网络的鲁棒性,同时还可以避免过拟合的问题。 总之,Matlab中提供了一系列的工具和函数,可以方便地进行深度学习归一化处理。无论是对输入数据进行预处理,还是对网络的输出进行后处理,都可以通过Matlab来实现。通过归一化,可以提高网络的训练效果,从而更好地完成任务。 ### 回答2: Matlab深度学习中的归一化涉及到将不同的输入数据转换为相同的范围,使得数据更易于处理和比较。在Matlab中,有很多种归一化方法可供选择,其中最常用的方法是标准化和最小-最大缩放。 标准化方法使用数据集的均值和标准差进行归一化。该方法会将所有数据缩放到均值为0、标准差为1的范围内。最小-最大缩放方法通过将数据缩放到指定的最小和最大值之间进行归一化。该方法被广泛用于图片处理中。 在Matlab中,可以使用命令‘zscore’和‘mapminmax’来实现标准化和最小-最大缩放。例如,要对一个矩阵x进行标准化,可以使用以下代码: x_norm = zscore(x); 要对x进行最小-最大缩放,则可以使用如下命令: x_norm = mapminmax(x); Matlab深度学习归一化方法是非常重要的,因为它有助于网络模型的学习和更准确的结果。在应用归一化时,要选择合适的方法并调整归一化参数以获得最佳效果。 ### 回答3: 归一化深度学习中非常重要的预处理步骤,它可以保证输入数据具有相似的分布特点,提高模型的准确性和稳定性。而Matlab是一个应用广泛的科学计算软件,也提供了多种归一化方法来帮助用户进行深度学习的数据预处理。 Matlab中使用最广泛的归一化方法是Z-score标准化,也称为标准差标准化。它的原理是将数据转换为均值为0,标准差为1的正态分布。这个方法可以消除不同特征之间的尺度差异,使得它们具有同等的权重。Matlab中可以使用内置函数zscore来进行Z-score标准化。 除了Z-score标准化,Matlab还提供了MinMax归一化方法。它的原理是将数据转换到[0, 1]的区间内。这个方法比较适用于具有明确范围的数据,在图像处理和计算机视觉中也经常被使用。Matlab中可以使用内置函数minmax来进行MinMax归一化。 除此之外,还有其他归一化方法,例如对数变换、指数变换和Box-Cox变换等。根据不同的应用场景和数据分布情况,选择不同的归一化方法可以提高模型的精度和泛化能力。 综上,Matlab提供了多种归一化方法,帮助用户进行深度学习的数据预处理。这些方法可以消除输入数据之间的尺度差异,保证模型的准确性和稳定性,对于深度学习的应用非常重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值