归一化总结


1. 批归一化(Batch Normalization,BN)

BN层在训练时对每个mini-batch的输入数据进行归一化操作,使得每个神经元的激活值在数据分布上更加稳定。BN可以提高网络训练速度和效果,并具有正则化作用,能够一定程度上防止过拟合。其数学公式如下:
在这里插入图片描述
其中, x i x_i xi表示mini-batch中第 i i i个样本的输入数据, E [ x ] \mathrm{E}[x] E[x]表示mini-batch的均值, V a r [ x ] \mathrm{Var}[x] Var[x]表示mini-batch的方差, ϵ \epsilon ϵ是一个非常小的常数(如 1 0 − 5 10^{-5} 105),以防止方差为零的情况。

在训练时,BN层还需要维护一个移动平均值和移动方差,用于在推理时对输入数据进行归一化操作。

torch.nn.BatchNorm1d()、torch.nn.BatchNorm2d()、torch.nn.BatchNorm3d()

2. 组归一化(Group Normalization,GN):

GN层将每个通道分成若干个组,然后对每个组内的数据进行归一化,从而使得每个组内的激活值相对独立。GN适用于较小的批量大小或通道数较少的情况,并且在训练和测试时具有相同的效果。其数学公式如下:
在这里插入图片描述
其中, x n , c , h , w x_{n,c,h,w} xn,c,h,w表示输入数据的第 n n n个样本的第 c c c个通道、第 h h h行、第 w w w列的值, G G G表示组数, E [ x n , G , h , w ] \mathrm{E}[x_{n,G,h,w}] E[xn,G,h,w] V a r [ x n , G , h , w ] \mathrm{Var}[x_{n,G,h,w}] Var[xn,G,h,w]分别表示第 n n n个样本在第 G G G个组内的均值和方差。
torch.nn.GroupNorm()

3. 实例归一化(Instance Normalization,IN):

IN层在每个样本的每个通道上进行归一化,从而增强了特征之间的独立性。IN通常用于图像风格迁移等任务中,可以减少模型的过拟合风险。其数学公式如下:
在这里插入图片描述
其中, x n , c , h , w x_{n,c,h,w} xn,c,h,w表示输入数据的第 n n n个样本的第 c c c个通道、第 h h h行、第 w w w列的值, E [ x n , c ] \mathrm{E}[x_{n,c}] E[xn,c] V a r [ x n , c ] \mathrm{Var}[x_{n,c}] Var[xn,c]分别表示第 n n n个样本在第 c c c个通道上的均值和方差。
torch.nn.InstanceNorm1d()、torch.nn.InstanceNorm2d()、torch.nn.InstanceNorm3d()

4. 层归一化(Layer Normalization,LN):

LN层在每个样本的每个特征维度上进行归一化,从而增强了特征之间的独立性,使得模型对输入数据的小扰动更加鲁棒。LN通常用于自然语言处理等任务中,可以缓解梯度消失问题,并且在训练和测试时具有相同的效果。其数学公式如下:
在这里插入图片描述
其中, x i x_i xi表示输入数据在第 i i i个特征维度上的值, E [ x ] \mathrm{E}[x] E[x]表示在该特征维度上的均值, V a r [ x ] \mathrm{Var}[x] Var[x]表示在该特征维度上的方差, ϵ \epsilon ϵ是一个非常小的常数(如 1 0 − 5 10^{-5} 105),以防止方差为零的情况。
torch.nn.LayerNorm()

5. 权重归一化(Weight Normalization,WN):

WN是一种对网络参数进行归一化的方法,可以将网络中的权重矩阵分解为模和方向两个部分,从而增强模型对输入数据的平移不变性和旋转不变性。WN通常用于循环神经网络等模型中,可以加速模型收敛速度并减少过拟合风险。其数学公式如下:
在这里插入图片描述
其中, v v v表示网络的权重向量, ∣ v ∣ |v| v表示该向量的模长。WN层的归一化操作在每个迭代步骤中都会进行,因此可以看作是对网络的参数进行动态的归一化操作。
torch.nn.utils.weight_norm()

6. 局部响应归一化(Local Response Normalization,LRN):

LRN层在每个位置的通道上进行归一化,对输入数据在局部邻域内进行响应归一化,使得在相邻的特征图(Feature Map)上得到的响应可以被归一化,而不仅仅是在单个特征图上进行归一化。这样可以增强模型对输入数据中不同特征之间的区分度,并防止激活值过大或过小的情况。,其数学公式如下:
在这里插入图片描述
其中, x i , c x_{i,c} xi,c表示输入数据在第 i i i个位置的第 c c c个通道上的值, C C C表示通道数, n n n表示归一化的范围, k , α , β k,\alpha,\beta k,α,β是超参数,用于控制归一化的强度和范围。可以看出,LRN层通过将输入数据在一个局部邻域内进行平方和计算和除法操作,实现了对输入数据在不同通道上的归一化操作。
torch.nn.LocalResponseNorm()

7. 通道间归一化(Cross-Channel Normalization,CCN):

