Transformer 架构是由 Ashish Vaswani 和他的同事们在 2017 年的论文《Attention is All You Need》中首次提出的。它在自然语言处理(NLP)和其他序列建模任务中取得了前所未有的成功。Transformer 模型完全基于自注意力机制,摒弃了循环和卷积操作,这使得它在处理长序列数据时具有显著优势,并且能够实现并行化计算。
一、总体架构
Transformer的主要架构由编码器(Encoder)和解码器(Decoder)两部分组成,这两部分都是基于自注意力(Self-Attention)机制构建的。
1、编码器(Encoder)
编码器负责将输入序列(例如,一段文本)转换成一种内部表示,这种表示将被解码器用来生成输出序列。编码器由多个相同的编码器层堆叠而成,每个编码器层包含两个子层:
多头自注意力(Multi-Head Self-Attention):
这是编码器的核心部分,它允许模型在处理序列中的每个元素时,都能够考虑到序列中的其他所有元素。多头机制通过并行处理不同的“表示子空间”,增强了模型捕获序列中不同方面信息的能力。
前馈神经网络(Feed Forward Neural Network, FFN):
这个子层是一个简单的全连接前馈网络,它对自注意力层的输出进行进一步的非线性变换。通常,这个网络由两个线性变换层和一个ReLU激活函数组成。
2、解码器(Decoder)
解码器根据编码器的输出生成目标序列。与编码器类似,解码器也由多个相同的解码器层堆叠而成,但每个解码器层包含三个子层:
掩码多头自注意力(Masked Multi-Head Self-Attention):
类似于编码器中的自注意力层,但增加了一个掩码机制,以确保在生成序列的当前位置时,模型只能关注到已经生成的部分(即,之前的序列位置),而不能看到未来的部分。这是实现自回归生成的关键。
编码器-解码器多头注意力(Encoder-Decoder Multi-Head Attention):
这个子