当前位置:   article > 正文

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

权重归一化

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

什么是归一化

归一化(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={x1,...,xi,...,xn},学习参数 γ , β \gamma,\beta γ,β

  1. 计算上一层输出结果的均值: μ β = 1 m ∑ i = 1 m x i , \mu_\beta=\frac1m\sum_{i=1}^mx_i, μβ=m1i=1mxi,m为训练样本batch的大小(批次)
  2. 计算上一层输出结果的方差: σ β 2 = 1 m ∑ i = 1 m ( x i − μ i ) 2 \sigma^2_\beta=\frac1m\sum_{i=1}^m(x_i-\mu_i)^2 σβ2=m1i=1m(xiμi)2
  3. 将样本数归一化/标准化处理: x ′ = x i − μ β σ β 2 + c x^\prime=\frac{x_i-\mu_\beta}{\sqrt{\sigma^2_\beta+c}} x=σβ2+c xiμβ,c是一个很小的常数,主要是避免分母为0。
  4. 更新,将经过归一化处理得到数据更新前向传播: y i = γ x ′ + β y_i=\gamma x^\prime+\beta yi=γx+β

Weight Normalization

权重归一化(Weight Normalization,WN): 顾名思义是对权重做归一化处理。在提出Weight Normalization之前,网络都是偏向于对样本进行归一化,而为了改进优化问题的条件,加快梯度下降的收敛速度,在一些诸如RNN之类的递归模型(因为RNN的输入Sequence/序列是变长的,无法固定批次来处理)和强化学习、对噪声敏感的GAN来说,使用BN并不太合适,于是Tim Salimans就提出了权重归一化,即对神经网络中权重向量的长度与其方向分离。

权重归一化的数学表达式为:Scaling to unit length
γ ′ = g ∣ ∣ v ∣ ∣ v \gamma^\prime=\frac{g}{||v||}v γ=vgv
其中,参数v是k维向量,||v||为v的欧式范数,参数g为标量。 γ \gamma γ被分为v和g两个参数,从上面的式子中可以分析 ∣ ∣ γ ∣ ∣ = g ||\gamma||=g γ=g,与参数v独立,而权重 γ \gamma γ的方向变为 v ∣ ∣ v ∣ ∣ \frac v{||v||} vv,因此权重向量 γ \gamma γ用两个独立的参数表示幅度/大小和方向。

经过WN后,对于v和g的梯度为:
▽ g L = ▽ γ L ⋅ v ∣ ∣ v ∣ ∣    ▽ v L = g ⋅ ▽ γ L ∣ ∣ v ∣ ∣ − g ⋅ ▽ g L ∣ ∣ v ∣ ∣ ⋅ v \triangledown_g L=\frac{\triangledown_\gamma L\cdot v}{||v||}\\ \\\;\\ \triangledown_v L=\frac{g\cdot\triangledown_\gamma L}{||v||}-\frac{g\cdot\triangledown_g L}{||v||}\cdot v gL=vγLvvL=vgγLvggLv
其中, ▽ γ L \triangledown_\gamma L γL为损失函数对为进行WN的权重 γ \gamma γ求偏导。

WN通过改变权重的方式来加速深度学习网络参数收敛,并没有引入mini-batch变量,不需要额外开辟空间来保留每个batch的均值和方差,减少了网络的计算开销,因此采用WN比BN的计算速度要快。

总结

本文主要介绍了归一化,以及神经网络中两个常用的归一化操作:批量归一化和权重归一化。

参考:
https://mp.weixin.qq.com/s?__biz=MzI5MDUyMDIxNA==&mid=2247494179&idx=1&sn=3ebf86b321ac73d276c004872c5ee926&chksm=ec1c07dadb6b8eccee16e828eb7154513e447f4f8a2df0ab27e1965b72a5a7bd547d0570c5fe&mpshare=1&scene=23&srcid=&sharer_sharetime=1585550731022&sharer_shareid=7f7e7160bc27c0d4e5d25b89aee9e9d5#rd
https://blog.csdn.net/shwan_ma/article/details/85292024
https://blog.csdn.net/donkey_1993/article/details/81871132
https://zhuanlan.zhihu.com/p/25732304?utm_source=com.miui.notes&utm_medium=social
https://blog.csdn.net/simsimiztz/article/details/89465836?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/375263
推荐阅读
相关标签
  

闽ICP备14008679号