深度学习之数据标准化方法综述

在上一篇文章《深度学习之数据处理方法概述》中,我们介绍了深度学习中数据处理的方法,其中提到了数据标准化的方法,没有进行详细介绍,这篇文章主要就是针对数据标准化的方法的介绍,希望让大家对数据标准化的理解和使用有一定的帮助。本文发布于深度人工智能订阅公众号原创文章,转载请注明来源,我们长期致力于传播人工智能知识,发展深度人工智能教育。



一、什么是数据标准化

1、数据标准化概念

 

数据标准化,顾名思义,就是将原来分布范围不同的数据缩放在一个范围之内,一般来说是标准化到均值为0,标准差为1的标准正态分布,均值为0是为了让数据中心化,让各个维度的特征都平衡,标准差为1是为了让数据在各个维度上的长度都呈现一个单位向量(矩阵),也就是把原来大小范围分布不通的数据缩放成统一量纲,和拳击比赛一样,只有相同重量级的对手才能同台比赛,这里把数据的标准差缩放为1的意义就相当于把轻量级选手的体重加重,把重量级选手的体重减轻,让他们在同一个擂台上比赛,否则比赛就不公平。

在以深度学习为主的人工智能项目的实现过程中,对数据的数量和质量的要求都极高,一般来说,原始数据可以通过各种不同的渠道去收集,最终能够得到大量的数据,为了加快训练,消除对训练不利的因素,往往会使用数据标准化的方法来处理数据。

一般在现实环境中获取到的数据,质量往往很难保证。很多收集来的原始数据中实际上是包括了很多噪声数据的,这个时候就需要对数据进行去噪处理,除了去噪处理,一般还会对数据进行标准化处理,而数据的标准化处理,不仅仅指的是在数据输入模型前的标准化处理,在数据输入模型后,在对模型中每一层的输出数据也要标准化处理。可以借助tensorboard工具观察网络模型中每一层的输出结果和权重分布是否在允许的范围内,一般经过标准化处理后的数据,每一层的输出都是固定在一定范围内的。

2、数据标准化指标

既然要对数据标准化处理,那么就需要提出标准化的指标是什么,一般来说,对于从实际环境中获取来的数据,我们会根据数据是否具有明显的界限分为有界数据和无界数据,有界数据就是有着明确的数据边界,也就是数据是固定的,无界数据就是没有明确数据边界,也就是说数据是有可能会改变的。

对于有界数据的标准化方法,由于数据的边界是固定的,显然会和数据的数量以及最小值、最大值有关系,所以一般会将原数据与数据数量大小、最小值及最大值进行计算操作,从而将数据按照一定的比例缩放在一定的范围内。对于有界数据的标准化方法相对来说比较简单,在实际的项目中我们处理的大部分数据也都是固定的数据,既然数据是固定的,那么也就有有界的了。比如对图像数据处理将[0,255]之间的数据处理到[-1,1]之间,符合了均值为0和标准差为1的标准,就是对有界数据进行固定的缩放。

无界数据是指数据的边界不一定是固定的,也就是数据的边界不确定,随时有可能发生变化,或者不知道数据的边界,这类数据主要是使用均值方差的方法标准化,实际上也很容易想象得到,同一个均值方差下的不同数据集,只能证明这些数据集统计出的均值和方差是一样的,也就是说明它们的分布是一样的,但是并不代表它们的数量是一致的,就像从标准正太分布当中采样一样,你可以采集100个样本,也可以采集200个、300个......,无论你采集多少数量的数据,它们的分布都是一样的,也就是均值和方差都一样,都是从N[0,1]中采样。


二、数据标准化的作用

1、统一量纲,平滑不同批次和不同层数据间的梯度,防止模型梯度爆炸或者梯度弥散

数据标准化后,由于原数据的数值被缩放在较小的范围之内,其原来数据之间的“梯度鸿沟”也会被整体缩小,起到了平滑梯度的作用,能够防止模型中某一层的数据出现大的震荡,不利于训练。因为数据震荡过大,会导致其要训练的各种参数的导数变化也会增大,而对于求导而言,当然是越平滑越好,那么我们希望的就是模型的每一层输出都不要发生剧烈的震荡,最好的办法就是对模型每一层的输出都进行标准化处理,将其缩放在一定范围内,这样在模型反向传播求导的时候,模型的损失也会趋于平稳,不容易出现梯度爆炸或者梯度消失的问题。

2、消除奇异数据(离群点)对模型训练的负面影响,加快收敛速度

