Transformer与词向量:大模型核心原理的动画式拆解
2026/8/30 20:17:12 网站建设 项目流程

最近两年,AI大模型几乎成了技术圈最热的关键词。无论是GPT系列、通义千问、Llama,还是开源社区里层出不穷的各种大模型,它们背后都有一个绕不开的核心结构——Transformer。很多人尝试去读原始论文,结果被“自注意力”“多头机制”“位置编码”这些名词劝退,最后只能停留在“大模型约等于黑盒”的认知上。

我的判断是:大模型并不神秘,也不需要一次性啃下几十个公式。你只需要把下面这条链路看清楚——词向量负责把文字变成坐标,Transformer负责让这些坐标在语境中互相修正,最后模型通过预测下一个词完成输出。这篇文章就用“动画思维”来拆解这条链路。

读完这篇文章,你会理解词向量为什么是大模型的第一块基石,注意力机制到底在做什么,以及为什么“最后胜出的是Transformer”而不是更早的RNN或CNN。我不会扔给你一堆公式,而是尽量用画面、类比和最小化的代码示例,让你在脑海中形成一张能反复调用的架构图。这篇文章适合刚入门NLP、准备算法面试、或者想系统梳理大模型原理的开发者。

1. 这篇文章真正要解决的问题

如果你正在学习大模型,大概率遇到过这三种困境。

第一种困境是:资料太散。今天看到一篇文章讲Word2Vec,明天看到一篇讲BERT,后天又刷到一篇讲GPT-4,每个名词都眼熟,但串不起来。你不知道这些概念之间是什么关系,也不知道谁先谁后。

第二种困境是:公式劝退。打开Transformer论文,满屏的矩阵乘法、Softmax、缩放点积注意力,每个符号都认识,合在一起就不知道在说什么。大部分人止步于此,以为深度学习原理就是数学推导,和自己无缘。

第三种困境是:学了就忘。即使硬着头皮读完了原理,因为没有实际跑过一个小模型,也没有见过注意力权重长什么样,第二天就忘光了。

这篇文章要解决的,就是这三件事。我会把大模型的核心原理压缩成三个问题:

  • 怎么让计算机理解“苹果”这个词。
  • 怎么让模型知道“我喜欢吃苹果”里的“苹果”是水果,而不是手机品牌。
  • 怎么让模型根据前文生成通顺、合理的下一个词。

这三个问题分别对应词向量、Transformer、预训练大模型。理解清楚这三层,再去看任何一篇大模型相关的论文或者技术博客,你都会觉得它们只是在同一个框架下做工程优化。

2. 词向量:让计算机“读懂”语义的第一步

2.1 为什么一定要有词向量

计算机不认识汉字,也不认识英文单词,它只认数字。所以我们需要把“猫”“狗”“汽车”这样的词,转换成一组数字。

最简单的转换方式是One-Hot编码。假设词表里有5万个词,“苹果”就是第10086号词,那么它对应一个5万维的向量,第10086位是1,其余位全是0。

这种方式有两个致命问题。

第一,维度爆炸。5万维的向量极其稀疏,大部分位置都是0,计算和存储效率都很低。如果词表扩大到100万,情况更糟。

第二,语义鸿沟。在One-Hot编码下,“猫”和“狗”这两个向量没有任何一位是相同的,它们在高维空间中是正交的。模型完全看不出这两个词意思接近。换句话说,One-Hot没有表达出“相似性”这个极其重要的语义信息。

词向量(Word Embedding)就是为了解决这个问题出现的。它的核心思路是:把每个词映射到一个低维稠密向量中,比如300维。在这个向量空间中,语义相近的词,向量距离也更近。

最经典的效果是可以做向量运算:

king - man + woman ≈ queen

这意味着模型在训练过程中,自动学会了把“国王”和“王后”之间的语义关系,编码进向量空间的某个方向上。

2.2 Word2Vec与Glove:词向量的经典方案

Word2Vec是2013年提出的一种训练词向量的经典方法。它有两种工作模式:

  • CBOW:给定上下文,预测中间词。
  • Skip-gram:给定中间词,预测上下文。

想象一下,一个滑动窗口在语料库中不断移动。窗口里有“我 喜欢 [苹果] 因为 它 很 甜”,模型会反复做这样的任务:看到“我 喜欢 因为 它 很 甜”,猜中间被遮住的词是“苹果”。训练完成之后,模型的隐藏层权重就变成了词向量。

Glove的方法则不一样。它先统计整个语料库中任意两个词共同出现的次数,构建一个共现矩阵,然后对这个矩阵做分解,得到词向量。Word2Vec更关注局部窗口内的词共现关系,Glove则引入了全局统计信息,两者各有优势。

