数据归一化是深度学习数据预处理中非常关键的步骤,可以起到统一量纲,防止小数据被吞噬的作用。

一:归一化的概念

归一化就是把所有数据都转化成[0,1]或者[-1,1]之间的数,其目的是为了取消各维数据之间的数量级差别,避免因为输入输出数据数量级差别大而造成网络预测误差过大。

二:归一化的作用

1)为了后面数据处理的方便,归一化可以避免一些不必要的数值问题。

2)为了程序运行时收敛速度更快

3)统一量纲。样本数据的评价标准不一样,需要对其量纲化,统一评价标准,这算是应用层面的需求。

4)避免神经元饱和。就是说当神经元的激活在接近0或者1时,在这些区域,梯度几乎为0,这样在反向传播过程中,局部梯度就会接近于0,这样非常不利于网络的训练。

5)保证输出数据中数值小的不被吞食。

三:归一化的类型

1:线性归一化

线性归一化也被称为最小-最大规范化;离散标准化,是对原始数据的线性变换,将数据值映射到[0,1]之间。用公式表示为:

差标准化保留了原来数据中存在的关系,是消除量纲和数据取值范围影响的最简单的方法。代码实现如下:

def MaxMinNormalization(x,Max,Min):x = (x - Min) / (Max - Min);return x

适用范围:比较适用在数值比较集中的情况

缺点:1)如果max和min不稳定,很容易使得归一化的结果不稳定,使得后续使用效果也不稳定。如果遇到超过目前属性[min,max]取值范围的时候,会引起系统报错。需要重新确定min和max。

2)如果数值集中的某个数值很大,则规范化后各值接近于0,并且将会相差不大。(如 1,1.2,1.3,1.4,1.5,1.6,10)这组数据。

2:零-均值归一化(Z-score标准化)

Z-score标准化也被称为标准差标准化,经过处理的数据的均值为0,标准差为1。其转化公式为:

其中为原始数据的均值,为原始数据的标准差,是当前用的最多的标准化公式

这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1,这里的关键在于复合标准正态分布

代码实现如下:

def Z_ScoreNormalization(x,mu,sigma):x = (x - mu) / sigma;return x

3:小数定标规范化

这种方法通过移动属性值的小数数位,将属性值映射到[-1,1]之间,移动的小数位数取决于属性值绝对值的最大值。转换公式为:

4:非线性归一化

这个方法包括log,指数,正切

适用范围:经常用在数据分析比较大的场景,有些数值很大,有些很小,将原始值进行映射。

四:批归一化(BatchNormalization)

1:引入

在以往的神经网络训练时,仅仅只对输入层数据进行归一化处理,却没有在中间层进行归一化处理。虽然我们对输入数据进行了归一化处理,但是输入数据经过了这样的矩阵乘法之后,其数据分布很可能发生很大改变,并且随着网络的层数不断加深。数据分布的变化将越来越大。因此这种在神经网络中间层进行的归一化处理,使得训练效果更好的方法就被称为批归一化(BN)

2:BN算法的优点

1)减少了人为选择参数

2)减少了对学习率的要求,我们可以使用初始状态下很大的学习率或者当使用较小的学习率时,算法也能够快速训练收敛。

3)破换了原来的数据分布,一定程度上缓解了过拟合(防止每批训练中某一个样本经常被挑选到)

4)减少梯度消失,加快收敛速度,提高训练精度。

3:批归一化(BN)算法流程

输入:上一层输出结果X={x1,x2,.....xm},学习参数

算法流程:

1)计算上一层输出数据的均值:

其中,m是此次训练样本batch的大小。

2)计算上一层输出数据的标准差:

3)归一化处理得到

公式中的是为了避免分母为0而加进去接近于0的很小的值。

4)重构,对经过上面归一化处理得到的数据进行重构,得到:

其中为可学习的参数。

详细理解可参考:深度学习基础之归一化

几种常见的归一化方式

