1. 前言
Layer Normalization是深度学习实践中已经被证明非常有效的一种解决梯度消失或梯度爆炸问题,以提升神经网络训练效率及稳定性的方法。OpenAI的GPT系列大语言模型使用Layer Normalization对多头注意力模块,前馈神经网络模块以及最后的输出层的输入张量做变换,使shape为[batch_size, num_tokens, embedding_dim]
的输入张量的embedding_dim
维度数据的均值为0,方差为1。
本文介绍Layer Normalization的基本原理及其对输入张量的embedding_dim
维度数据均值及方差做变换的方法,并实现继承自torch.nn.Module
的神经网络模块LayerNorm
。后续三篇文章将分别介绍前馈神经网络(feed forward network)与GELU激活函数,残差连接(shortcut connection),Transformer Block,并最终构建出OpenAI的GPT系列大语言模型GPTModel
。
2. Layer Normalization
如下图所示,对神经网络模块输出的均值为0.13,方差为0.39的6维向量做Layer Normalizaition,可以使输出向量的均值变为0,方差变为1。
可以使用torch.nn.Sequential(torch.nn.Linear(5, 6), torch.nn.Re