【算法】Normalization

Normalization(归一化)

写这一篇的原因是以前只知道一个Batch Normalization,自以为懂了。结果最近看文章,又发现一个Layer Normalization,一下就懵逼了。搞不懂这两者的区别。后来是不查不知道,一查吓一跳,Normalization的方法五花八门,Batch Normalization, Layer Normalization, Weight Normalization, Cosine Normalization, Instance Normalization, Group Normlization, Switchable Normlization.... 估计我没看到的还有很多。而且郁闷的是,感觉越看越不懂了...

这里简单记录一下目前的理解与问题。

白化

白化的目的是希望特征符合独立同分布i.i.d条件。包括:

  1. 去除特征之间的相关性 —> 独立;
  2. 使得所有特征具有相同的均值和方差 —> 同分布。

这里我有了第一个问题。什么叫做去除特征之间的相关性?

比如,有两个输入向量,X1=(x11,x12,x13,x14), X2=(x21,x22,x23,x24)

去除特征之间的相关性,只是去除x11,x12,x13,x14之间的相关性,还是去除x11和x21的相关性?

Normalization的好处

  1. 使得数据更加符合独立同分布条件,减少internal corvariate shift导致的偏移
  2. 使数据远离激活函数的饱和区,加快速度。(我理解是只对sigmoid这样的激活函数有效,对relu则没有加速作用了)

Normalization基本公式

\[h=f(g\frac{x-\mu}{\sigma}+b)\]

\(\mu\):均值

\(\sigma\):方差根

\(b\): 再平移参数,新数据以\(b\)为均值

\(g\): 再缩放参数,新数据以\(g^2\)为方差

归一化后的目标就是统一不同\(x\)之间的均值和方差

加入\(g\)和\(b\)的目的是使数据一定程度偏离激活函数的线性区,提高模型表达能力。因为均值是0的话正好落在sigmoid函数的线性部分。

第二个问题,g和b是根据什么确定的,是trainable的吗?

Batch Normalization

Batch Normalization是针对不同batch导致的数据偏移做归一化的方式。比如,一个batch有3个输入,每个输入是一个长度为4的向量。

\(X1=(x11,x12,x13,x14)\)

\(X2=(x21,x22,x23,x24)\)

\(X3=(x31,x32,x33,x34)\)

在上述条件下,归一化时的均值是:

\(\mu=(\frac{x11+x21+x31}{3},\frac{x12+x22+x32}{3},\frac{x13+x23+x33}{3},\frac{x14+x24+x34}{3})\)

这里主要展示一下计算时的方向,即对于每个元素位置,对不同的输入做归一化。方差同理。

第三个问题,很多文章都说batch norm需要在batch size较大,不同batch之间均值方差相差不大的情况下效果好。

即batch的均值方差跟整体的均值方差一致时效果好。

这我就不懂了,无论之前每个batch的分布是怎样的,经过归一化,都已经是相同分布了。为什么一定要原始batch之间分布相似呢?

Batch norm有个缺点,即需要记录每一个batch输入的均值和方差,对于变长的RNN网络来说计算麻烦。

第四个问题:为什么要记录每个batch的均值和方差?对RNN效果不好仅仅因为麻烦吗?

我个人理解BN在RNN上效果不好的原因是,虽然RNN训练时网络深度很深,但实际上只有一个神经元节点,相当于把所有层的神经元的均值和方差设定为相同的值了,导致效果不佳。

如果是图像,则输入是一个四维矩阵,(batch_size, channel_size, weight, height),此时batch norm是针对同一个batch的不同输入中属于同一通道的元素做归一化。如下图,是一个batch_size=2, channel_size=6, weight=5, height=3的例子。一次batch norm是对所有橙色部分元素做归一化。

Layer Normalization

Layer Normalization是针对同一个输入的不同维度特征的归一化方式。还是用上面的例子。

对于\(X1\)来说,layer norm的归一化均值是: \(\mu=\frac{x11+x12+x13+x14}{4}\)

对于图像来说,则是对一个输入的所有元素做归一化。如下图橙色部分:

Instance Norm

对一个输入图像的一个通道中的所有元素做归一化。如下图橙色部分:

Group Norm

对于一个输入图像的多个通道元素做归一化。如下图橙色部分:

Weight Norm

前面的归一化方法都是从不同维度对输入数据做归一化,而weight norm则是对权重做归一化。

Cosine Norm

抛弃了权重和输入点积的计算方式,改用其他函数。

