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无关。

normalization的区别是什么? Batch Normalization(批标准化)和Layer Normalization(层标准化)是两种常用的深度学习标准化技术。它们的区别主要体现在以下几个方面: 1. 适用范围: - Batch Normalization主要用于卷积神经网络(CNN)中,特别是在图像分类任务中表现出色。 - Layer Normalization则更适用于循环神经网络(RNN)和Transformer等序列数据处理任务中,因为序列数据的长度不一致,导致部分样本中某些特征缺失,给基于特征的标准化带来了挑战。 2. 标准化方式: - Batch Normalization是在每个batch的数据上进行标准化。它计算每个特征在整个batch上的均值和方差,并利用这些统计量对每个样本进行标准化。这种方式可以充分利用batch的统计信息,但在处理较小的batch时,可能会引入噪声。 - Layer Normalization是在单个样本的特征维度上进行标准化。它计算每个特征在样本上的均值和方差,并利用这些统计量对该样本进行标准化。这种方式不依赖于batch的统计信息,因此适用于处理小批量或甚至单个样本的情况。 3. 计算方式: - 在神经网络的训练过程中,Batch Normalization是通过对每个batch的数据进行标准化,然后应用缩放和平移操作来恢复模型的表示能力。这些缩放和平移参数是可以被学习的,使得模型能够自适应地调整数据的分布。 - 而Layer Normalization是通过对每个样本的特征进行标准化,然后应用缩放和平移操作来恢复模型的表示能力。与Batch Normalization不同,Layer Normalization的缩放和平移参数是针对每个样本独立学习的,使得模型能够更好地适应不同样本之间的差异。 综上所述,Batch NormalizationLayer Normalization在适用范围、标准化方式和计算方式上有所区别,根据具体任务和数据类型的不同,选择合适的标准化方法对于模型的性能和收敛速度非常重要。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [batch normalizationlayer normalization](https://blog.csdn.net/linkequa/article/details/130514531)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [batch normalizationlayer normalization 在RNN(LSTM、GRU)上的TensorFlow实现](https://download.csdn.net/download/xwd18280820053/9818719)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值