AI 大模型时代的奠基石-transformer模型
Transformer及其变体的出现为大模型的研究和实践提供了基础的模型支持,并持续性地在处理复杂序列任务中发挥着关键作用。
1.自然语言处理任务介绍
自然语言处理(NLP)是通过计算机对自然语言文本进行理解、分析和处理的一系列任务,按照不同方向的常见的可以细分程如下几种任务:
- 文本分类:输入是一段文本,输出是该文本的类别
- 命名实体识别:输入是一段文本,输出是该文本中的某些关键要素或者信息
- 机器翻译:输入是一段语言文本,输出是 另一种语言文本;按照技术的发展,目前机器翻译主要有两种方法:基于统计的机器翻译和基于神经网络的机器翻译
- 文本摘要:输入是一段较长文本,输出是对该文本的一段精简表达文本;按照技术类别的不同可以分成生成式摘要技术和抽取式摘要任务,其中生成式摘要任务是在理解原始文本的基本语义和上下文,生成新的句子来表达摘要,而抽取式摘要是从原始文本中选择最相关的句子或者短语,然后将他们组合成摘要。
- 多轮对话交互:多轮对话任务涉及处理多个连续的对话回合,保持对话上线文,并实现更复杂的对话交互,其中里面会包含:上下文理解(意图和关键词槽抽取)、对话状态跟踪、回应生成
目前自然语言处理任务的发展可以大致分为四个阶段,每个阶段对应不同的范式,分别是特征工程、结构工程、目标工程和提示工程,具体如下:
而我们今天所介绍的Transoformerj属于上述的第三范式阶段,即预训练语言模型阶段
2.Transformer详解
Transformer在学习前,我们需要了解如下三个知识点:模型结构、注意力机制、归一化层
2.1Transformer模型结构
在“Attention is All You Need”这篇论文中,我们可以看到transformer模型框架主要分为两个部分:编码器(Encoder)和解码器(Decoder)部分,其中编码器用于处理输入数据,解码器用于生成数据,整个框架结构和之前的Seq2seq框架一致
- 编码器是由N个去完全相同的层堆叠而成(论文中N=6),每个层都包含 多头注意力机制层(Multi-Head Self-Attention)、 前馈神经网络层(Feed-forward)以及层归一化 (Layer Normalization),为了保证信息之间的传递效率,引入残差链接(Resdual-Connection)
- 解码器也是有N个完全相同的层堆叠而成,每个层都有多头注意力机制层(Multi-Head Self-Attention)、掩码多头注意力机制(Mask multi-Head Self-Attention))、 前馈神经网络层(Feed-forward)、层归一化 (Layer Normalization)、残差网络,因解码器需要输出数据,在编码器的顶部还需要接入一个全连接层和softmax,用于将解码器的输出转化为最终的预测结果。
2.2 注意力与自注意力机制
注意力机制是一种允许神经网络在生成输出的每一步时都对输入的不同部分赋予不同的“注意力”或“重要性的技术”,例如在一篇文章时,人们会自然而然地将注意力放在标题或者图片等显眼位置;在自然语言处理任务重,注意力机制被广泛用于处理序列数据,该技术可以有效地处理长距离依赖问题。
2.2.1.典型的注意力机制的分类:
- 广义自注意力机制:该机制出现于encoder-decoder结构中,用于判断输出序列的某个元素与输入序列中各个序列之间的关联(因为是不同序列且序列分别在encoder结构和decoder结构中)
- 自注意力机制:自注意力机制是指在处理序列数据是,每个元素都可以与序列中其他元素并建立关联(每个元素属于同一序列,所以叫自注意力机制)
- 掩码自注意力机制:在自注意力的基础上,保证每个元素只能看到自己序列中前面时刻的元素,并建议关联(相当于在玩成语接龙,只能接着前面要素处理,不能往“后看”)
大家关于注意力机制感兴趣的话可以参考这篇博客:
2.2注意力机制的计算
在上面的介绍中,我们发现注意力机制主要包含三个部分:当前元素(查询)、其他元素(键+值)、关系(权重),用KQV模型表示Attention机制就是,假定输入为Q(查询query),其他序列元素存储在Memory中(其中Memory以键值对K,V存储),那么注意力机制就是Query到一系列键值对(key,value)的映射函数,换句话表达就是注意力机制的主要目标就是将查询与一组键值对进行比较 ,并计算出查询与每个键之间的关键性得分,然后获得最终所有的关系得分。
注意力的输出可以按照以下步骤计算:
- 相似性打分:判断查询和键之间的相似性得分,一般可使用点积或者加性表示
S c o r e ( Q , K ) = Q K T \ Score(Q,K) = QK^T Score(Q,K)=QKT - 归一化:使用softmax函数将得分进行归一化,得到查询与每个输入元素的权重,这些权重加总和为1
S o f t m a x ( S c o r e ) = e s c o r e ∑ e s c o r e \ Softmax(Score)= \frac{e^{score}}{ \sum e^{score}} Softmax(Score)=∑escoreescore - 加权求和:每个输入元素配上不同的权重,加权求和即可获得注意力的输出
A t t e n t i o n ( Q , K , V ) = ∑ ( S o f t m a x ( S c o r e ) ⋅ V ) \ Attention(Q,K,V) = \sum{(Softmax(Score) \cdot V)} Attention(Q,K,V)=∑(Softmax(Score)⋅V)
在注意力机制的计算中KQV模型中的特殊点在于Q=K=V,文本和文本自己求相似度再和文本本身相乘计算得来、
A
t
t
e
n
t
i
o
n
(
Q
,
K
,
V
)
=
S
o
f
t
m
a
x
(
Q
K
T
d
k
)
⋅
V
\ Attention(Q,K,V) = Softmax( \frac{QK^T}{ \sqrt{d_k}}) \cdot V
Attention(Q,K,V)=Softmax(dkQKT)⋅V
2.3 Transoformer中的归一化
Transformer模型采用层归一化(Layer Normalization,LN) :
- 作用:稳定模型的训练过程并加速收敛
- 基本思想:对每个样本的每个特征向量进行归一化,使其均值为0,方差为1
- 数学表达式