Batch Normalization
其中,m代表特征个数,γ和β分别代表缩放参数和平移参数。y是xbatchnormalization的输出。
从公式可以看出将不同批次中的同一个特征进行去均值,去方差的标准化处理,从而获得帽子x。
其实我们污水处理过程的数据处理也是这样的,matlab中调用了norm函数,python中调用了sklearn.preprocess.stand。(在污水中唯一没有使用的是缩放和平移)。
四种标准化方式作对比:
其中N代表的是batch方向,C代表的通道方向(可以理解为图片中的三通道,H,W代表图片的长和宽)
batchnormalization的目的是
- 降低不同特征之间量纲不一样导致的受某些特征影响大,某些特征影响小的问题
- 加速模型收敛,标准化后数据集中在(-1,1)之间,这有利于模型的训练
- 对于深度学习每一层都加一个batchnormalization的话可以有效地降低模型过拟合的风险
对应在污水处理里面,我们是时间序列数据,并不存在多通道的情况,每个batch代表一个时间样本,batchnormalization就是在时间方向对样本进行标准化处理。
在讲述了Batchnormalization之后,我们了解一下其他标准化方式:
Layernormlization是一种层归一化方式,由上图可以看出,Layernormlization是对一个batch内进行标准化(transformer就是采用这种标准化的方式),这种方式适合自然语言处理,因为语言并不是人们常理解的那种结构化数据,每一句话的字数都可能不一致,采用这种layernormlization更加符合这种特点。
另外两种方式目前接触不多,不常用到。