几种常见的归一化方法相关推荐

  1. 计算机系统故障如何处理,安装操作系统出错怎么办?几种常见的异常处理方法介绍(图文)...

    安装操作系统出错怎么办?很多人在碰到这样的问题都不知道该如何操作,其实安装系统出错比较常见,有共性,也有个性,而且还要具体问题具体分析.下面小编就给大家列举几种常见的异常处理方法,仅供大家参考,希望能 ...

  2. 归一化mysql函数_数据归一化和两种常用的归一化方法

    数据归一化和两种常用的归一化方法 一.总结 一句话总结: min-max标准化:x* =(x-min)/(max-min):新数据加入,需重新计算max和min Z-score标准化:x* =(x-μ ...

  3. 数据归一化和两种常用的归一化方法

    数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可 ...

  4. 【机器学习】交叉验证详细解释+10种常见的验证方法具体代码实现+可视化图

    [机器学习]交叉验证详细解释+10种常见的验证方法具体代码实现+可视化图 一.使用背景 由于在训练集上,通过调整参数设置使估计器的性能达到了最佳状态:但在测试集上可能会出现过拟合的情况. 此时,测试集 ...

  5. 几种常见的排序方法整理

    几种常见的排序方法整理 一.直接插入排序 插入排序是一种简单直观的排序算法.通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入.插入排序在从后向前扫描的过程中,需要反复把 ...

  6. 数据归一化:两种常用的归一化方法

    数据归一化:不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据归一化处理,以解决数据指标之间的可比性.原始数据经过数据归一化处理后,各 ...

  7. python中的排序方法都有哪些_几种常见的排序方法总结(Python)

    几种常见的排序算法总结(Python) 排序算法:是一种能将一串数据依照特定顺序进行排序的一种算法. 稳定性:稳定排序算法会让原本有相等键值的记录维持相对次序.也就是如果一个排序算法是稳定的,当有两个 ...

  8. 七种常见的数据分析方法拆解

    数据分析一直是互联网人辨别方向的不二法门,我们通过对数据的观测来判断事物的发展趋势,也常常利用数据的思维来辩证的为决策做参考. 下面就给大家详细拆解七种常见的数据分析法,让我们的数据分析少走弯路. 0 ...

  9. 11种常见的多变量分析方法

    在社会科学研究中,主要的多变量分析方法包括多变量方差分析(Multivariate analysis of variance,MANOVA).主成分分析(Principal component ana ...

  10. java中的排序方法_Java中8种常见的排序方法

    本博主要介绍Java中几种常见的排序算法: /* 排序方法的演示 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分 ...

最新文章

  1. 某阿里8年资深程序员求助:连续两次绩效挂掉,被hr辞退不给n+1,怎么办?
  2. UITableView当数据很少的时候,去掉多余的cell分割线
  3. vue通信方法EventBus的实现
  4. 关于验证码整理的新版本
  5. Retrofit+RxJava
  6. 013 Android锁机病毒分析
  7. JAVA中将带负数的String字符串转换为int型数组方法
  8. 在anaconda中为jupyter安装扩展插件
  9. python - 多线程、装饰器
  10. MFC中CImageList的用法
  11. 人脸识别最全知识图谱,中国学者数量全球第三—清华大学出品
  12. in not 效率太慢_[笔记] SQL性能优化 - 避免使用 IN 和 NOT IN
  13. Android 判断当前身份证格式是否正确
  14. 【项目小结】爬虫学习进阶:获取百度指数历史数据
  15. [QNX Hypervisor 2.2用户手册]10.4 vdev hpet
  16. php 评论插件,织梦评论插件,dedecms评论插件
  17. Google结构化数据
  18. Simulink根据魔术公式建立轮胎模型
  19. Coming soon 3 for Mac(电影信息软件)
  20. 6.0系统设备Root激活Xposed框架教程

热门文章

  1. 苹果绕过ID_苹果iphone绕ID教程
  2. Fiddler 4——手机抓包工具
  3. 内连接和外联结连接的区别
  4. 通过使用 NTLite 工具实现精简Windows系统
  5. 【科研必备】常用数学符号大全
  6. 常用Gis通用符号库大全
  7. HTML_BOM-01
  8. Qt连接达梦数据库(DM7)
  9. OpenProj: The OpenSource Solution for Managing Your Projects
  10. 3.4 常用数据类型的输入 [原创Excel教程]