我们来深入浅出地聊聊 Transformer 模型里的“知识”。它彻底改变了自然语言处理(NLP)和人工智能的格局,是当今所有大语言模型(如GPT、BERT、LLaMA等)的基石。
核心思想:抛弃循环,拥抱注意力!
在Transformer之前(2017年论文《Attention is All You Need》提出),处理序列数据(如文本、语音)的主流是循环神经网络(RNN) 和长短期记忆网络(LSTM)。它们像流水线一样,逐个处理序列中的元素(单词),依赖隐藏状态传递历史信息。但存在痛点:
-
顺序处理慢: 无法并行计算,训练慢。
-
长程依赖弱: 信息在长序列中传递容易丢失或失真(梯度消失/爆炸),难以捕捉远距离单词间的关系。
-
信息瓶颈: 最后时刻的隐藏状态要“记住”整个序列的关键信息,压力很大。
Transformer 的革命性突破:它完全摒弃了循环结构,只依赖一种强大的机制——自注意力(Self-Attention),实现了并行计算和强大的上下文建模能力。
Transformer 的“知识”体现在哪里?
Transformer 的“知识”不是静态存储在某个地方,而是动态生成于其处理输入数据的过程中,核心在于自注意力机制和层级结构。我们可以从几个层面理解:
-
词嵌入(Word Embeddings) - 基础语义知识:
-
输入序列的每个单词(或子词,如BPE分出来的)首先被转换成一个高维向量(如768维)。这个向量称为词嵌入。
-
知识体现: 这个向量空间编码了单词的基础语义。语义相似的词(如“猫”和“狗”)在这个空间中的距离较近。这些向量通常是在大规模语料上预训练得到的,包含了单词的通用含义。
-
-
位置编码(Positional Encoding) - 序列顺序知识:
-
因为Transformer没有RNN/LSTM那样的顺序处理能力,它需要显式地告诉模型单词在序列中的位置信息。
-
知识体现: 位置编码是一个与词嵌入维度相同的向量,包含了单词的绝对位置或相对位置信息(常用正弦/余弦函数生成)。它被加到词嵌入向量上。这样,模型就知道“我”是句子中的第一个词,“你”是第三个词。这是理解句子结构(如主谓宾)的基础。
-
-
自注意力机制(Self-Attention) - 动态上下文知识(核心!):
-
这是Transformer的灵魂!它的目标是:对于序列中的每一个词(Query),计算它与序列中所有其他词(Key)的“相关性”或“重要程度”(Attention Score),然后用这个分数对所有词的值(Value)进行加权求和,得到这个词的新的、富含上下文信息的表示。
-
工作过程(简化):
-
线性变换: 对每个词的嵌入向量(包含位置信息)进行三种不同的线性变换,生成三个新向量:Query(查询向量), Key(键向量), Value(值向量)。
-
计算注意力分数: 计算当前词(Query)与序列中所有词(Key)的点积(或缩放点积),得到原始分数。这衡量了当前词与其他词的“相关度”。
-
缩放与归一化: 将原始分数除以一个缩放因子(通常是Key维度的平方根),然后通过Softmax函数归一化,得到注意力权重(0-1之间,和为1)。Softmax使得相关度高的词权重接近1,相关度低的接近0。
-
加权求和: 用得到的注意力权重对所有词的Value向量进行加权求和。这个加权和结果就是当前词的新的表示向量,它融入了当前词认为最重要的上下文信息!
-
-
知识体现:
-
动态上下文建模: 每个词的新表示不再是孤立的,而是根据当前输入句子动态计算出来的。例如,在句子“
The animal didn't cross the street because it was too tired
”中,当模型处理“it
”时,自注意力机制会让“it
”的表示强烈关注“animal
”和“tired
”,从而知道“it
”指的是动物,并且原因是累了。这种指代消解和语义关联是理解句子的关键知识。 -
捕捉长程依赖: 自注意力理论上可以一步捕捉序列中任意两个词之间的关系,无论它们相隔多远,彻底解决了RNN/LSTM的长程依赖问题。
-
并行计算: 所有词的Query, Key, Value可以同时计算,所有词的注意力权重和加权求和也可以同时进行,极大加速了训练。
-
-
多头注意力(Multi-Head Attention): Transformer通常使用多个(如12个)独立的“自注意力头”。每个头在不同的线性变换子空间(可以理解为关注不同类型的关系)学习不同的注意力模式。最后将所有头的输出拼接起来再线性变换。这就像有多组“专家”从不同角度分析词之间的关系,模型能捕捉更丰富的信息(语法、语义、指代等)。
-
-
前馈神经网络(Feed-Forward Network, FFN) - 非线性变换与知识提炼:
-
自注意力层输出的新表示向量会经过一个简单的前馈神经网络(通常是两层线性变换+ReLU激活函数)。
-
知识体现: 它对自注意力层提取的上下文信息进行非线性变换和提炼,进一步提取特征,增强模型的表达能力。每个位置的FFN是独立应用的。
-
-
残差连接(Residual Connection)与层归一化(Layer Normalization) - 稳定训练与信息流通:
-
残差连接: 将子层(自注意力层或FFN层)的输入直接加到其输出上(
输出 = Layer(输入) + 输入
)。 -
层归一化: 在残差连接之后应用,对每个特征维度进行归一化。
-
知识体现: 这两项技术极大地改善了深度神经网络的训练。残差连接确保了梯度可以更顺畅地回流,防止梯度消失,允许构建非常深的网络(模型容量更大,能学更多知识)。层归一化稳定了每层的输入分布,加速收敛。
-
-
编码器-解码器架构(Encoder-Decoder Architecture) - 任务知识:
-
Transformer最初是为机器翻译设计的,采用编码器-解码器结构:
-
编码器: 由N个(如6、12、24层)完全相同的层堆叠而成。每层包含一个多头自注意力子层和一个FFN子层(带残差和归一化)。编码器负责理解输入序列(源语言句子),将其转换为一系列富含上下文信息的隐藏状态表示。每一层都在前一层的表示基础上,进一步提炼和深化对输入的理解。
-
解码器: 也由N个相同的层堆叠而成。每层包含三个子层:
-
掩码多头自注意力: 与编码器自注意力类似,但为了防止解码时“作弊”(看到未来信息),它被掩码了——当前词只能关注它之前的词。这确保了解码是自回归的(逐个生成词)。
-
编码器-解码器注意力(Cross-Attention): 这是关键!解码器的Query来自其上一层的输出,而Key和Value来自编码器最终的输出。这允许解码器在生成目标序列的每一个词时,有选择地聚焦于输入序列(源语言)最相关的部分。这是翻译、摘要等任务的核心“对齐”知识。
-
FFN子层: 与编码器中的相同。
-
-
知识体现: 编码器学习输入表示的知识,解码器学习如何基于输入表示和已生成部分生成输出的知识。两者通过编码器-解码器注意力紧密连接,实现信息在两种模态(如两种语言)间的传递和转换。
-
-
变体:
-
纯编码器模型(如BERT): 只使用编码器堆栈。擅长理解任务(文本分类、命名实体识别、问答)。其知识在于学习强大的上下文词表示。
-
纯解码器模型(如GPT系列): 只使用解码器堆栈(带掩码自注意力)。擅长生成任务(文本生成、对话)。其知识在于学习基于上文预测下一个词的能力,并隐含地学习语言规律和世界知识。
-
编码器-解码器模型(如T5, BART): 保持原始架构。擅长需要转换的序列到序列任务(翻译、摘要、问答)。
-
-
总结Transformer中的“知识”:
-
静态基础语义: 预训练的词嵌入向量。
-
序列结构知识: 位置编码。
-
动态上下文知识(核心): 通过自注意力机制在每次处理输入时即时计算出来的词与词之间的复杂关系(语义、语法、指代等)。这是Transformer最强大的能力,是其理解力的源泉。
-
特征提炼知识: 通过前馈神经网络和多层堆叠,逐层提炼和深化表示。
-
任务特定知识:
-
编码器:学习输入的高级、上下文相关的表示。
-
解码器:学习生成目标序列(利用掩码注意力和编码器-解码器注意力)。
-
编码器-解码器注意力:学习源序列和目标序列之间的对齐关系。
-
-
深度模型训练知识: 残差连接和层归一化使训练非常深的Transformer模型成为可能,从而拥有巨大的知识容量。
简而言之:Transformer的“知识”不是死记硬背的数据库,而是一套强大的、可学习的计算规则(参数化的神经网络),特别是通过自注意力机制,它能在处理输入时动态地、灵活地挖掘和利用单词之间深层次的关联信息,并结合多层结构和非线性变换,最终形成对输入的理解或生成连贯的输出。 这些规则是在海量文本数据上通过预训练和微调学习得到的。模型参数(那几GB/几百GB的文件)就是这些规则的数学表达。