大模型基础组件 - LayerNorm

LayerNorm

无论是BatchNorm还是LayerNorm,所做都是“减均值,除标准差”的操作,即两种归一化方法都是将数据转换为标准正态分布。

BatchNorm将不同样本相同维度的特征处理为相同的分布。以上述方法对一维数据进行归一化的操作非常常见。假设我们以身高和体重两个指标刻画一个人,即特征维度为2,我们采集了20个人的身高和体重数据,即样本数为20。要知道身高数据的表示可能是175cm、182cm等,而体重数据往往形如63kg、72kg…很明显,从数值来看,身高和体重数据是“风马牛不相及”的两个分布,但是经过上述BatchNorm的加工,二者分布均成为标准正态分布。

BatchNorm针对同一特征,以跨样本的方式开展归一化,因此不会破坏不同样本同一特征之间的关系,毕竟“减均值,除标准差”就是一个平移加缩放的线性操作。在“身高体重”的例子中,这就意味着“归一化前是高个儿的归一化后仍然是高个儿,归一化前胖的归一化后也不会变瘦”。这一性质进而决定了经过归一化操作后,样本之间仍然具有可比较性。但是,特征与特征之间的不再具有可比较性。

BatchNorm认为相同维的特征具有相同分布,因此在特征维度上开展归一化操作,归一化的结果保持样本之间的可比较性。

LayerNorm的归一化方式——计算一个句子的均值和标准差,然后对句中的每个词做归一化操作。
LayerNorm所做的操作,类似于在一个句子中找到一个“语义中心”,然后将句子中的所有词都聚集在这个中心的周围,而句中词与词之间的比较关系不会遭到破坏。
而LayerNorm认为每个样本内的特征具有相同分布,因此针对每一个样本进行归一化处理,保持相同样本内部不同对象的可比较性。

BatchNorm需要平衡小批次统计量和整体样本统计量之间的关系,还需要考虑利用批次统计量更新全局统计量的方法,这也涉及训练和测试阶段使用的统计量有“批次版”和“全局版”的问题…等等。而这些问题到了LayerNorm就都不再是问题——LayerNorm的归一化操作只在样本内部独立开展,因此实际可以完全忽略批次的存在。因此也不用考虑保存和更新的问题且训练和测试应用模式完全一致,均值和标准差随算随用。

为什么Transformer要用LayerNorm? - 铁心核桃的回答 - 知乎
https://www.zhihu.com/question/487766088/answer/3094052709

RMSNorm相比LayerNorm的好处

效果相当,速度更快

SwiGLU

相比传统的激活函数,效果更好

引入了额外的参数


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!