归一化(Normalization)

这篇具有很好参考价值的文章主要介绍了归一化(Normalization)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是归一化

归一化是一种数据处理方式,能将数据经过处理后限制在某个固定范围内。

归一化存在两种形式,一种是在通常情况下,将数处理为 [0, 1] 之间的小数,其目的是为了在随后的数据处理过程中更便捷。例如,在图像处理中,就会将图像从 [0, 255] 归一化到 [0, 1]之间,这样既不会改变图像本身的信息储存,又可加速后续的网络处理。其他情况下,也可将数据处理到 [-1, 1] 之间,或其他的固定范围内。另一种是通过归一化将有量纲表达式变成无量纲表达式。那么什么是量纲,又为什么需要将有量纲转化为无量纲呢?具体举一个例子。当我们在做对房价的预测时,收集到的数据中,如房屋的面积、房间的数量、到地铁站的距离、住宅附近的空气质量等,都是量纲,而他们对应的量纲单位分别为平方米、个数、米、AQI等。这些量纲单位的不同,导致数据之间不具有可比性。同时,对于不同的量纲,数据的数量级大小也是不同的,比如房屋到地铁站的距离可以是上千米,而房屋的房间数量一般只有几个。经过归一化处理后,不仅可以消除量纲的影响,也可将各数据归一化至同一量级,从而解决数据间的可比性问题。

为什么要归一化

归一化可以将有量纲转化为无量纲,同时将数据归一化至同一量级,解决数据间的可比性问题。在回归模型中,自变量的量纲不一致会导致回归系数无法解读或错误解读。在KNN、Kmeans等需要进行距离计算的算法中,量纲的量级不同可能会导致拥有较大量级的特征在进行距离计算时占主导地位,从而影响学习结果。

数据归一化后,寻求最优解的过程会变得平缓,可以更快速的收敛到最优解。

为什么归一化能提高求解最优解的速度

之前我们提到一个对房价进行预测的例子,假设自变量只有房子到地铁站的距离 x 1 x_1 x1 和房子内房间的个数 x 2 x_2 x2,因变量为房价,预测公式和损失函数分别为: y = θ 1 x 1 + θ 2 x 2 J = ( θ 1 x 1 + θ 2 x 2 − y l a b e l ) 2 \begin{aligned} y &= \theta_1x_1 + \theta_2x_2 \\ J &= (\theta_{1}x_{1} + \theta_{2}x_{2} - y_{label})^2 \end{aligned} yJ=θ1x1+θ2x2=(θ1x1+θ2x2ylabel)2 在未归一化时,房子到地铁站的距离的取值在 0~5000 之间,而房间个数的取值范围仅为0~10。假设 x 1 = 1000 , x 2 = 3 x_{1} = 1000,x_{2} = 3 x1=1000x2=3, 那么损失函数的公式可以写为: J = ( 1000 θ 1 + 3 θ 2 − y l a b e l ) 2 J = (1000\theta_{1}+3\theta_{2} - y_{label})^2 J=(1000θ1+3θ2ylabel)2可将该损失函数寻求最优解过程可视化为下图:
对数归一化,深度学习(基础),机器学习,人工智能,深度学习

左图的红色椭圆代表归一化前的损失函数等高线,蓝色线段代表梯度的更新,箭头的方向代表梯度更新的方向。寻求最优解的过程就是梯度更新的过程,其更新方向与登高线垂直。由于x1 和 x2 的量级相差过大,损失函数的等高线呈现为一个瘦窄的椭圆。因此如图(左)所示,瘦窄的椭圆形会使得梯度下降过程呈之字形呈现,导致梯度下降速度缓慢。

当数据经过归一化后, x 1 ′ = 1000 − 0 5000 − 0 = 0.2 x_{1}^{'} =\displaystyle \frac{1000-0}{5000-0}=0.2 x1=5000010000=0.2 x 2 ′ = 3 − 0 10 − 0 = 0.3 x_{2}^{'} =\displaystyle \frac{3-0}{10-0}=0.3 x2=10030=0.3,那么损失函数的公式可以写为: J ( x ) = ( 0.2 θ 1 + 0.3 θ 2 − y l a b e l ) 2 J(x) = (0.2\theta_{1} + 0.3\theta_{2} - y_{label})^2 J(x)=(0.2θ1+0.3θ2ylabel)2 我们可以看到,经过归一化后的数据属于同一量级,损失函数的等高线呈现为一个矮胖的椭圆形(如图(右)所示),求解最优解过程变得更加迅速且平缓,因此可以在通过梯度下降进行求解时获得更快的收敛。

