最近总有人问我:AI大模型背后到底是什么?为什么ChatGPT能理解自然语言,GPT-4能看图写代码,各类开源大模型能本地跑起来做文案、翻译、OCR?市面上的解释要么太浅,停留在“它是基于Transformer的”,要么太深,一上来就是QKV矩阵、多头注意力、反向传播,非算法背景的读者很容易被劝退。
这篇文章打算换一种讲法:沿着一条技术演进线,从词向量讲到RNN,再到注意力机制,最后到Transformer,把大模型最核心的原理做一个动画级的急速入门。讲完你会知道三个问题的答案:
- 词变成向量之后,语义是怎么被计算的?
- RNN/LSTM为什么会慢慢被替代?
- Transformer为什么能成为如今大模型的统一底座?
内容不追求一步到位推导出全部数学细节,重点是建立完整的技术脉络和直觉。建议配合搜索关键词“Transformer结构图”“自注意力QKV图解”一起看,效果更好。
1. AI大模型到底在解决什么问题
先说清楚大模型做的是什么事。无论是GPT、BERT、LLaMA还是ChatGLM,它们核心任务可以概括成一句话:给定一串文本,预测下一个最合适的标记。
这个任务被称为语言建模。听起来很简单,但难点在于自然语言本身非常复杂:
- 一词多义。同一个“苹果”,可能是水果,也可能是手机品牌。
- 语序敏感。“我爱你”和“你爱我”意思完全不同。
- 长距离依赖。句子开头的一个否定词,可能会影响结尾整个语义。
- 上下文相关。孤立的“bank”是银行还是河岸,取决于前后文。
要让机器处理这些,第一步就是解决一个最基本的问题:怎么把文字变成计算机能计算的数字。
2. 词向量:自然语言处理的第一块基石
2.1 One-Hot编码为什么不行
NLP早期最朴素的做法是One-Hot编码。假设词表里有1万个词,就把每个词表示成一个长度1万、只有1位为1、其余全为0的向量。
"猫" -> [0, 0, 1, 0, ..., 0] "狗" -> [1, 0, 0, 0, ..., 0]
问题很明显:
- 维度爆炸。词表多大,向量就多长。
- 向量稀疏。绝大部分位置都是0,存储和计算效率极低。
- 语义鸿沟。任何两个词的向量距离都一样,无法表达词与词之间的相似性。模型根本不知道“猫”和“狗”都是宠物,而“猫”和“汽车”毫无关系。
2.2 分布式表示与Word2Vec
突破口来自分布式表示思想:用一个固定长度、稠密的低维向量表示一个词,向量的每一维不是明确对应的语言学特征,而是通过大量语料学习出来的隐含特征。
2013年Google提出的Word2Vec,是这个方向的经典代表。它有两种训练思路:
- CBOW(Continuous Bag-of-Words):用上下文词预测中心词。
- Skip-gram:用中心词预测上下文词。
训练完成之后,每个词被映射成一个几百维的稠密向量,比如:
vec("国王") - vec("男人") + vec("女人") ≈ vec("女王")
这说明向量在不同维度上确实编码了“性别”“身份”“王室”等语义特征。词向量之间的距离、方向,开始有了语义含义。
除了Word2Vec,还有GloVe。GloVe的思路是统计词与词的共现矩阵,再做矩阵分解,把全局统计信息和局部上下文结合起来。在大规模语料上,GloVe生成的词向量通常比Word2Vec更稳定。
2.3 词向量的局限
词向量解决了“词怎么变成数字”的问题,但它是静态的。一个词训练完之后只有一个向量,无论在什么语境下都用同一个表示。这就导致了著名的“苹果”困境:
- 在“苹果很好吃”里,它是水果。
- 在“苹果发布了新手机”里,它是品牌。
静态词向量无法区分。真正要理解上下文,就必须让词的表示随着所在句子动态变化。于是研究重点从“词本身”转向了“词在上下文中的表示”。
3. 从词向量到上下文表示:RNN的崛起与局限
3.1 RNN为什么被引入
为了解决上下文建模问题,循环神经网络(RNN)被引入NLP。
RNN的结构特点是一个隐藏状态在时间步之间循环传递。处理到第t个词时,隐藏状态h_t不仅取决于当前输入x_t,还取决于上一个隐藏状态h_{t-1}:
h_t = f(h_{t-1}, x_t)
理论上,通过这种循环传递,模型可以把前面所有历史信息“记住”在隐藏状态里。这就像一个人逐字阅读句子,每读到一个新词,就把前面的信息在脑子里更新一遍。
3.2 LSTM:给RNN加记忆闸门
RNN有一个致命弱点:梯度消失。当序列很长时,反向传播的梯度会指数级衰减,模型很难学到长距离依赖。句子开头的信息传到句子结尾时,已经消失殆尽了。
长短期记忆网络(LSTM)通过引入门控机制解决这个问题:
- 遗忘门:决定遗忘多少历史信息。
- 输入门:决定多少新信息写入记忆。
- 输出门:决定从记忆中输出多少。
LSTM在机器翻译、文本生成等任务上统治了很多年。2014年前后的Seq2Seq翻译模型,大多数基于LSTM。
3.3 RNN/LSTM的致命缺陷
虽然LSTM缓解了梯度消失,但本质问题没有解决:
- 串行计算,无法并行。必须等第t个词处理完,才能处理第t+1个词。这导致模型训练速度极慢,无法吃下海量数据。
- 长距离依赖仍然困难。即使有门控,超过几百个词之后信息衰减依然严重。
- 双向建模繁琐。要同时利用前后文,需要设计双向LSTM,结构更加复杂。
当数据集从百万级变成十亿级之后,RNN这种串行架构的训练效率成了硬瓶颈。NLP需要一种能并行处理整个序列、同时保留位置信息和上下文关系的架构。Transformer就是在这个需求下诞生的。
4. 注意力机制:让模型学会聚焦
4.1 从Seq2Seq的瓶颈说起
在早期机器翻译中,Encoder把整个源语言句子压缩成一个固定向量,Decoder再从这个向量中生成目标语言。如果句子很长,这个固定向量就是信息瓶颈——所有信息都挤在一个向量里,细节必然丢失。
2014年Bahdanau等人提出注意力机制:Decoder生成每个词时,不要只看Encoder的最后一个向量,而是动态回看Encoder每一个时间步的输出,并给每个位置分配一个权重。
注意力机制的本质是:在每一步生成时,学会“应该看哪里”。
- 翻译“I love you”时,生成“爱”字时,模型应该重点关注“love”这个位置,而不是“I”或“you”。
- 权重不是预先写死的规则,而是通过训练学习出来的。
注意力机制出现后,机器翻译质量大幅提升,尤其是长句翻译。更重要的是,它让模型不再依赖“把全部信息压缩成一个向量”的设计,每个输入位置的信息都可以被保留和查阅。
4.2 注意力机制的数学直觉
注意力机制可以简化为三步:
- 打分:计算当前解码位置与输入序列每个位置的匹配程度。
- 归一化:用softmax把分数变成权重,所有权重之和为1。
- 加权求和:用权重对输入序列的所有输出向量做加权平均,得到当前步的上下文向量。
用一句话概括:用查询向量去匹配一系列键值对,最后按匹配度取出加权值。
这个“查询-键-值”(Query-Key-Value)的抽象,正是后续Transformer自注意力机制的雏形。很多人第一次看QKV概念觉得玄乎,其实把它理解成“搜索”就顺了:Query是你在搜索框里输入的问题,Key是每篇文档的标题,Value是文档正文。系统先计算Query和所有Key的匹配度,再用匹配度去加权提取Value。
5. Transformer架构详解:大模型的统一底座
5.1 Transformer解决了什么
2017年,Google在论文《Attention Is All You Need》中提出Transformer。它的核心洞见是:既然注意力机制能动态聚焦上下文,那还保留循环结构做什么?完全去掉RNN,只靠注意力来建模序列关系。
Transformer的优势极其明显:
- 完全并行。整个序列可以同时计算,不再有串行依赖,训练效率大幅提升。
- 直接建模长距离依赖。任意两个位置之间只需一步注意力计算,信息传递路径短,梯度消失问题被结构性地解决。
- 可扩展性强。并行计算+海量数据+更多参数,让模型规模可以持续放大。
5.2 自注意力机制
Self-Attention与标准注意力的区别是:序列中的每个token,既充当查询,也充当键和值。也就是说,每个词都要和序列中所有词互相计算关联度。
具体过程:
- 输入序列的每个词向量分别乘三个可学习矩阵W_Q、W_K、W_V,得到Q、K、V。
- 计算Query与所有Key的点积,除以根号d_k做缩放,防止数值过大。
- softmax归一化得到注意力权重。
- 用权重对Value做加权求和。
以一个句子为例:“The animal didn't cross the street because it was too tired”。
这里的“it”指代谁?人类一眼知道指代的是“animal”。自注意力机制做的就是这件事:当模型处理“it”这个词时,它会自动给“animal”分配一个较高的注意力权重,从而把“it”的表示更新为融合了“animal”语义的上下文向量。
这就是大模型理解指代、消歧、上下文关联的底层能力来源。
5.3 多头注意力
一个注意力头只能捕捉一种关联模式,实际语言中的关系非常多样。
多头注意力就是把注意力计算复制成多份,每份使用不同的W_Q、W_K、W_V,最后拼接起来再线性变换。直观理解:
- 一个头关注语法依赖。
- 一个头关注指代关系。
- 一个头关注语义相关性。
- 一个头关注位置距离。
多个头并行工作,每个头捕捉不同维度的关联,模型表达力大幅增强。这也是为什么大模型动辄几十层Transformer、每层十几个注意力头——越多层、越多头,模型能建模的关系模式就越丰富。
5.4 位置编码
RNN因为有先后顺序的循环结构,天然携带位置信息。Transformer完全并行,如果不额外编码位置,模型看到“我爱你”和“你爱我”就是完全相同的输入。
Transformer使用一种正弦波位置编码:每个位置添加一个唯一的向量,该向量的模式由sin和cos函数按不同频率生成。近年的模型也常用可学习的位置编码或旋转位置编码(RoPE),思路都是给每个token的向量注入位置信息。
没有位置编码,Transformer就只是一团无序的词袋;有了位置编码,才能区分语序。
5.5 残差连接与前馈网络
Transformer每个子层(自注意力和前馈网络)外面都包了一层残差连接,然后做层归一化。
残差连接解决深层网络训练困难的问题。即使网络有几十层甚至上百层,梯度也可以通过残差路径直接回传,不会衰减。
前馈网络(FFN)由两层线性变换加非线性激活函数组成。注意力层负责在token之间交换信息,前馈层负责在每个token内部做非线性变换。注意力层是“词与词的交互”,前馈层是“单词的深度加工”。
5.6 Encoder-Decoder整体结构
标准Transformer是Encoder-Decoder架构:
- Encoder:双向注意力,每个位置都能看到整个输入序列的前后文。
- Decoder:带掩码的自注意力(只能看到当前位置之前的token)+ 交叉注意力(去关注Encoder输出)。
这套结构最初是为机器翻译设计的。后来的大模型发展,走出了两条分支:
- BERT:只用Encoder,适合文本分类、信息抽取、语义相似度等理解任务。
- GPT系列:只用Decoder,适合文本生成。GPT也把Decoder的掩码自注意力沿用下来,预测下一个词。
这两条分支成了现代大模型的源头。如今主流大模型基本都是Decoder-only路线,因为生成能力强,且能统一建模理解和生成任务。
6. 从Transformer到大模型:规模化的力量
6.1 预训练与微调
Transformer带来的是架构能力上限,但要变成真正的大模型,还需要一套高效训练范式:预训练 + 微调。
预训练阶段,用海量无标注文本训练模型,学习通用的语言规律;微调阶段,用少量带标注数据让模型适配具体任务。
GPT系列论文验证了一个核心结论:模型参数量、数据量、计算量按相同比例放大时,模型性能会平滑提升。这个规律后来被称为缩放定律。
如今大模型的能力,本质上是在这个范式下,把Transformer网络堆到极大规模得到的涌现效果:
- 参数量从几十亿到几千亿。
- 训练数据从几百GB到几TB。
- 训练GPU从几张到上万张。
- 上下文长度从512扩展到百万级。
6.2 为什么是Transformer一统天下
这个问题在技术社区反复被讨论。核心原因可以归纳成四点:
- 并行效率决定了规模化天花板。RNN无法并行,十亿级数据集上训练成本不可承受;Transformer可以整句并行,GPU利用率高。
- 长距离建模能力更强。RNN的递归传递导致信息衰减,Transformer直接建图,路径最短。
- 架构简洁统一。卷积擅长局部特征,RNN擅长序列建模,Transformer一个架构全包了,而且可以无损扩展到任意长度、任意模态。
- 硬件生态已经围绕Transformer优化。FlashAttention、Transformer内核算子、专用的推理引擎,全部为Transformer深度优化,生态一旦建立,切换成本极高。
这也是为什么Swin Transformer能把Transformer引入视觉领域,Vision Transformer可以在图像分类上直接替代CNN卷积网络,各类多模态大模型也能用同一个Transformer结构处理文本、图像、音频和视频。
7. 技术演进:Transformer之后方向在哪
大模型能力在提升,但Transformer本身也有瓶颈,其中最主要的是推理成本:自注意力计算复杂度是O(n²),上下文越长,计算开销增长越快。
目前业内主要探索方向有:
- 稀疏注意力。只让部分token做全局注意力,减少计算复杂度。
- 线性注意力。用核技巧把注意力复杂度降到O(n),代表性工作有Mamba、RWKV。
- 混合架构。把注意力机制与线性RNN混合使用,既有全局建模能力,又有线性推理效率。
- MoE(混合专家)。把网络中的前馈层拆分成多个专家,推理时只激活部分专家,在相同算力下扩展参数量。
从实际产品看,GPT-4、Claude、Gemini等头部模型架构细节没有完全公开,但推测都用了MoE架构。本地部署社区里,Qwen、DeepSeek、LLaMA也大多有MoE版本。
8. 大模型入门学习路径建议
从词向量到Transformer,不是一条过时的历史线,而是理解大模型最扎实的学习路径:
- 先看懂词向量。理解One-Hot到分布式表示的演进,明白语义如何变成几何向量。
- 再看RNN/LSTM。明白为什么串行架构是瓶颈。
- 然后理解注意力机制。重点关注QKV的含义,这是理解Transformer的钥匙。
- 最后拆解Transformer。把自注意力、多头、位置编码、残差连接、FFN逐块看懂。
学完之后,可以结合代码进一步巩固。推荐两个方向:
- 用PyTorch手写一个极简Transformer。不用追求复现GPT,只需要几十行代码实现一个能训练的自注意力层,就能彻底弄懂矩阵形状变化。
- 使用HuggingFace的transformers库加载一个小型GPT模型做文本生成,观察参数、输入输出维度,加深工程理解。
工具、模型、框架更新极快,但词向量、注意力、Transformer这套底层概念,在未来很长时间内都是AI大模型技术的核心底座。把地基打牢,后面学微调、部署、推理优化都会轻松很多。
建议收藏这篇文章,配合动画图解和代码实现一起看,把概念链完整串一遍,能帮你少走很多弯路。