参考文献

  1. https://zhuanlan.zhihu.com/p/33173246
  2. https://blog.csdn.net/liuxiao214/article/details/81037416

原文地址:https://www.cnblogs.com/dplearning/p/10145137.html

时间: 2024-11-25 16:31:44

【算法】Normalization的相关文章

[Elasticsearch] 全文搜索 (三) - match查询和bool查询的关系,提升查询子句

match查询是如何使用bool查询的 现在,你也许意识到了使用了match查询的多词查询只是简单地将生成的term查询包含在了一个bool查询中.通过默认的or操作符,每个term查询都以一个k语句被添加,所以至少一个should语句需要被匹配.以下两个查询是等价的: { "match": { "title": "brown fox"} } { "bool": { "should": [ { "

常见的几种 Normalization 算法

神经网络中有各种归一化算法:Batch Normalization (BN).Layer Normalization (LN).Instance Normalization (IN).Group Normalization (GN).从公式看它们都差不多,如 (1) 所示:无非是减去均值,除以标准差,再施以线性映射. Batch Normalization Batch Normalization (BN) 是最早出现的,也通常是效果最好的归一化方式.feature map: 包含 N 个样本,每

深度解读最流行的优化算法:梯度下降

深度解读最流行的优化算法:梯度下降 By 机器之心2016年11月21日 15:08 梯度下降法,是当今最流行的优化(optimization)算法,亦是至今最常用的优化神经网络的方法.本文旨在让你对不同的优化梯度下降法的算法有一个直观认识,以帮助你使用这些算法.我们首先会考察梯度下降法的各种变体,然后会简要地总结在训练(神经网络或是机器学习算法)的过程中可能遇到的挑战.(本文的中文版 PDF 下载地址) 目录: 梯度下降的各种变体 批量梯度下降(Batch gradient descent)

转:数据标准化/归一化normalization

转自:数据标准化/归一化normalization 这里主要讲连续型特征归一化的常用方法.离散参考[数据预处理:独热编码(One-Hot Encoding)]. 基础知识参考: [均值.方差与协方差矩阵] [矩阵论:向量范数和矩阵范数] 数据的标准化(normalization)和归一化 数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间.在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较

梯度下降优化算法综述

本文翻译自Sebastian Ruder的"An overview of gradient descent optimization algoritms",作者首先在其博客中发表了这篇文章,其博客地址为:An overview of gradient descent optimization algoritms,之后,作者将其整理完放在了arxiv中,其地址为:An overview of gradient descent optimization algoritms,在翻译的过程中以

网易云音乐的歌单推荐算法

[转载]原文地址:https://www.zhihu.com/question/26743347 原文: 不是广告党,但我却成为网易云音乐的的重度患者,不管是黑红的用户界面,还是高质量音乐质量都用起来很舒服.我喜欢听歌,几乎每周不低于15小时,但其实听得不是特别多,并没有经常刻意地去搜歌名,所以曲目数量我并不是很在乎.但是比起其它,网音给我推荐的歌单几乎次次惊艳,而且大多都没听过,或者好久以前听过早就忘记了名字,或者之前不知道在哪听过 只是知道其中一部分旋律,根本不知道名字,等等,听起来整个人大

(转)深度学习前沿算法思想

深度学习前沿算法思想 本文转自: https://mp.weixin.qq.com/s?__biz=MzA5NDExMTAzNA==&mid=2649981646&idx=2&sn=8fe05eac5a5068efb65ca1602e5fd3a0&chksm=8854b69bbf233f8db5dbaa1ea8396d181c9a35e760ab3c1c4934b504f69fe92683972d78d327&mpshare=1&scene=2&sr

Batch Normalization 学习笔记

原文:http://blog.csdn.net/happynear/article/details/44238541 今年过年之前,MSRA和Google相继在ImagenNet图像识别数据集上报告他们的效果超越了人类水平,下面将分两期介绍两者的算法细节. 这次先讲Google的这篇<Batch Normalization Accelerating Deep Network Training by Reducing Internal Covariate Shift>,主要是因为这里面的思想比较

图像处理之增强---图像增强算法四种,图示与源码,包括retinex(ssr、msr、msrcr)和一种混合算法

申明:本文非笔者原创,原文转载自:http://blog.csdn.net/onezeros/article/details/6342661 两组图像:左边较暗,右边较亮 第一行是原图像,他们下面是用四种算法处理的结果 依次为: 1.一种混合算法 2.msr,multi-scale retinex 3.msrcr,multi-scale retinex with color restoration 4.ssr,single scale retinex           源码,retinex算法