ChatGPT 的组件:Transformer 模型结构
稀疏 Transformer
稀疏 Transfomer 的思想基础
Sparse Transformer 的核心实际上是 Sparse Self-Attention (稀疏自注意力机制)。
Self-Attention 的计算公式
稀疏 Transformer 的本质,就是选择不计算某些 token 位置的注意力值。
稀疏 Transformer 原理
计算某一位置注意力权重的公式
跨步分解注意力机制(Strided Factorized Attention) 和 固定分解注意力机制(Fixed Factorized Attention) 。它们的原理如下图所示。
多头(multi-head)注意力机制
前面讲述了制作一次注意力机制的全过程,所谓多头注意力机制,就是在模型中多做几次注意力机制,以期让模型能够注意到不同的信息。
注意,图中仅仅展示了某一位置的 token 的计算结果,实际上的输入为所有 token embedding 构成的矩阵。
Normalization 正规化
如前 Transformer 结构图所示,在每一个 Attention 模块接入之前,都有一个 norm 模块。它是神经网络模型中常见的 Normalization 正规化模块。
事实上,Normalization 一般分为 Batch Normalization、Layer Normalization 等。在 NLP 领域,常用的是 Layer Normalization,它就是指,针对每一条输入数据的所有数值元素做 norm 操作。
Dropout 机制
在 Transformer 结构图所示,在每一个 Attention 模块接入之前,都有一个 dropout 模块。这个模块的主要功能是防止模型在训练过程中的过拟合。
过拟合( O verfitting) ,是指模型在训练数据上表现良好,但在测试数据上表现较差的现象。简单来说,过拟合就是模型过于复杂,以至于在训练数据上表现得非常好,但在新数据上的泛化能力却很差。过拟合通常是由于模型过于复杂,或者训练数据过少导致的。当模型过于复杂时,它会尝试去适应训练数据中的每一个细节,甚至是噪声,导致在新数据上的表现不佳。而当训练数据过少时,模型可能无法学习到足够的特征,也会导致过拟合。
ResNet 残差模块
在 Transformer 结构图中,Attention 模块的输入 embed 和输出结果有一个叠加,这种叠加操作被称为残差模块。之所以这么操作,主要是为了方便模型的训练过程中,梯度不会消失或爆炸。其本质目的在于顺利使模型完成训练,达到目标效果。具体细节会在第 8 节模型训练过程中做介绍。
Linear Feed-forward 全连接层
全连接层,就像在之前内容中为 Q、K、V 添加参数,实现了一个模型参数的扩增。针对一个 token 的输入xixi,需要做一个矩阵乘法运算,公式表示其输出为yi=Wxiyi=Wxi,其中 WW 就是要学习的参数。这个步骤就是 Linear Feed-forward 层,中文名又叫线性全连接层,核心即矩阵乘法运算。这一步的主要作用在于为模型增加参数,增强模型的拟合能力。
总结
- Transformer 组件的核心结构就是 Self-Attention,组件的堆叠构成了 ChatGPT 的语言模型。
- 自从 GPT3 模型之后(也包括 ChatGPT),使用的是 Sparse Transformer,它有助于减轻模型的计算量,加速模型的训练和使用。
- Transformer 中用到了 Normalization、残差计算、线性层,以增强模型的拟合能力、适应性。