2.3 从静态词向量到上下文词向量

Word2Vec和Glove训练出来的词向量有一个共同限制:静态。也就是说,“苹果”不管出现在“苹果很好吃”还是“苹果手机很贵”,向量都是同一个。这显然不合理。

后来的ELMo、BERT等模型,引入了一个重要概念:上下文词向量。同一个词,放在不同句子里,模型会生成不同的向量。这才是真正让模型“理解”多义词的关键一步。

这里用一个最简单的小例子,让大家直观感受一下“词向量之间的距离”是什么意思。

import numpy as np # 假设我们从某个已经训练好的模型里取出三维向量 vectors = { "猫": np.array([0.9, 0.8, 0.2]), "狗": np.array([0.8, 0.9, 0.1]), "汽车": np.array([0.1, 0.2, 0.9]), } def cosine_similarity(v1, v2): return np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2)) print("猫 vs 狗:", cosine_similarity(vectors["猫"], vectors["狗"])) print("猫 vs 汽车:", cosine_similarity(vectors["猫"], vectors["汽车"]))

运行之后,你会看到“猫”和“狗”的余弦相似度明显更高。这就是“语义相近、距离相近”的最直观展示。

理解词向量之后,我们已经拥有了大模型的第一块基石。接下来要回答的问题是:当一句话里有多个词时,怎么让词和词之间产生交互。

3. 注意力机制:让模型学会“该看哪里”

在Transformer出现之前,NLP领域主流模型是RNN和CNN。它们的局限性非常明显。

RNN按顺序读入句子,把历史信息通过隐藏状态向后传递。对于长句子,信息传到后面就容易衰减,模型会忘记前面说了什么。CNN则只能看局部窗口,比如每次看3个词或者5个词,窗口之外的上下文完全感知不到。

注意力机制(Attention Mechanism)的出发点很简单:在处理当前词的时候,模型应该有机会看一看整句话里所有词,然后决定哪些词更重要。

你可以想象一个画面:你在会议室里发言,说“这个方案要和上季度的数据对比”。当你强调“对比”这个词时,你的目光会下意识地看向“数据”。这就是注意力——它让模型在处理“对比”时,把更大的权重放到“数据”上,而不是平均地看待所有词。

3.1 注意力计算的最小流程

现代注意力机制通常使用Q、K、V三个向量。很多人第一次看到Q、K、V就头皮发麻,其实它们可以理解成三种角色:

  • Query(查询):当前词想问的问题。比如“我和谁关系最大?”
  • Key(键):每个词给自己的标签。比如“我是数据,我是上季度,我是方案”。
  • Value(值):每个词真正携带的内容。

流程分四步:

  1. 当前词的Query,与句子中每一个词的Key做点积,得到一个分数。
  2. 对所有分数做Softmax,变成和为1的权重。
  3. 每个词的Value乘以对应的权重。
  4. 把所有加权后的Value加起来,得到当前词的新表示。

我们用一个非常简化的Python代码演示这个过程。

import numpy as np def softmax(x): e_x = np.exp(x - np.max(x)) return e_x / e_x.sum(axis=-1, keepdims=True) # 假设一句话共有3个词,每个词用一个4维向量表示 X = np.array([ [1.0, 0.0, 0.5, 0.2], [0.5, 1.0, 0.3, 0.1], [0.2, 0.4, 1.0, 0.6] ]) # 为了理解方便,这里让Q、K、V都等于X本身 Q, K, V = X, X, X # 计算注意力得分 scores = Q @ K.T # 对每一行做Softmax,让权重之和为1 weights = softmax(scores) # 新的表示 = 权重 @ V output = weights @ V print("注意力权重矩阵:") print(weights) print("加权后的输出:") print(output)

运行这段代码,你会看到weights矩阵里,每一行代表一个词对全句所有词的注意力分布。比如第0行是“第一个词”看“第一个词、第二个词、第三个词”的权重。

在实际的Transformer中,Q、K、V会通过三个可学习的权重矩阵从输入向量中变换出来,而不是直接等于输入。这相当于给了模型更大的自由度,让它能学习出更丰富的注意力模式。

3.2 注意力机制的关键贡献

注意力机制最重要的贡献,是让模型拥有了“全局视野”。不管两个词在句中相隔多远,注意力都可以直接建立联系。同时,句子中的所有词可以同时计算注意力,这种并行特性极大提高了训练速度。

可以这么说:注意力机制解决了两大核心痛点——长距离依赖和并行计算。这也是Transformer最终取代RNN的最根本原因。

4. Transformer架构:从“顺序处理”到“全书处理”

