01
·概述·
Transformer架构在生成式预训练模型(Generative Pre-trained Transformer, GPT)中扮演着核心角色,其重要性在于为GPT及其他主流大规模语言模型提供了强大的基础。 作为一种创新的深度神经网络结构,Transformer已成为当前大模型的驱动力,深入理解Transformer的架构和运行机制是探索大模型卓越性能的关键所在。 通过其独特的自注意力机制和并行计算能力,Transformer不仅提升了模型的表达能力和计算效率,还为自然语言处理领域带来了革命性的进步。因此,Transformer的研究和应用是理解和开发先进语言模型的必经之路。 02 ·模型结构·
下面将结合《Attention is All You Need》中的这张Transformer结构图,来简单解释其原理。Transformer模型主要由两部分组成:编码器(Encoder) 解码器(Decoder)。编码器用于理解输入数据,解码器用于生成预测。 图1
接下来对依据图1,对Transformer核心部件和名词做一些解释: 01 位置编码(Positional Encoding)
由于Transformer模型本质上是无序的(即不包含递归或卷积结构),它无法直接捕获序列中词的位置信息。为了解决这一问题,Transformer通过位置编码(Positional Encoding)显式地将位置信息融入词的表示中。 ● 位置编码通常采用固定的正弦和余弦函数计算,其公式为: text{PE}{(pos, 2i)} = sinleft(frac{pos}{10000^{2i/d{text{model}}}}right),quadtext{PE}{(pos, 2i+1)} = cosleft(frac{pos}{10000^{2i/d{text{model}}}}right) 其中,pos表示词的位置,i 表示维度索引,d_{text{model}} 是嵌入的维度。 这种设计使得位置编码具有平移不变性,并能捕获相对位置信息。 02 编码器(Encoder)
编码器的主要作用是将输入的词序列映射为一系列高维连续向量表示,这些表示捕捉了输入序列的语义和上下文信息。Transformer的编码器由多个堆叠的编码器层(Encoder Layer)组成,每个编码器层包含两个核心子层:多头自注意力机制(Multi-Head Self-Attention)和前馈神经网络(Feed-Forward Neural Network, FFN)。 ● 多头自注意力机制允许模型在计算每个词的表示时,同时关注整个输入序列中的其他词,从而有效建模长距离依赖关系。 ● 前馈神经网络用于对每个位置的表示进行非线性变换,从而增强模型的表达能力。 每个子层后面都通过残差连接(Residual Connection)与其输入相加,并进行层归一化(Layer Normalization),以缓解梯度消失问题并稳定训练。这种模块化设计使得编码器能够高效地捕捉输入序列的复杂模式。 03 解码器(Decoder)
解码器的作用是根据编码器的输出表示和当前已生成的目标序列,逐步生成目标序列的下一个词。Transformer的解码器由多个堆叠的解码器层(Decoder Layer)构成,每个解码器层包含三个子层: ● 多头自注意力机制(Masked Multi-Head Self-Attention):在解码器中的自注意力机制被掩码(masking)处理,以确保在每个时间步只能关注到当前词及其之前的词,避免信息泄露。 ● 编码器-解码器注意力机制(Encoder-Decoder Attention):此机制用于将解码器的当前状态与编码器的输出表示结合,从而有效地利用输入序列的信息。 ● 前馈神经网络(Feed-Forward Neural Network, FFN):与编码器中的FFN类似,用于对每个位置的表示进行进一步的非线性变换。 04 自注意力机制(Self-Attention)
自注意力机制是Transformer的核心组件之一,其作用是计算输入序列中每个词对其他词的注意力权重,从而生成包含全局上下文信息的表示。 ● 对于输入序列中的每个词,模型会基于其查询向量(Query)、键向量(Key)和值向量(Value)计算注意力分数。具体来说,注意力分数是通过点积计算得到的,然后经过Softmax归一化,以生成注意力权重。这些权重用于加权求和值向量,从而生成每个词的上下文表示。 ● 自注意力机制的一个显著优势在于能够捕获长距离依赖。例如,在句子“The cat is black”中,模型可以通过注意力机制关联“black”和“cat”,从而更好地理解“black”的语义。 数学公式如下:其中,Q 、K 、V 分别表示查询、键和值向量,d_k 是键向量的维度,用于缩放点积以稳定梯度。 {Attention}(Q, K, V) = text{softmax}left(frac{QK^T}{sqrt{d_k}}right)V 05 多头注意力机制(Multi-Head Attention)
多头注意力机制是自注意力机制的扩展,其作用是让模型能够从多个子空间中学习不同的注意力模式。 ● 通过将输入向量分成多个头(head),每个头独立地执行自注意力计算,模型可以关注序列中的不同位置和关系。例如,一个头可能专注于捕捉语法结构(如主谓关系),而另一个头可能关注语义关系(如修饰关系)。 ● 这些头的输出会被拼接并通过线性变换投影回原始维度,从而融合多头的注意力信息。 数学公式为: text{MultiHead}(Q, K, V) = text{Concat}(text{head}1, dots, text{head}h)W^O 其中,text{head}_i = text{Attention}(QW_i^Q, KW_i^K, VW_i^V)),( W_i^Q )、( W_i^K )、( W_i^V ) 、 ( W^O ) 是可学习的参数矩阵。 06 残差连接(Residual Connection)
残差连接的作用是缓解深层网络中的梯度消失问题,同时加速收敛。在Transformer中,每个子层的输入会通过残差连接与子层的输出相加,从而形成新的输入。 07 层归一化(Layer Normalization)
层归一化的作用是对每个样本的特征进行归一化,从而稳定模型的训练过程。具体来说,层归一化会对每个位置的表示减去均值并除以标准差: text{LayerNorm}(x) = frac{x - mu}{sigma} cdot gamma + beta 其中,mu和sigma分别是输入x的均值和标准差,gamma 和beta是可学习的参数。 08 线性层和Softmax层
● 线性层:解码器的最终输出会通过一个线性变换,将其投影到词汇表大小的维度。 ● Softmax层:线性层的输出经过Softmax归一化,生成一个概率分布,其中概率最高的词被选为下一个生成的目标词。 P(y_t | y_{<t}, x)="text{softmax}(W_o" h_t="" +="" b_o)<="" span=""> 其中,h_t是解码器的输出,W_o和b_o 是线性层的参数。 03 ·Transformer的工作流程·
上图1是论文中 Transformer 的内部结构图,左侧为 Encoder block,右侧为 Decoder block。Transformer 的的工作简单理解为:输入一个序列,经过Transformer模型得到一个输出序列: 图2
1. 那么怎么获得一个Transformer能解析的输入呢?首先,获取输入句子的每一个单词的表示向量 ,这是通过词嵌入(Word Embedding)实现的。然后,将位置编码添加到词向量中,得到了包含位置信息的词向量。 图3
向量x由单词的 Embedding(Embedding就是从原始数据提取出来的向量特征)和单词位置的 Embedding 相加得到。 2. 如图4所示,接下来,这些词向量被送入编码器。在编码器的每一层,每个词向量都会通过自注意力机制,计算与其他词的关系,并生成一个新的向量。然后,这个新的向量会通过前馈神经网络,得到最终的编码器输出。 3. 编码器的输出被送入解码器。在解码器的每一层,除了有一个自注意力机制和一个前馈神经网络外,还有一个编码器-解码器注意力机制。这个注意力机制会计算目标序列中每个词与输入序列中每个词的关系,帮助模型更好地生成下一个词。 图4
4. 最后,解码器的输出被送入一个线性层和一个softmax层,生成最终的预测。举个简单的机器翻译的例子,输入模型的句子为 “我是一个学生” 经过Transformer的编解码器之后,输出首先生成“ I ”,然后生成“ am ”,接着生成“ a ”,最后生成“ student ”,完成了翻译。 04 ·总结·
Transformer模型以其独特的架构设计在自然语言处理领域展现出卓越的性能。通过编码器和解码器的协同作用,Transformer能够高效地捕捉输入序列的语义和上下文信息,并生成高质量的输出序列。其核心组件,如位置编码、多头自注意力机制、前馈神经网络、残差连接和层归一化,共同构建了一个强大而灵活的框架,能够处理复杂的语言任务。 下期内容中,将深入分析Transformer中的自注意力机制和多头注意力机制。这些机制是Transformer捕捉序列关系的关键所在,能够有效建模长距离依赖关系,并从多个子空间中学习不同的注意力模式。通过对这些机制的详细解析,将进一步揭示Transformer在自然语言处理中的强大能力和广泛应用。
电话: 400-166-0296
邮箱: contact@moonpac.com
地址: 上海市闵行区申长路990弄
虹桥汇 T6-805