1. Transformer架构概览
Transformer模型自2017年由Google团队提出以来,已成为自然语言处理领域的基石架构。与传统RNN/LSTM不同,它完全基于自注意力机制,实现了并行化计算和长距离依赖建模的双重突破。核心组件包括编码器堆栈、解码器堆栈以及连接二者的注意力机制,这种独特设计使其在机器翻译、文本生成等任务中展现出惊人效果。
典型Transformer模型由6个编码器和6个解码器组成(层数可调),每层都包含多头注意力子层和前馈神经网络子层。编码器负责将输入序列转换为富含上下文信息的隐藏表示,解码器则基于该表示逐步生成输出序列。整个过程通过残差连接和层归一化保持训练稳定性,而位置编码的引入则弥补了自注意力机制对序列顺序不敏感的缺陷。
关键理解:Transformer的核心创新在于用注意力权重动态计算词元间关系,替代了RNN的固定顺序计算模式。这使得每个词元都能直接"看到"序列中所有其他相关词元,无论它们相距多远。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 输入预处理阶段
2.1 词元化与嵌入表示
原始文本首先经过词元化(Tokenization)处理,将句子分割为模型可处理的离散符号。以BPE(Byte Pair Encoding)算法为例:
- 统计语料中所有字符对出现频率
- 合并最高频字符对形成新词元
- 重复上述过程直到达到预设词表大小
得到词元ID后,通过嵌入层将其转换为d_model维的稠密向量(通常512或1024维)。这个步骤本质上是查表操作:
python复制embedding = EmbeddingMatrix[token_id] # 形状: (d_model,)
2.2 位置编码注入
由于自注意力机制本身不具备序列顺序感知能力,必须显式注入位置信息。原始论文采用正弦函数生成位置编码:
code复制PE(pos,2i) = sin(pos/10000^(2i/d_model))
PE(pos,2i+1) = cos(pos/10000^(2i/d_model))
其中pos是位置索引,i是维度索引。这种编码方式允许模型轻松学习相对位置关系,实验表明其效果优于可学习的位置嵌入。
实测技巧:当处理超过训练时最大序列长度时,可尝试线性插值或随机初始化扩展位置编码。部分现代模型已改用旋
