技术专栏|LLM基本架构——Transformer

B站影视 内地电影 2025-05-19 09:42 1

摘要:2017年12月6日,Google发布了论文Attention Is all you need,提出了Attention注意力机制和基于此机制的Transformer架构。该架构首先应用于机器翻译,目标是从源语言转换到目标语言。这种架构的价值在于其是一种完全基

2017年12月6日,Google发布了论文Attention Is all you need,提出了Attention注意力机制和基于此机制的Transformer架构。该架构首先应用于机器翻译,目标是从源语言转换到目标语言。这种架构的价值在于其是一种完全基于注意力机制的序列转换模型而不依赖RNN、CNN或者LSTM等结构,Transformer在训练时可以并行地处理输入,并且利用注意力机制将距离不同的单词进行重要性关联,而不需要逐步递归地处理信息。

Transformer模型架构

Transformer架构包括编码器Encoder和解码器Decoder,如图2.9所示,整个网络结构主要由注意力(Attention)机制以及前馈神经网络组成,还包括残差连接和归一化操作。

图2.9 Transformer模型架构

1.注意力层:

注意力是人类认知功能的重要组成部分,当面对海量的信息时,人类可以在关注一些信息的同时,忽略另一些信息。Transformer中的注意力机制是模仿人脑的认知注意力,在处理大量的输入信息时,对信息输入的权重进行调整,来提高神经网络的效率。自注意力机制是注意力机制的一种特殊形式,用于计算输入序列中每个位置与其他位置的相关性,以便更好地捕捉序列内部的依赖关系。使用多头注意力(Multi-Head Attention)机制整合上下文语义,它使得序列中任意两个单词之间的依赖关系可以直接被建模,而无须基于传统的循环结构,从而更好地解决文本的长程依赖。注意力机制从人类视觉注意力中获得灵感,目标是将注意力集中于所处理部分对应的语境信息。在实际中则是通过计算每个词与其他词的注意力权重系数来实现这一目标。

2.位置感知前馈层(Position-wise FFN):

前馈层接收自注意力子层的输出作为输入,并通过一个带有ReLU激活函数的两层全连接网络对输入进行更加复杂的非线性变换。实验证明,这一非线性变换会对模型最终的性能产生十分重要的影响。通过全连接层对输入文本序列中的每个单词表示进行更复杂的变换,尽可能地利用注意力机制前的位置编码信息。

3.残差连接和层归一化:

由Transformer结构组成的网络结构通常都是非常庞大的。编码器和解码器均由很多层基本的Transformer块组成,每一层当中都包含复杂的非线性映射,这就导致模型的训练比较困难。因此,研究者在Transformer块中进一步引入了残差连接与层归一化技术提升训练的稳定性。残差连接对应图2.9中的Add部分。它是一条分别作用在上述两个子层中的直连通路,被用于连接它们的输入与输出,从而使得信息流动更加高效,有利于模型的优化。层归一化:对应图2.9中的Norm部分。作用于上述两个子层的输出表示序列中,对表示序列进行层归一化操作,同样起到稳定优化的作用。

在进行Attention计算之前,需要对输入文本序列进行嵌入向量表示。同时,由于Transfomer模型不再使用基于循环的方式建模文本输入,序列中不再存在信息来提示模型单词之间的相对位置关系。因此,在将文本送入编码器建模其上下文语义之前,必须对每个词(Token)嵌入中加入位置编码(Positional Encoding)。具体来说,序列中每个词(Token)所在的位置都对应一个向量。这一向量会与词表示对应相加并送入后续模块中做进一步处理。在训练的过程中,模型会自动地学习到如何利用这部分位置信息。

Transformer的多头注意力机制详解

目前的预训练语言模型和大规模语言模型架构基本上都是基于Transformer模型的编码器和解码器基础上构建的。相较于编码器端,解码器端要更复杂一些。具体来说,解码器的每个Transformer块的第一个自注意力子层额外增加了注意力掩码,即掩码多头注意力(Masked Multi-Head Attention)部分。例如对翻译场景来说,在翻译的过程中,编码器端主要用于编码源语言序列的信息,而这个序列是完全已知的,因而编码器只需考虑如何融合上下文语义信息即可。而解码器端则负责生成目标语言序列,这一生成过程是自回归的,即对于每个单词的生成过程,仅有当前单词之前的目标语言序列是可以被观测的,因此这一额外增加的掩码是用来掩盖后续的文本信息,以防模型在训练阶段直接看到后续的文本序列进而无法得到有效训练。此外,解码器端还额外增加了一个多头注意力模块,使用交叉注意力(Cross-attention)方法,同时接收来自编码器端的输出以及当前Transformer块的前一个掩码注意力层的输出。查询是通过解码器前一层的输出进行投影的,而键和值是使用编码器的输出进行投影的。该模块的作用是在翻译的过程中,观察待翻译的源语言序列,以生成合理的目标语言序列。基于上述的编码器和解码器结构,待翻译的源语言文本,首先经过编码器端的每个Transformer块对其上下文语义的层层抽象,最终输出每个源语言单词上下文相关的表示。

Transformer模型使用多头注意力通常有以下三种方式。

1.编码器-解码器注意力:查询来自之前的解码器层,而键和值来自编码器的输出。这使得解码器的每个位置能够利用输入序列的所有位置,实现对输入序列全局信息的整合。

2.编码器自注意力:在编码器的自注意力层中,查询、键和值都来自前一编码器层的输出。编码器的每个位置能够利用前一层的所有位置的信息,实现层间的信息流动和整合。

3.解码器自注意力:解码器的自注意力层能够让每个位置利用之前解码器所有位置的信息。为了保留自回归的性质,并避免在解码过程中未来信息的泄露,解码器中的缩放点积注意力采用了掩码对Softmax函数中不合适的连接进行屏蔽,保证了信息流的合理性和模型的生成质量。

全文引自《开启智能对话新纪元:大规模语言模型的探索与实践》

来源:华院计算

相关推荐