暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

进行批归一化的原因

IT那活儿 2024-07-15
106

点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!



由于不同的特征之间,其量纲往往不同,变化区间也处于不同的数量级,若不进行归一化,可能导致某些指标被忽略,影响到数据分析的结果。为了消除特征之间的量纲影响,需要进行归一化处理,经归一化处理后,各个指标处于同一种数量级。




归一化主要有哪些类型
归一化主要有最小-最大归一化,零均值归一化,非线性归一化三种类型。其中最小-最大归一化 是线性归一化,不改变数据分布,只是改变了数据分布范围。零均值归一化是均值为0,方差为1的标准化操作,数据分布发生了变化。

1.1 线性归一化

如果max 和 min 不稳定,很容易使得归一化结果不稳定,使得后续使用效果也不稳定。

1.2 零均值标准化

经过处理的数据符合标准正态分布,即均值为0,标准差为1。其中为所有样本数据的均值。为所有样本数据的标准差。
1.3 非线性归一化

经常用在数据分化比较大的场景,有些数值很大,有些很小。通过一些数学函数,将原始值进行映射。该方法包括log、指数,正切等。


为什么需要做批归一化
一是缓解了内部协变量偏移,让每层的输出能够稳定在一个大致的区间内部。
二是可以损失函数曲线变得平滑,更容易收敛,加速模型收敛。不同特征的量纲不同,导致损失函数会被某个特征所主导。
每一层的激活函数和参数变化都会改变输入的分布,层数越高,输入分布改变越明显,如果一个神经层的输入分布发生了改变,那么其参数需要重新学习,这就使得高层需要不断去重新适应底层的参数更新。
批归一化可以使每一层的输入分布都归一化,变换为均值为b、方差为的分布,也并不是严格的同分布,只是映射到了一个确定的区间范围,不论低层参数如何变化,高层输入保持相对稳定的分布。
通过一个batch中的所有样本,计算均值和方差,进行归一化,然后学习两个参数,均值参数和方差参数。所以从整体上来说,BN做的事情就是为了让输出保持稳定。

如果使用均值为0,方差为1的分布,会大大削弱了神经网络的表达能力,所以为了再恢复这部分表达能力,又用两个新的均值和方差参数把分布往回转化。这样就在两者之间做了一个平衡。


BN不适合用于哪些情况
3.1 batch size太小不适合
使用bach内部的均值和方差模拟全部样本中的均值和方差,如果batch size太小,在这个近似不成立,所以效果会很差。
3.2 不适合在RNN结构中
BN在NLP中的应用,是在batch内全部样本中的全部单词的第一个维度(或者第N个维度)做归一化。
这个并不合理。C这个维度在图像中代表的是图片通道的情况,比如一个位置在RGB三个空间表示不同,而在词向量这块,还是认为在同一个语义空间的。其次在NLP这种场景天然带有一些不等长的情况,那么统计出来的均值和方差其实就不具备普适性,准确度也会降低。

END


本文作者:李 昊(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论