Transformer的核心思想,是抛弃RNN的顺序结构,完全依靠注意力机制来建模序列。它把整句话当作一个整体,一次性输入模型,让所有词之间互相交换信息。

4.1 自注意力

“自注意力”这个词,很多初学者会误解,以为它和前面说的注意力是两码事。其实没有本质区别,自注意力只不过是在同一个序列内部做注意力计算。

前面第3节演示的流程,就是自注意力。每个词不是看向其他句子里的词,而是看向本句内所有词。一个句子里的词数量有多少,注意力计算的范围就有多大。

这种设计的优势非常明显:任何一个词,在处理过程中都能考虑到全句的信息。这对语义消歧特别重要。比如“苹果”在“我爱吃苹果”里,自注意力会让它从“吃”这个动词上获得高权重,从而确定这里的“苹果”是食物;而在“苹果发布新手机”里,它会从“发布”“手机”上获得上下文信号,确定这里指的是公司。

4.2 多头注意力

多头注意力是Transformer的另一个关键设计。它把注意力计算拆成多个“头”,每个头在独立的子空间里做注意力。

为什么要这样做?因为一个句子里的关系是多维度的。有可能第一个头重点关注“动词和宾语”的关系,第二个头关注“指代关系”,第三个头关注“形容词修饰谁”。如果只有一个注意力,模型只能学到一种加权平均的方式,表达能力有限。多个头并行,就像多个专家从不同角度分析同一句话,最后把分析结果拼接起来。

4.3 位置编码

完全基于注意力的模型有一个尴尬的问题:它看不出词的顺序。

在RNN里,顺序是天然保证的,因为模型从左到右依次读词。但在Transformer里,整句话同时输入,没有先后概念。如果不额外处理,“我打你”和“你打我”在模型看来可能没有任何区别。

为了解决这个问题,Transformer引入了一个叫做位置编码(Positional Encoding)的机制。它给每个位置生成一个唯一的向量,然后把这个向量加到对应位置的词向量上。这样模型既能知道这个词是什么,又能知道它在句子中的位置。

位置编码的生成方式是固定的正弦余弦函数,也可以通过训练学习。以下是生成位置编码的代码示例:

import numpy as np def get_positional_encoding(seq_len, d_model): pe = np.zeros((seq_len, d_model)) for pos in range(seq_len): for i in range(0, d_model, 2): pe[pos, i] = np.sin(pos / (10000 ** (i / d_model))) if i + 1 < d_model: pe[pos, i + 1] = np.cos(pos / (10000 ** (i / d_model))) return pe # 生成一个长度为10、每个位置向量维度为8的位置编码 pe = get_positional_encoding(10, 8) print("位置编码矩阵大小:", pe.shape) print("第1个位置的编码:", pe[0])

这个矩阵加上词向量之后,每个词的位置信息就自然地融入了输入表示。

4.4 残差连接与LayerNorm

Transformer的层数通常很深,比如BERT-base有12层,GPT-3有96层。深层网络容易遇到梯度消失和训练不稳定的问题。Transformer引入了两个标准设计来解决:

  • 残差连接:把输入直接加到输出上,保证梯度可以顺畅回传。
  • LayerNorm:在每一层内部做归一化,稳定数据分布。

这两个组件在结构图上往往只占很小篇幅,但训练大模型时,它们是让几十层、几千亿参数能稳定跑起来的重要保障。

4.5 Encoder与Decoder

原始Transformer论文是做机器翻译的,所以分为两大部分:Encoder负责读取完整的输入句子,理解语义;Decoder负责一个词一个词地生成目标语言。

后来研究者发现,这两个部分可以拆开单独使用,于是有了两条不同的技术路线:

  • BERT只使用Encoder,适合理解类任务,比如文本分类、情感分析、命名实体识别。
  • GPT只使用Decoder,适合生成类任务,比如对话、写文章、写代码。

这也解释了为什么你经常看到“GPT是生成式的,BERT是理解式的”这种说法。

4.6 为什么最后胜出的是Transformer

关于这个问题,本文给出一个明确判断:Transformer不是一种凭空出现的全新架构,而是把注意力机制发挥到极致的产物。它同时满足了三个条件:

维度RNNCNNTransformer
并行计算不友好,必须按顺序处理友好极友好,全句同时计算
长距离依赖弱,存在信息衰减弱,只有局部视野强,任意词可直接交互
架构通用性只能处理序列主要处理图像文本、图像、音频均适用

正因为这一点,Transformer不仅统治了NLP,还扩散到了计算机视觉领域,ViT、Swin Transformer都是它的变体。从实际发展来看,“为什么最后是Transformer”的答案,在于它把并行、全局、通用这三个关键属性同时集合在了同一套架构里。