奇异数据就是在原数据结构中方差较大的数据,在数轴上的表现就是远离其他样本数据,由于在以深度学习为主的梯度下降法中,对于模型的输出和标签之间所求的损失误差,通过计算均值得到的一个平均误差,因此使用梯度下降法反向传播梯度的时候,也是通过这个均值误差来更新各项参数的,由此我们可以判断,模型最终的均值误差对于模型的效果有着举足轻重的影响,而影响均值误差的因素就是所有误差了。

比如模型加载的批次是100,也就是每次加载100个数据去训练,那么每一批次的训练都会得到100个输出,同样会有100个误差,而这100个误差最终是通过计算均值得到一个均值误差的,想要保证均值误差能够体现真正的数据分布误差,就要考虑到每个误差都不能偏离均值太远,但是实际情况却恰恰相反,在采集到的原始数据中,往往会存在各种远离数据均值的奇异数据,这些奇异数据的误差往往会更大,直接会将损失拉的更高,由于损失下降对针对均值损失而言,只有所有损失的方差都在一定范围内,才会达到损失平稳快速下降的目的,但是奇异数据产生的异常点损失会让均值损失无法平稳快速的下降,还会容易让损失产生一定震荡。

 

在数据做了标准化后,会将奇异数据的所产生的误差缩小,让损失能够稳定快速地下降。此外还可以通过四分位法,通过删除原始数据中的中位数,只截取排序后数据中25%到75%之间的数据来去除奇异数据,然后再对剩余的数据做标准化,这样的效果会更好。只不过这种操作要确定数据中确实存在奇异数据才比较好用,否则会截除掉正常数据导致数据的数量变少。

3、消除噪声数据对模型的负面影响,防止模型过拟合

数据标准化可以降低噪声数据对于模型输出结果的影响,一般来说,数据通过标准化处理,能够去除量纲干扰,利用小波降噪处理去除随机噪声。由于噪声一般属于高通滤波,数据标准化在一定程度上可以起到平滑梯度的作用,而噪声一般周围其他数据间的梯度往往较大,使用了数据标准化处理,能够降低它们之间的梯度,从而达到消除噪声的效果。

当然对于数据去噪,我们不能依赖于数据标准化,数据标准化的最主要作用还是统一量纲,加快训练速度,至于去噪,只是附带作用,如果要真正的对数据做去噪处理,不妨尝试使用低通滤波的方法,去除掉数据中高通部分,只留下低通和中通部分数据即可,比如高斯滤波、中值滤波、基于傅里叶变换的低通滤波等等。

严格来说,原数据中包含少量的噪声对于模型训练是有益的,能够提高模型的泛化能力,因为噪声数据可能拟合了现实世界中的各种不同的场景;如果原始数据包括了大量的噪声数据,甚至于噪声数据的占比已经超过了一定的范围,则是对训练无益的,因为噪声数据过大,说明采集的原数据和现实数据的偏差也过大,模型学到的分布和现实数据的分布也不一样了,相当于是另一个数据分布了。


三、数据标准化的方法

1、最大值标准化

 

最大值标准化就是让数据中的每个值都除以最大值,把数据缩放到[0,1]之间:x=x/max(x),这种方法适合数据都是正数的情况,比如图像像素是[0,255]之间的正数,让每个像素值都除以255,就可以把图像像素值归一化到[0,1]之间,还可以对归一化后的数据再减去均值,除以标准差,规范到[-1,1]之间:x=(x-0.5)/0.5。

2、绝对最大值标准化

 

上面介绍的最大值标准化方法主要是针对正数而言,如果数据中包括了负数,使用上面的方法就无法保证数据被缩放到[-1,1]之间,这个时候我们需要先对数据取绝对值,然后再进行最大值标准化把数据缩放到[0,1]之间:x=x/max(abs(x)),如此便能消除负数太小带来的影响。

3、最大最小值标准化

最大最小值标准化是利用数据的最大最小边界值来标准化数据,具体操作就是让每一个数据都减去最小值,然后除以最大值减去最小值的结果,将数据缩放到[0,1]之间:x=(x−min(x))/(max(x)−min(x)),根据公式,可以发现,如果当前数据为最小值,则分子为0.此时,标准化的结果也为0,反之如果当前数据为最大值,则分子与分母相等,标准化的结果为1,可见此方法无论数据为正数还是负数都能够将数据缩放到[0,1]之间。

 

4、均值方差标准化

 

均值方差(标准差)标准化是最为常用的数据标准化方法,操作过程就是让每个数据都减去均值,然后除以标准差:x=(x-mean(x))/sqrt(x-mean(x)**2),目的是将数据缩放到均值为0,标准差为1的标准正态分布N[0,1]。

5、范数标准化

