近年来,随着一篇名为“Attention is All You Need”论文的出现,自然语言处理(NLP)领域经历了一场巨大的变革。2017年,在谷歌和多伦多大学发表了这篇论文后,Transformer架构出现了。这一架构不仅显著提升了NLP任务的性能,还引发了生成式人工智能能力的爆炸性增长。
Transformer架构的强大之处
Transformer架构的核心优势在于其能够学习句子中所有单词的相关性和上下文,而不仅仅是相邻单词之间的关系。通过应用注意力权重,模型可以学习输入中每个单词与其他单词的相关性,无论它们在输入中的位置如何。这使得模型能够理解句子的整体意义和上下文,从而提高了语言编码的能力。
Transformer架构的组成部分
最直接的就是拿出这张最经典的图表了,来自 “Attention is All You Need”论文。
编码器(Encoder)和解码器(Decoder)
Transformer架构分为两个主要部分:编码器(Encoder,上图左边)和解码器(Decoder,上图右边)。把上边的图简化一下:
标记化(Tokenization)和嵌入层(Embedding Layer)
在将文本输入模型进行处理之前,首先需要对单词进行标记化(Tokenization),因为大模型处理的是Token,不是单词。这一步将单词转换为数字,这个数字就是通常说的Token。
重要的是,一旦你选择了一个标记器(tokenizer)来训练模型,你在生成文本时必须使用相同的标记器(tokenizer)。
下图是两种不同的tokenizer:
然后,输入将被传递到嵌入层(Embedding Layer),该层是一个可训练的高维向量空间(trainable vector embedding space),每个Token表示为一个向量并占据该空间内的唯一位置。
下图是一个Embedding Layer的例子,每个TokenID被映射到这个向量空间的一个向量(Vector)上,论文中这个向量(Vector)的大小是512.
大模型将嵌入空间中彼此接近的Token联系起来,并且将Token之间的距离计算为一个角度,数学地理解语言。
当将Token Vector添加到编码器或解码器的基础时,同时还添加了位置编码(positional encoding)到Postiion embedding中。通过添加位置编码,保留了有关单词顺序的信息,不会丢失句子中单词位置的相关性。一旦将输入令牌和位置编码相加,就会将结果向量传递给自注意力层(Self-Attention Layer)。
自注意力机制(Self-Attention Layer)
自注意力机制是Transformer架构的关键特性之一。该层分析输入序列中令牌之间的关系,使模型能够关注输入序列的不同部分,从而更好地捕捉单词之间的上下文依赖关系。
多头自注意力(Multi-Head Self-Attention)
Transformer架构实际上具有多头自注意力(Multi-Head Self-Attention)。这意味着多个自注意力权重(attention weights)集(或称头)是并行独立学习的,每个头会学习语言的不同方面。例如,一个头可能关注句子中人物实体之间的关系,另一个头可能关注句子的活动,第三个头可能关注单词是否押韵。
全连接前馈网络( Fully-Connected Feed-Forward Network)
所有的注意力权重(attention weights)应用到输入数据后,输出将通过一个全连接的前馈网络(Fully-Connected Feed-Forward Network)进行处理。该层的输出是一个逻辑向量,与标记器词典(tokenizer dictionary)中每个Token的概率得分成比例。
然后,这些逻辑值被传递到一个softmax层,归一化为每个单词的概率得分。这个输出包括词汇表中每个单词的概率,所以这里可能有成千上万的分数。
Transformer架构的革命性影响
Transformer架构的出现改变了NLP的游戏规则。它不仅解决了传统RNN架构的局限性,还显著提高了生成式任务的性能。通过并行处理输入数据,并利用更大的训练数据集,Transformer架构能够高效地扩展使用多核GPU进行训练。更重要的是,它能够学习并关注处理单词时的语义,这一点在《Attention is All You Need》论文中得到了详细阐述。
总结
Transformer架构已经成为现代NLP任务的基础。通过其独特的自注意力机制和多头注意力,Transformer不仅提高了模型对语言的理解能力,还大大增强了生成式人工智能的能力。随着技术的不断发展,我们可以期待Transformer架构将在更多领域发挥更大的作用。