5. 从Transformer到大模型:GPT与BERT的分岔路

5.1 预训练:大模型的“基础教育”

在传统NLP时代,每做一个任务,都要从头设计模型和特征。比如做情感分析,要收集标注数据,训练一个分类器;做命名实体识别,又要另外训练一套模型。工程量巨大,而且任务之间的知识无法复用。

Transformer之后,NLP的玩法彻底变了。研究者先用海量无标注文本,比如维基百科、新闻、书籍,训练一个通用模型。这个阶段叫预训练(Pre-training)。模型在这个阶段学习的是语言的基本规律,包括语法、常识、逻辑关系等。

预训练完成之后,这个模型已经具备了很强的语言能力。后续要做具体任务,只需要用少量标注数据做微调(Fine-tuning),或者直接通过提示词(Prompt)来引导模型完成任务。

5.2 BERT:双向理解

BERT的预训练任务很有意思,叫“掩码语言模型”。它在训练时随机遮住句子中的一些词,让模型根据上下文猜出被遮住的词。比如:

我喜欢吃[MASK],因为它很甜。

模型需要根据“我喜欢吃”和“因为它很甜”两个方向的信息,猜出[MASK]大概率是“苹果”。这种双向建模能力,让BERT在理解类任务上表现极好。

5.3 GPT:自回归生成

GPT选择的路线是另一条:只使用Transformer的Decoder结构,预训练目标是最简单的“预测下一个词”。

给定“我喜欢吃”,模型预测下一个词的概率分布,最可能是“苹果”,然后继续往后预测。这个机制看起来简单,但它的潜力远比想象中要大。因为语言本身就是按顺序生成的,GPT这种自回归方式非常适合做生成任务。更重要的是,随着训练数据量和模型规模不断增大,GPT的表现呈现出持续提升的趋势。

5.4 缩放法则与涌现能力

大模型的能力并不是线性增长的。研究者发现,当模型参数量、训练数据量、计算量同步增加时,模型能力会按照一定规律稳定提升,这就是缩放法则(Scaling Law)。

更奇妙的是,模型规模大到某个临界点之后,会出现一些原先小模型完全没有的能力,比如上下文学习(In-Context Learning)和思维链(Chain of Thought)。这些能力不是被显式设计出来的,而是模型在规模驱动下自然涌现的。这也是为什么近两年大家争相把模型越做越大,因为有些能力只有达到一定规模才会出现。

但从工程角度看,这也带来了巨大的算力成本和部署压力。所以本地部署AI大模型、模型量化、蒸馏这些技术,也成了大模型落地的重要方向。

6. “动画速通”:在脑海中把整个流程跑一遍

前面几节讲了不少概念,这一节我们把这些概念串成一条完整的动态流程。你可以想象屏幕上正在播放一部关于语言处理的动画短片。

第一步,输入句子变成词向量。每个词从“文字”变成高维空间中的一个点。“我”“喜欢”“吃”“苹果”各自带着自己的初始向量进入模型。

第二步,位置编码加入。每个词向量加上位置信息,模型知道“苹果”出现在第四个位置,而不是第一个。

第三步,进入第一层Transformer。自注意力开始运作。每一个词向全句其他所有词发出查询:“你们和我有什么关系?”得分高的词获得更高的权重。这个动画里,你可以看到“苹果”和“吃”之间出现一条加粗的连线,“苹果”和“我”之间也有一条细线。经过加权求和,“苹果”的向量已经不再是孤立的词向量,而是融合了“吃”和“我”等上下文信息的新向量。

第四步,进入下一层Transformer。新的向量再次做自注意力,信息继续交换。每一层都在不断细化每个词的语义表示。深层的“苹果”向量,已经包含了整句话的语境信息。

第五步,如果是GPT这样的生成式模型,最后一层会把“苹果”位置的表征映射到整个词表上,计算每个词作为下一个词的概率。模型选择概率最高的词作为输出,然后这个输出又变成新的输入,继续预测下一个词。

整部“动画”的核心只有一句话:词向量提供起点,自注意力实现信息交换,多层堆叠加深理解,最后映射为概率输出。

如果你希望看到真实的注意力可视化效果,可以找一些开源的注意力可视化项目,把BERT或者GPT的输出画成热力图。你会直观地看到,句子里不同的词对之间的关系强度,和本文描述的动画几乎一模一样。

7. 学习大模型原理的常见误区与排查思路

很多人在学习过程中会产生一些长期困惑,这里挑出最常见的几个误区,做一个对照说明。