CCN层在每个位置的所有通道上进行归一化,其数学公式如下:
在这里插入图片描述
其中, x i , c x_{i,c} xi,c表示输入数据在第 i i i个位置的第 c c c个通道上的值, C C C表示通道数, n n n表示归一化的范围, α \alpha α是一个超参数,用于控制归一化的强度和范围。
torch.nn.CrossChannelNorm()

8. 跨通道局部响应归一化(Cross-Map Local Response Normalization,CrossMapLRN):

CrossMapLRN层在每个位置的所有通道上进行归一化,CrossMapLRN层将每个特征映射上的值除以一个局部响应归一化的因子,同时还会将不同特征映射之间的值进行交叉通道归一化,以此来增强模型的泛化性能和鲁棒性。其数学公式如下:
在这里插入图片描述
其中, x i , c x_{i,c} xi,c表示输入数据在第 i i i个位置的第 c c c个通道上的值, C C C表示通道数, n n n表示归一化的范围, k , α , β k,\alpha,\beta k,α,β是超参数,用于控制归一化的强度和范围。CrossMapLRN与LRN的区别在于,CrossMapLRN在归一化时只考虑同一位置的不同通道间的响应,而不考虑不同位置的响应。
torch.nn.CrossMapLRN2d()

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在MATLAB中,归一化是将一组数据按比例缩放到特定的区间范围中,使得数据的取值范围统一和标准化。常见的归一化方法有线性归一化和零均值归一化。 线性归一化是将数据按照线性映射的方式缩放到[0, 1]的范围内。具体的计算公式如下: $$X_{\text{norm}} = \frac{X - \min(X)}{\max(X) - \min(X)}$$ 其中,$X$为原始数据,$X_{\text{norm}}$为归一化后的数据,$\min(X)$和$\max(X)$分别是原始数据的最小值和最大值。 零均值归一化是将数据按照均值为0,标准差为1的方式进行缩放。具体的计算公式如下: $$X_{\text{norm}} = \frac{X - \text{mean}(X)}{\text{std}(X)}$$ 其中,$X$为原始数据,$\text{mean}(X)$和$\text{std}(X)$分别是原始数据的均值和标准差。 反归一化就是将归一化后的数据恢复到原始的数据范围。反归一化过程的具体步骤与归一化过程相反。对于线性归一化,反归一化的计算公式如下: $$X = X_{\text{norm}} \times (\max(X) - \min(X)) + \min(X)$$ 对于零均值归一化,反归一化的计算公式如下: $$X = X_{\text{norm}} \times \text{std}(X) + \text{mean}(X)$$ 通过反归一化,我们可以将归一化的数据再次还原到原始的数据范围,以便进行后续的分析和应用。 ### 回答2: 在MATLAB中,归一化和反归一化是对数据进行预处理和还原操作的重要技术。 归一化是将数据按照一定的比例缩放到特定的区间范围内,常用的方法有最小-最大归一化和Z-score归一化。 最小-最大归一化将数据线性缩放到[0,1]的区间范围内,公式为: Y = (X - Xmin) / (Xmax - Xmin) 其中,X表示原始数据,Xmin表示数据的最小值,Xmax表示数据的最大值,Y表示归一化后的数据。 Z-score归一化通过计算数据的均值和标准差,将数据转化为标准正态分布的值,公式为: Y = (X - μ) / σ 其中,X表示原始数据,μ表示数据的均值,σ表示数据的标准差,Y表示归一化后的数据。 反归一化则是将归一化后的数据还原为原始数据,方法为根据归一化的方法和参数反向计算得到原始数据。 最小-最大反归一化公式为: X = Y * (Xmax - Xmin) + Xmin Z-score反归一化公式为: X = Y * σ + μ 其中,X表示原始数据,Y表示归一化后的数据,Xmin、Xmax、μ和σ分别表示归一化和反归一化的参数。 通过MATLAB中提供的函数和工具,可以方便地实现数据的归一化和反归一化操作。 ### 回答3: 归一化和反归一化是在数据处理过程中常用的方法。在MATLAB中,我们可以通过以下方式实现归一化和反归一化。 1. 归一化归一化是将数据映射到一个特定的范围,常用的归一化方法是将数据映射到0和1之间或-1和1之间。在MATLAB中,可以通过以下步骤实现归一化: a. 找到数据的最小值和最大值,可以使用min()和max()函数来获取最小和最大值。 b. 将数据减去最小值,并除以最大值减去最小值。这样可以将数据映射到0和1之间。可以使用以下公式实现:normalized_data = (data - min(data)) / (max(data) - min(data)). c. 现在,normalized_data中的数据已经被归一化到0和1之间。 2. 反归一化: 反归一化是将归一化的数据映射回原始的数据范围。在MATLAB中,可以通过以下步骤实现反归一化: a. 找到原始数据的最小值和最大值。 b. 将归一化的数据乘以最大值减去最小值,并加上最小值。这样可以将归一化的数据映射回原始的数据范围。可以使用以下公式实现:original_data = normalized_data * (max(data) - min(data)) + min(data). c. 现在,original_data中的数据已经被反归一化回原始的数据范围。 总结归一化可以将数据映射到特定的范围,常用的是将数据映射到0和1之间或-1和1之间。反归一化可以将归一化的数据映射回原始的数据范围。在MATLAB中,可以使用min()、max()和一些简单的数学运算来实现归一化和反归一化

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值