范数标准化就是让当前数据除以当前维度上各个数据的范数之和,比如L1范数标准化就是让当前数据除以当前维度上所有数据的绝对值之和:x=x/sum(abs(x)),L2范数标准化就是让当前数据处理当前维度上所有数据的平方和再开方:x=x/sqrt(x**2),以此类推,可以扩展到N范数标准化。

6、四分位法标准化

四分位范围(RobustScaler)缩放法是使用该缩放器删除数据中的中位数,并根据百分位数范围(默认值为IQR:四分位间距)缩放数据。 IQR是第1个四分位数(25%)和第3个四分位数(75%)之间的范围。也就是去除数据中小于25%和大于75%的数据,这对异常噪声数据的处理非常有益。


四、PyTorch中的数据标准化

1、BN(Batch Normalization)

 

BN的计算就是把每个通道的NHW单独拿出来归一化处理,针对每个channel我们都有一组γ,β,所以可学习的参数为2*C,当batch size越小,BN的表现效果也越不好,因为计算过程中所得到的均值和方差不能代表全局。在pytorch中调用torch.nn.BatchNorm2d(out_channels)来实现。

 

2、LN (Layer Normalizaiton

 LN的计算就是把每个CHW单独拿出来归一化处理,不受batchsize 的影响。常用在RNN网络,但如果输入的特征区别很大,那么就不建议使用它做归一化处理。在pytorch中调用torch.nn.LayerNorm(out_channels,H,W)来实现。

 

3、IN(Instance Normalization

IN的计算就是把每个HW单独拿出来归一化处理,不受通道和batchsize 的影响常用在风格化迁移,但如果特征图可以用到通道之间的相关性,那么就不建议使用它做归一化处理。在pytorch中调用torch.nn.InstanceNorm2d(out_channels)来实现。

 

4、GN(Group Normalizatio

GN的计算就是把先把通道C分成G组,然后把每个gHW单独拿出来归一化处理,最后把G组归一化之后的数据合并成CHW。GN介于LN和IN之间,当然可以说LN和IN就是GN的特列,比如G的大小为1或者为C。在pytorch中调用torch.nn.GroupNorm(num_groups,out_channels)来实现。

 

 

5、SN(Switchable Normalization):

将 BN、LN、IN 结合,赋予权重,让网络自己去学习归一化层应该使用什么方法。集万千宠爱于一身,但训练复杂。

 

本文内容由深度人工智能公众号原创提供,转载或摘录请联系作者注明来源!

深度人工智能是成都深度智谷科技旗下的教育信息平台,我们会为人工智能学习者呈现最实用的干货技能,也会为人工智能从业者考取人工智能相关的证书提供报考服务,有意者可以联系我们。

中国人工智能学会部分证书样本:

工信部人工智能证书样本:


文中所使用的部分图片来自网络素材,如果有侵权,请第一时间联系我们删除!

 

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计是高等教育阶段学生在完成学业前所进行的一项重要学术任务,旨在检验学生通过学习所获得的知识、技能以及对特定领域的深刻理解能力。这项任务通常要求学生运用所学专业知识,通过独立研究和创新,完成一个实际问题的解决方案或者开展一项有价值的项目。 首先,毕业设计的选择通常由学生根据个人兴趣、专业方向以及实际需求来确定。学生需要在导师的指导下明确研究目标、问题陈述,确立研究的范围和深度。毕业设计可以包括文献综述、需求分析、方案设计、实施与测试等多个阶段,以确保整个过程的科学性和系统性。 其次,毕业设计的完成通常需要学生具备一定的独立思考和解决问题的能力。在研究过程中,学生可能需要采用各种研究方法,如实验、调查、案例分析等,以获取必要的数据和信息。通过这些活动,学生能够培养扎实的专业技能,提升解决实际问题的实际能力。 第三,毕业设计的撰写是整个过程的重要组成部分。学生需要将研究过程、方法、结果以及结论等详细记录在毕业论文中,以展示其研究的全貌和成果。同时,撰写毕业设计还有助于提高学生的学术写作水平,培养清晰、逻辑的表达能力。 最后,毕业设计的评价通常由导师和相关专业人士进行。评价标准包括研究的创新性、实用性、方法的科学性以及论文的质量等方面。学生在毕业设计中获得的成绩也将直接影响其最终的学业成绩和学位授予。 总的来说,毕业设计是高等教育中的一项重要环节,通过此过程,学生不仅能够巩固所学知识,还能培养独立思考和解决问题的能力,为将来的职业发展奠定坚实的基础。
毕业设计是高等教育阶段学生在完成学业前所进行的一项重要学术任务,旨在检验学生通过学习所获得的知识、技能以及对特定领域的深刻理解能力。这项任务通常要求学生运用所学专业知识,通过独立研究和创新,完成一个实际问题的解决方案或者开展一项有价值的项目。 首先,毕业设计的选择通常由学生根据个人兴趣、专业方向以及实际需求来确定。学生需要在导师的指导下明确研究目标、问题陈述,确立研究的范围和深度。毕业设计可以包括文献综述、需求分析、方案设计、实施与测试等多个阶段,以确保整个过程的科学性和系统性。 其次,毕业设计的完成通常需要学生具备一定的独立思考和解决问题的能力。在研究过程中,学生可能需要采用各种研究方法,如实验、调查、案例分析等,以获取必要的数据和信息。通过这些活动,学生能够培养扎实的专业技能,提升解决实际问题的实际能力。 第三,毕业设计的撰写是整个过程的重要组成部分。学生需要将研究过程、方法、结果以及结论等详细记录在毕业论文中,以展示其研究的全貌和成果。同时,撰写毕业设计还有助于提高学生的学术写作水平,培养清晰、逻辑的表达能力。 最后,毕业设计的评价通常由导师和相关专业人士进行。评价标准包括研究的创新性、实用性、方法的科学性以及论文的质量等方面。学生在毕业设计中获得的成绩也将直接影响其最终的学业成绩和学位授予。 总的来说,毕业设计是高等教育中的一项重要环节,通过此过程,学生不仅能够巩固所学知识,还能培养独立思考和解决问题的能力,为将来的职业发展奠定坚实的基础。
毕业设计是高等教育阶段学生在完成学业前所进行的一项重要学术任务,旨在检验学生通过学习所获得的知识、技能以及对特定领域的深刻理解能力。这项任务通常要求学生运用所学专业知识,通过独立研究和创新,完成一个实际问题的解决方案或者开展一项有价值的项目。 首先,毕业设计的选择通常由学生根据个人兴趣、专业方向以及实际需求来确定。学生需要在导师的指导下明确研究目标、问题陈述,确立研究的范围和深度。毕业设计可以包括文献综述、需求分析、方案设计、实施与测试等多个阶段,以确保整个过程的科学性和系统性。 其次,毕业设计的完成通常需要学生具备一定的独立思考和解决问题的能力。在研究过程中,学生可能需要采用各种研究方法,如实验、调查、案例分析等,以获取必要的数据和信息。通过这些活动,学生能够培养扎实的专业技能,提升解决实际问题的实际能力。 第三,毕业设计的撰写是整个过程的重要组成部分。学生需要将研究过程、方法、结果以及结论等详细记录在毕业论文中,以展示其研究的全貌和成果。同时,撰写毕业设计还有助于提高学生的学术写作水平,培养清晰、逻辑的表达能力。 最后,毕业设计的评价通常由导师和相关专业人士进行。评价标准包括研究的创新性、实用性、方法的科学性以及论文的质量等方面。学生在毕业设计中获得的成绩也将直接影响其最终的学业成绩和学位授予。 总的来说,毕业设计是高等教育中的一项重要环节,通过此过程,学生不仅能够巩固所学知识,还能培养独立思考和解决问题的能力,为将来的职业发展奠定坚实的基础。
深度学习中,数据标准化是指将数据进行预处理,使得其在进行模型训练和预测时具有更好的效果和稳定性。其中,img表示图像数据,img-rgb表示图像数据的RGB通道值。 图像数据标准化常常使用像素值除以255的方式进行,即img=img/255。这种方式的原理是将像素值的范围从0-255缩放到0-1之间,使得特征值的取值范围相对统一,便于模型收敛和计算。 数据标准化的好处主要有以下几点: 1. 增加模型训练的稳定性:通过标准化图像数据,可以使得每个像素值都处于相似的数值范围内,避免因为数值过大或过小导致的模型不稳定性,提高模型的收敛速度和稳定性。 2. 提升模型的泛化能力:标准化后的数据能够减小特征值之间的差异性,减少模型对于特定特征值的依赖,提高模型的泛化能力,使得其在未见过的数据上表现较好。 3. 提高训练速度:标准化后的图像数据能够加快模型的训练速度。由于特征值的范围统一,模型在计算过程中会更加高效,减少额外的计算负担。 需要注意的是,对于不同的任务和数据类型,可能需要进行特定的标准化方式。例如,在一些特定的图像处理任务中,可能需要对图像进行其他预处理操作,如均值归一化、亮度调整等,以获得更好的训练效果。因此,数据标准化的方式应根据具体任务和数据特点进行选择,以提升深度学习模型的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值