误区实际情况
大模型是完全不可理解的黑盒底层是确定的矩阵运算和概率预测,中间结果可以被观察和分析
词向量已经是过时技术大模型第一层仍然是Embedding,词向量思想贯穿始终
注意力机制是Transformer发明的注意力最早用于机器翻译,Transformer的贡献是把它作为主架构并扩展到极致
Transformer只有GPT这一种用法BERT、ViT、Swin Transformer都是基于Transformer的变体
大模型能力完全靠堆参数数据质量、模型结构、训练策略和算力都同等重要

7.1 误区一:词向量和上下文词向量分不清

静态词向量指每一个词只有一个固定向量,比如Word2Vec和Glove。上下文词向量指同一个词在不同句子里有不同向量,比如BERT的输出。初学者经常把这两者混为一谈。理解两者区别,对理解大模型的本质帮助很大。

7.2 误区二:以为注意力权重就是模型解释性

注意力权重确实能告诉我们模型在“看哪里”,但它不等于完整的模型解释。不同注意力头关注的关系各不相同,而且注意力权重只是模型内部计算的一个环节。不要把注意力可视化和模型真正决策逻辑完全等同起来。

7.3 误区三:只记名词,不串链路

很多人记住了“自注意力”“多头”“位置编码”这些名词,却说不清它们之间的关系。真正有效的学习方式,是能在纸上默写出整条链路:输入词 → 词向量 → 位置编码 → 多头注意力 → 前馈网络 → 多层堆叠 → 输出概率。你可以用这个标准自测一下。

8. 动手实践与最佳学习路径

原理看再多,不实际操作就很难真正掌握。下面给出一条从易到难的实践路径。

8.1 第一步:用Hugging Face跑一个小模型

安装transformers库之后,用几行代码加载一个小模型,体验大模型的输入输出过程。

pip install transformers

下面的代码会加载一个小型GPT模型,并让它续写一段文字。

from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("gpt2") model = AutoModelForCausalLM.from_pretrained("gpt2") prompt = "The future of AI is" inputs = tokenizer(prompt, return_tensors="pt") outputs = model.generate(**inputs, max_new_tokens=20) print(tokenizer.decode(outputs[0], skip_special_tokens=True))

注意,第一次运行需要下载模型文件,耗时取决于网络情况。运行成功的话,你会在终端看到模型生成的一段英文续写。这个实验虽然简单,但能让你直观地感受“预测下一个词”的过程。

8.2 第二步:读原论文,只看关键图

Transformer的原始论文《Attention Is All You Need》值得一读,但不需要一字一句啃。建议先看架构图和自注意力公式,然后对照本文第4节的内容,把每个组件的名称和作用一一对应起来。

8.3 第三步:手推一遍自注意力的矩阵运算

不要停留在代码和概念上。尝试在一张纸上,写出一个2个词的输入矩阵,手动完成Q、K、V的生成、点积、Softmax、加权求和。这个流程完整走一遍之后,Transformer对你来说就不再神秘。

8.4 第四步:用“词向量+注意力”框架去理解新事物

当你刷到大模型相关的新闻时,试着用本文的框架去分析:这个方案改了词向量层吗?改了注意力机制吗?用了什么预训练策略?这样的思维习惯,比单纯收藏文章有用得多。

8.5 工程落地的安全意识

最后必须提醒一点:在实际业务中使用大模型,尤其是通过API调用或者在本地做推理时,要注意数据合规。不要直接把用户隐私数据、公司核心代码、商业机密封送给外部模型。如果敏感数据确实需要处理,优先考虑私有化部署或者数据脱敏方案。

9. 总结与后续学习方向

这篇文章的核心线索可以总结成三句话:

  • 词向量把文字变成模型可以计算的坐标。
  • Transformer通过自注意力机制,让每个词在上下文中不断修正自己的语义表示。
  • 大模型通过大规模预训练,把这条链路推到极致,最终涌现出惊人的通用能力。

读完这篇文章,建议你完成三件事。第一,把第8节的Hugging Face实验跑通,感受一次真实的“预测下一个词”过程。第二,在纸上画出Transformer的架构图,标注每个组件的名称和作用。第三,尝试用“词向量 + 注意力 + 预训练”的视角,去拆解最近看到的一篇大模型技术文章。

后续可以继续深入的方向包括:GPT系列模型的结构细节、多模态大模型的实现思路、本地部署AI大模型的量化方法、以及基于Transformer的并行训练技术。这些内容都建立在这篇文章的基础上,只要你把“词向量 → 注意力 → Transformer → 大模型”这条主线记清楚,后面再学任何新技术都不容易迷路。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询