课程目标
- 掌握transformer架构的原理
- 理解多头注意力机制的原理
- 理解掩码多头注意力机制的原理
- 了解transformer位置编码的原理
Transformer架构
谷歌在2017年发表论文 《attention is all you need》中提出了transformer架构的模型,核心是把注意力机制引入了NLP中。

核心模块包括
- 输入部分
- 位置编码
- 多头注意力机制
- 掩码注意力机制
- 交叉注意力机制
- 层归一化
- 前馈网络层
输入编码
在Transformer 模型中,输入的词元序列($\mathrm u = [𝑢_1,𝑢_2,...,𝑢_𝑇]$) 首先经过一个输入嵌入模块(Input Embedding Module)转化成词向量序列。具体来说,为了捕获词汇本身的语义信息,每个词元在输入嵌入模块中被映射成为一个可学习的、具有固定维度的词向量$v_t \in \mathrm R^ {H}$。
由于Transformer 的编码器结构本身无法识别序列中元素的顺序,因此位置编码(Position Embedding, PE)被引入来表示序列中的位置信息。给定一个词元$u_t$,位置编码根据其在输入中的绝对位置分配一个固定长度的嵌入向量$p_t \in \mathrm R^{H}$。然后,每个词元对应的词向量和位置向量将直接相加,生成了最终的输入嵌入序列$\mathrm X = [x_1,...,x_𝑇]$,并且被传入到后续层中:
$x_t = v_t + p_t$

位置编码


根据上面的公式计算位置编码,这里简单看几个计算例子
$pos=1, i=0 \\ PE(1, 0) = \sin(1/10000^{0/512}) \\ PE(1, 1) = \cos(1/10000^{0/512})$
$pos=1, i=1 \\ PE(1, 2) = \sin(1/10000^{2/512}) \\ PE(1, 3) = \cos(1/10000^{2/512})$
$pos=1, i=2 \\ PE(1, 4) = \sin(1/10000^{4/512}) \\ PE(1, 5) = \cos(1/10000^{4/512})$
$pos=5,i=0 \\ PE(5, 0) = \sin(5/10000^{0/512}) \\ PE(5, 1) = \cos(5/10000^{0/512})$
多头自注意力机制

多头注意力机制有什么好处?
- 每个线性子空间分别计算注意力机制,每个子空间可以关注不同的特征,这样特征表能力更强。
前馈网络层
为了学习复杂的函数关系和特征,Transformer 模型引入了一个前馈网络层(Feed Forward Netwok, FFN),对于每个位置的隐藏状态进行非线性变换和特征提取。具体来说,给定输入𝒙,Transformer 中的前馈神经网络由两个线性变换和一个非线性激活函数组成:
$FFN(x) = \max(0,xW_1 + b1)W_2 + b_2 $
编码器
在Transformer 模型中,编码器(Encoder)的作用是将每个输入词元都编码成一个上下文语义相关的表示向量。其中,残差连接(Residual Connection)将输入与该层的输出相加,实现了信息在不同层的跳跃传递,从而缓解梯度爆炸和消失的问题。而LayerNorm 则对数据进行重新放缩,提升模型的训练稳定性。
$$ \begin{align*} X_l' &= \text{LayerNorm}\big(\text{MHA}(X_{l-1}) + X_{l-1}\big), \\ X_l &= \text{LayerNorm}\big(\text{FFN}(X_l') + X_l'\big), \end{align*} $$其中,𝑿𝑙−1 和𝑿𝑙 分别是该Transformer 层的输入和输出,𝑿′𝑙 是该层中输入经过多头注意力模块后的中间表示,LayerNorm 表示层归一化。
解码器
Transformer 架构中的解码器基于来自编码器编码后的最后一层的输出表示以及已经由模型生成的词元序列,执行后续的序列生成任务。与编码器不同,解码器需要引入掩码自注意力(Masked Self-attention)模块,用来在计算注意力分数的时候掩盖当前位置之后的词,以保证生成目标序列时不依赖于未来的信息。
$$ \begin{align*} Y_l' &= \text{LayerNorm}\big(\text{MaskedMHA}(Y_{l-1}) + Y_{l-1}\big), \\ Y_l'' &= \text{LayerNorm}\big(\text{CrossMHA}(Y_l', X_L) + Y_l'\big), \\ Y_l &= \text{LayerNorm}\big(\text{FFN}(Y_l'') + Y_l''\big), \end{align*} $$其中,𝒀𝑙−1 和𝒀𝑙 分别是该Transformer 层的输入和输出,𝒀′𝑙 和𝒀′′𝑙 是该层中输入经过掩码多头注意力MaskedMHA 和交叉多头注意力CrossMHA 模块后的中间表示,LayerNorm 表示层归一化。然后将最后一层的输入𝒀 𝐿 映射到词表的维度上
$O= softmax (W_LY_L)$
大模型的架构
主流的大模型架构基本都是基于transformer架构。大模型的架构主要有3种编码器,解码器、编码器-解码器架构。

Encoder-only架构
代表模型BERT。autoencoder(AE)
详细内容请参考 BERT详细介绍
Encoder-Decoder架构
代表模型T5
详细内容请参考 T5模型的详细介绍
Decoder-only架构
代表模型GPT,Auto Regressive 自回归架构(AR)
详细内容请参考 GPT详细介绍
总结
本节内容详细介绍了大模型的3种架构,每种架构选择了一种代表模型,详细介绍了模型的原理。只有深刻理解模型的原理,在使用的时候才能得心应手。