自学内容网 自学内容网

Transformer学习记录(5):Batch Normalization与Layer Normalization

简介

Batch Normalization
Layer Normalization

BatchNorm与Layer Norm都是用于标准化数据的,Batch Normalization是用于图像预处理的,而Layer Normalization最初是用于自然语音的,但随着Transformer在图像的使用,Layer Normalization也用于图像中。

我们在图像预处理过程中通常会对图像进行标准化处理,这样能够加速网络的收敛。

Batch Normalization

原理

数据在网络中传输时,数据的分布就可能不会满足某一种分布,如下图所示,对于Conv1来说输入的就是满足某一分布的特征矩阵,但对于Conv2而言输入的feature map就不一定满足某一分布规律了(这里所说的满足某一分布规律是指整个训练集所对应的feature map要满足某种分布)。
因此需要对输入到Conv2的数据进行标准化。Batch Normalization的目的就是使我们的feature map满足均值为0,方差为1的分布规律
在这里插入图片描述
Batch Normalization是对训练集中的每个维度进行都进行标准化处理
假设输入图像为RGB的三通道图像X,则将X分为 x ( 1 ) , x ( 2 ) , x ( 3 ) x^{(1)},x^{(2)},x^{(3)} x(1),x(2),x(3),代表了RGB三个通道所对应的特征矩阵,标准化处理也就是分别对我们的R通道,G通道,B通道进行处理。

之前说过目的是让整个训练集的feature map都符合某个分布,但对于一个大型数据集来说,计算出所有feature map再进行标准化是不现实的,因此Batch Normalization中是对于一个Batch的数据的feature map进行标准化,batch 越大,效果越接近真实。

原文给出了计算公式,其中:

  1. μ B \mu _B μBbatch中每个维度的feature map的均值 μ B \mu_B μB是一个向量,每个元素代表着一个维度的均值
  2. σ B 2 \sigma^2_B σB2“batch中每个维度的feature map的方差 σ B 2 \sigma^2_B σB2是一个向量,每个元素代表着一个维度的方差
  3. x i x_i xi:batch中的输入数据

计算出每个维度均值与方差后,使用这些矩阵与方差来标准化对应维度的feature。
在这里插入图片描述
下图是一个实例,这里batch size=2,feature1、feature2分别是由image1、image2经过一系列卷积池化后得到的特征矩阵,feature的channel为2。
x ( 1 ) x^{(1)} x(1)代表着batch中所有图像的feature中channel1的数据 x ( 2 ) x^{(2)} x(2)同理。
然后分别计算 x ( 1 ) x^{(1)} x(1) x ( 2 ) x^{(2)} x(2)的均值与方差,得到向量 μ 与 σ \mu 与 \sigma μσ。最后使用这两个向量根据标准差公式对对应channel的feature进行标准化。
在这里插入图片描述

在pytorch中的使用

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Layer Normalization

Layer Normalization与Batch Normalization的计算公式是一样,但与Batch Normalization不同的是BN是对一个batch数据每个channel进行Norm处理,但LN是对单个数据指定channel进行Norm处理,与batch无关。


原文地址:https://blog.csdn.net/Life1213/article/details/142251081

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!