归一化有哪些类型

1、Min-max normalization (Rescaling) x ′ = x − m i n ( x ) m a x ( x ) − m i n ( x ) x^{'} = \frac{x - min(x)}{max(x) - min(x)} x=max(x)min(x)xmin(x) 归一化后的数据范围为 [0, 1],其中 m i n ( x ) 、 m a x ( x ) min(x)、max(x) min(x)max(x) 分别求样本数据的最小值和最大值。

2、Mean normalization x ′ = x − m e a n ( x ) m a x ( x ) − m i n ( x ) x^{'} = \frac{x - mean(x)}{max(x) - min(x)} x=max(x)min(x)xmean(x) 归一化后的数据范围为 [-1, 1],其中 m e a n ( x ) mean(x) mean(x) 为样本数据的平均值。

3、Z-score normalization (Standardization) x ′ = x − μ σ x^{'} = \frac{x - \mu}{\sigma} x=σxμ 归一化后的数据范围为实数集,其中 μ 、 σ μ、σ μσ 分别为样本数据的均值和标准差。

4、非线性归一化

  • 对数归一化: x ′ = lg ⁡ x lg ⁡ m a x ( x ) x^{'} = \frac{\lg x}{\lg max(x)} x=lgmax(x)lgx
  • 反正切函数归一化: x ′ = arctan ⁡ ( x ) ∗ 2 π x^{'} = \arctan(x) * \frac{2}{\pi} x=arctan(x)π2 归一化后的数据范围为 [-1, 1]
  • 小数定标标准化(Demical Point Normalization): x ′ = x 1 0 j x^{'} = \frac{x}{10^j} x=10jx 归一化后的数据范围为 [-1, 1], j j j 为使 m a x ( ∣ x ′ ∣ ) < 1 max(|x^{'}|) < 1 max(x)<1的最小整数。

不同归一化的使用条件

1、Min-max归一化和mean归一化适合在最大最小值明确不变的情况下使用,比如图像处理时,灰度值限定在 [0, 255] 的范围内,就可以用min-max归一化将其处理到[0, 1]之间。在最大最小值不明确时,每当有新数据加入,都可能会改变最大或最小值,导致归一化结果不稳定,后续使用效果也不稳定。同时,数据需要相对稳定,如果有过大或过小的异常值存在,min-max归一化和mean归一化的效果也不会很好。如果对处理后的数据范围有严格要求,也应使用min-max归一化或mean归一化。

2、Z-score归一化也可称为标准化,经过处理的数据呈均值为0,标准差为1的分布。在数据存在异常值、最大最小值不固定的情况下,可以使用标准化。标准化会改变数据的状态分布,但不会改变分布的种类。特别地,神经网络中经常会使用到z-score归一化,针对这一点,我们将在后续的文章中进行详细的介绍。

3、非线性归一化通常被用在数据分化程度较大的场景,有时需要通过一些数学函数对原始值进行映射,如对数、反正切等。

归一化和标准化的联系与区别

谈到归一化和标准化可能会存在一些概念的混淆,我们都知道归一化是指normalization,标准化是指standardization,但根据wiki上对feature scaling方法的定义,standardization其实就是z-score normalization,也就是说标准化其实是归一化的一种,而一般情况下,我们会把z-score归一化称为标准化,把min-max归一化简称为归一化。在下文中,我们也是用标准化指代z-score归一化,并使用归一化指代min-max归一化。

其实,归一化和标准化在本质上都是一种线性变换。我们提到了归一化和标准化的公式,对于归一化的公式,在数据给定的情况下,可以令 a = m a x ( x ) − m i n ( x ) 、 b = m i n ( x ) a = max(x) - min(x)、b = min(x) a=max(x)min(x)b=min(x),则归一化的公式可变形为: x ′ = x − b a = x a − b a = x a − c x^{'} = \frac{x - b}{a} = \frac{x}{a} - \frac{b}{a} = \frac{x}{a} - c x=axb=axab=axc 标准化的公式与变形后的归一化类似,其中的 μ \mu μ σ \sigma σ 在数据给定的情况下,可以看作常数。因此,标准化的变形与归一化的类似,都可看作对 x x x 按比例 a a a 进行缩放,再进行 c c c 个单位的平移。由此可见,归一化和标准化的本质都是一种线性变换,他们都不会因为对数据的处理而改变数据的原始数值排序。

那么归一化和标准化又有什么区别呢?文章来源地址https://www.toymoban.com/news/detail-722664.html

  • 归一化不会改变数据的状态分布,但标准化会改变数据的状态分布;
  • 归一化会将数据限定在一个具体的范围内,如 [0, 1],但标准化不会,标准化只会将数据处理为均值为0,标准差为1。

到了这里,关于归一化(Normalization)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深度学习输入数据的归一化

    将2D点坐标映射到[-1, 1]范围的主要原因有: 消除分辨率影响 不同图像分辨率下的绝对像素坐标值会有很大差异(例如100px和1000px)。映射到[-1, 1]可以抹平这种分辨率影响,使坐标值处在统一的数值范围内。 适合网络输入 大多数基于深度学习的模型会假设输入数据处在[-1, 1]或[0,

    2024年02月09日
    浏览(36)
  • 归一化 (Normalization)、标准化 (Standardization)和中心/零均值化 (Zero-centered)

    目录 一、概念 1、归一化(Normalization):  2、标准化(Standardization): 3、中心化/零均值化(zero-centered): 二、联系和差异: 三、标准化和归一化的多种方式 三、为什么要归一化/标准化? 3.1、数据的量纲不同;数量级差别很大 3.2、避免数值问题:太大的数会引发数值问

    2024年02月04日
    浏览(36)
  • 【python】数据预处理:分位数归一化 Quantile Normalization + INSCODE AI创作助手测试

    这里主要了解一下 分位数归一化( Quantile Normalization, QN ) 。如无特殊说明时,本文中的 QN 作为分位数归一化的缩写。 Quantile Normalization 直接翻译是 分位数归一化,但也有翻译为分位数标准化。笔者理解是按直译叫分位数归一化,但是按数据的处理方式,应该叫分位数标准

    2024年02月17日
    浏览(57)
  • 【机器学习】一文搞懂标准化,归一化,正则化

    对于机器学习中的标准化,归一化和正则化的理解,一直都比较模糊,而且在许多技术书籍中,对于它们的使用基本都是一笔带过,不理解概念的话,就不知具体对数据做了哪些操作。因此,在这里专门对这几个概念做学习与总结。 学习之前,先抛出几个问题: 这几个概念

    2024年02月03日
    浏览(50)
  • 【机器学习】数据预处理 - 归一化和标准化

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 处理数据之前,通常会使用一些转换函数将 「特征数据」 转换成更适合 「

    2024年02月15日
    浏览(55)
  • 用pytorch给深度学习加速:正交与谱归一化技术

    目录 torch.nn参数优化 parametrizations.orthogonal 用途 用法 使用技巧 参数 注意事项 示例代码 parametrizations.spectral_norm 用途 用法 使用技巧 参数 注意事项 示例代码 总结 这个 torch.nn.utils.parametrizations.orthogonal 模块是PyTorch库中的一个功能,用于对神经网络中的矩阵或一批矩阵应用正交

    2024年01月17日
    浏览(42)
  • 【机器学习300问】12、为什么要进行特征归一化?

            当线性回归模型的特征量变多之后,会出现不同的特征量,然而对于那些同是数值型的特征量为什么要做归一化处理呢?         使得不同指标之间具有可比性。例如,分析一个人的身高和体重对健康的影响,如果使用米(m)和于克(kg)作为单位,那么身高特征会在

    2024年01月22日
    浏览(40)
  • 【Pytorch基础知识】数据的归一化和反归一化

    一张正常的图,或者说是人眼习惯的图是这样的: 但是,为了 神经网络更快收敛 ,我们在深度学习网络过程中 通常需要将读取的图片转为tensor并归一化 (此处的归一化指 transforms .Normalize()操作)输入到网络中进行系列操作。 如果将转成的tensor再直接转为图片,就会变成下

    2023年04月09日
    浏览(84)
  • 学习pytorch中归一化transforms.Normalize

    包含 torchvison.transforms(常用的图像预处理方法); torchvision.datasets(常用数据集的dataset实现,MNIST,CIFAR-10,ImageNet等); torchvison.model(常用的模型预训练,AlexNet,VGG,ResNet,GoogleNet等)。 常用的数据预处理方法,提升泛化能力。包括:数据中心化、数据标准化、缩放、裁剪、旋转、填充

    2024年02月04日
    浏览(42)
  • 使用阿里云试用Elasticsearch学习:3.3 处理人类语言——归一化词元

    把文本切割成词元(token)只是这项工作的一半。为了让这些词元(token)更容易搜索, 这些词元(token)需要被 归一化(normalization)–这个过程会去除同一个词元(token)的无意义差别,例如大写和小写的差别。可能我们还需要去掉有意义的差别, 让 esta、ésta 和 está 都能用同一个词元(to

    2024年04月14日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包