以这个张量为例:

[[3, 2, 1], [1, 2, 3]]

其中第一个维度是样本,第二个维度是特征,所以该数据表示的是两个样本,每个样本都有三个特征。

1 层归一化 (Layer Norm)

主要思想是计算对 每一个样本计算所有特征均值、标准差 ,然后对样本数据进行归一化

就以上面的例子为例,样本 1: [3, 2, 1] 样本 2: [1, 2, 3]

计算每个样本的均值和标准差:
样本 1 的均值: (3 + 2 + 1) / 3 = 2 样本 1 的标准差: \sqrt{\frac{((3 - 2)^2 + (2 - 2)^2 + (1 - 2)^2)}{3}} = \sqrt{\frac{2}{3}}
样本 2 的均值: (1 + 2 + 3) / 3 = 2 样本 2 的标准差: \sqrt{\frac{((3 - 2)^2 + (2 - 2)^2 + (1 - 2)^2)}{3}} = \sqrt{\frac{2}{3}}

所以,均值矩阵: [2, 2] 标准差矩阵: [\sqrt{\frac{2}{3}}, \sqrt{\frac{2}{3}}]

归一化算式是:\text{归一化后的值} = \frac{\text{原始值} - \text{均值}}{\sqrt{\text{方差} + \epsilon}}

所以最后归一化结果为[[ 1.2247, 0.0000, -1.2247],[-1.2247, 0.0000, 1.2247]]

2 批量归一化 (Batch Norm)

主要思想是计算对 每个特征的所有样本计算均值、标准差 ,然后对样本数据进行归一化

计算每个特征的均值和标准差:
特征 1 的均值: (3 + 1) / 2 = 2 特征 1 的标准差: \sqrt{\frac{((3 - 2)^2 + (1 - 2)^2)}{2}} = 1
特征 2 的均值: (2 + 2) / 2 = 2 特征 2 的标准差: \sqrt{\frac{((2 - 2)^2 + (2 - 2)^2)}{2}} = 0
特征 3 的均值: (1 + 3) / 2 = 2 特征 3 的标准差: \sqrt{\frac{((1 - 2)^2 + (3 - 2)^2)}{2}} = 1

所以最后归一化结果为[[ 1.0000, 0.0000, -1.0000],[-1.0000, 0.0000, 1.0000]]