在大模型席卷AI领域的今天,Transformer架构早已成为所有NLP从业者和学习者绕不开的核心知识点。作为现代大语言模型的"基石",Transformer的出现彻底颠覆了传统序列建模的思路——在它之前,机器翻译、文本生成等任务主要依赖循环神经网络(RNN)及其变体(LSTM、GRU)。但RNN类模型存在致命缺陷:必须按时间步串行处理序列,无法并行计算,训练效率极低;同时在处理长文本时,梯度消失问题会导致模型难以捕捉长距离依赖关系。
而Transformer的革命性在于:完全抛弃循环结构,仅通过位置编码、自注意力机制、全连接前馈网络三大核心组件建模序列关系。这种设计让模型训练实现了高度并行化,不仅大幅提升了训练速度,更支持在大规模语料上训练超大规模模型,为GPT、BERT等顶尖大模型的诞生铺平了道路。
市面上讲解Transformer的文章不少,但大多充斥着复杂公式和专业术语,让小白望而却步。本文将用最通俗的语言+直观代码示例,拆解Transformer的完整计算流程,从输入处理到输出生成逐一解析,无论是刚入门的小白还是需要巩固基础的程序员,都能轻松理解并上手实践!
一、输入数据处理:把文字变成模型能看懂的"数字矩阵"
Transformer无法直接处理原始文本,必须先将文字转换为数值形式,这一步主要分为3个关键步骤:
1. Tokenization(分词):拆分文本为基本单位
分词是将完整句子拆分为模型可处理的最小单元(token),这些token可以是单个汉字、词语或子词(如英文中的"unhappiness"拆分为"un-happiness")。只有完成分词,才能后续映射为词向量进行计算。
分词示例(以中文为例):
// 分词前:原始文本 "人工智能正在改变世界" // 分词后:token数组(不同分词器结果可能不同,此处为字级别分词) ['人','工','智','能','正','在','改','变','世','界']这里补充一个实用知识点:分词器的选择会影响模型效果。比如中文分词可分为字级别、词级别、子词级别(如BPE、WordPiece),子词级别分词能平衡词汇量大小和未登录词问题,是目前大模型的主流选择(如GPT使用BPE分词,BERT使用WordPiece分词)。
2. Embedding(词嵌入):给每个token分配"数字身份证"
词嵌入的核心是将每个token映射为固定维度的稠密向量(通常为512维、1024维等,记为d_model)。这个向量就像token的"数字身份证",能够编码词语的语义信息。
需要注意的是,初始词嵌入是静态向量——即同一个token在不同语境下的初始向量是固定的。例如"苹果手机"和"苹果水果"中的"苹果",若分词后是同一个token,其初始嵌入向量完全相同。这种静态特性和传统Word2Vec的词向量类似,都是通过嵌入表查找获得。
但Transformer的强大之处在于:后续的自注意力层会根据上下文动态调整这些向量,最终生成上下文感知的语义表示,让同一个token在不同语境下拥有不同的向量,从而准确表达多义词的语义差异。
词嵌入示例(d_model=512):
// 输入token数组 ['人','工','智','能','正','在','改','变','世','界'] // 输出512维词嵌入矩阵(仅展示前3维示意) [ [0.12, 0.34, 0.56, ..., 0.78], // "人"的嵌入向量 [0.23, 0.45, 0.67, ..., 0.89], // "工"的嵌入向量 [0.34, 0.56, 0.78, ..., 0.90], // "智"的嵌入向量 ... // 其余token的嵌入向量 ]此时得到的张量形状为(batch_size, seq_len, d_model):
- batch_size:批量处理的序列数量(工程优化,提升并行效率)
- seq_len:分词后的token数量(如上例中seq_len=10)
- d_model:词嵌入向量维度(如上例中d_model=512)
3. Positional Encoding(位置编码):给token加上"位置标签"
由于Transformer是并行处理所有token的,无法像RNN那样通过时间步自然获取序列顺序信息。而文字的顺序至关重要(如"我吃苹果"和"苹果吃我"语义完全不同),因此需要通过位置编码为每个token注入位置信息。
位置编码是通过固定公式计算得到的向量,与词嵌入向量维度相同(d_model),计算后与词嵌入向量相加(element-wise add),让每个token的向量同时包含"语义信息"(来自词嵌入)和"位置信息"(来自位置编码)。
位置编码公式(来自Transformer原论文):
公式解读:
- pos:token在序列中的位置(从0开始计数,如第一个token pos=0,第二个pos=1)
- i:向量的维度索引(0 ≤ i < d_model/2)
- 维度索引为偶数时,使用sin函数计算;维度索引为奇数时,使用cos函数计算
位置编码与词嵌入融合:
// 最终输入Encoder的向量 = 词嵌入向量 + 位置编码向量 encoder_input = token_embedding + positional_encoding这里补充一个小技巧:位置编码的最大值可以超过训练数据的序列长度,因此Transformer对未见过的长序列也有一定的适配能力。
二、Encoder(编码器):提取输入序列的上下文特征
经过输入处理后的向量,首先进入Encoder模块。标准Transformer通常堆叠6层Encoder(可根据需求调整层数),所有层并行处理整个输入序列,最终输出的上下文特征将传递给Decoder,作为Cross-Attention的Key(K)和Value(V)。
Encoder的核心优势是并行计算,这也是BERT等仅含Encoder的模型推理速度快的关键原因——无需像Decoder那样逐token生成。每层Encoder包含两个子层:Multi-Head Attention(多头自注意力)和Feed-Forward Network(前馈神经网络),且每个子层后都配有残差连接和层归一化。
1. Multi-Head Attention(多头自注意力):捕捉token间的上下文关联
多头自注意力是Encoder的核心,它让模型能够同时捕捉同一个序列中不同token之间的依赖关系(比如"他"指代前文的"小明")。要理解它,需要先掌握三个基础概念:Scaled Dot-Product Attention(缩放点积注意力)、Self-Attention(自注意力)、Multi-Head机制(多头机制)。
(1)Scaled Dot-Product Attention:注意力的核心计算逻辑
缩放点积注意力是一种高效的注意力计算方式,核心思想是:
- 计算Query(查询,Q)与Key(键,K)的相似度(通过点积)
- 对相似度进行缩放(除以√dk,dk为K的维度)
- 通过Softmax将相似度转换为注意力权重(权重总和为1)
- 用注意力权重对Value(值,V)进行加权求和,得到最终注意力输出
计算公式:
公式中关键细节:为什么要除以√dk?
- 若dk较大,Q和K的点积结果会偏大,导致Softmax函数输出趋近于0或1(指数函数的放大效应)
- 这种极端分布会导致梯度消失,模型难以训练
- 除以√dk可让点积结果的方差保持在1左右,避免上述问题
Softmax函数的特性也印证了这一点:Softmax(z) = e^z / Σez,当z值过大时,ez会急剧增长,导致少数权重占比极高,其余权重趋近于0,模型失去对多上下文的捕捉能力。
(2)Self-Attention:Q、K、V同源的注意力机制
自注意力是缩放点积注意力的一种应用场景——Q、K、V均来自同一个输入序列(Encoder的输入)。具体计算步骤:
- 输入矩阵X(形状:batch_size × seq_len × d_model)
- 通过三个可训练的权重矩阵Wq、Wk、Wv,将X分别投影为Q、K、V(形状均为batch_size × seq_len × dk)
- 将Q、K、V代入缩放点积注意力公式,得到自注意力输出
(3)Multi-Head机制:并行捕捉多维度语义
多头机制的核心是"分而治之"——将Q、K、V分成多个子集(称为"头"),每个子集独立计算注意力,最后将结果拼接并线性变换,让模型能够同时捕捉不同表示子空间的语义信息。
具体步骤:
- 将Q、K、V按dk维度均分(例如d_model=512,分成8个头,则每个头的dk=64)
- 每个头独立计算缩放点积注意力(此时除数变为√64=8)
- 将8个头部的输出按dk维度拼接,得到形状为batch_size × seq_len × d_model的矩阵
- 通过权重矩阵Wo进行线性变换,得到多头自注意力的最终输出
计算公式:
2. 残差连接 + Layer Normalization(层归一化):解决深层训练难题
在多头自注意力和前馈神经网络之后,都有"残差连接+层归一化"的组合,这是Transformer能够深度堆叠(如12层、24层)的关键。
(1)残差连接(Residual Connection)
残差连接的本质是将子层的输入X与输出直接相加(即Output = Sublayer(X) + X),作用有两个:
- 缓解梯度消失:为反向传播提供直接的梯度路径,避免深层网络中梯度衰减到0
- 保留原始信息:让输入的原始特征能够无损传递到后续层,避免在非线性变换中丢失关键信息
(2)Layer Normalization(层归一化)
层归一化是对每个token的向量维度进行标准化处理,公式如下:
公式解读:
- xi:token向量的第i个维度值
- μ:该token向量所有维度的均值
- σ²:该token向量所有维度的方差
- ε:极小值(防止分母为0)
- 标准化后的数据分布更稳定,能加速模型收敛
重要区别:Post-LN vs Pre-LN
- 原论文使用Post-LN结构:子层输出 → 残差连接 → 层归一化
- 现代大模型多使用Pre-LN结构:层归一化 → 子层输出 → 残差连接
- Pre-LN的优势:训练更稳定,收敛速度更快,更适合深层网络
// Post-LN(原论文结构) x → Multi-Head Attention → x + Attention输出 → LayerNorm → 下一层输入 // Pre-LN(现代主流结构) x → LayerNorm → Multi-Head Attention → x + Attention输出 → 下一层输入3. Feed-Forward Network(前馈神经网络):增强token的表达能力
前馈神经网络是一个两层全连接网络,作用是对每个token的向量进行独立的非线性变换,增强模型的表达能力。
计算公式:
具体结构:
- 第一层线性变换:将d_model维向量映射到更高维度(通常为4×d_model,如512→2048)
- 非线性激活函数:常用ReLU(原论文),现代模型也常用GELU
- 第二层线性变换:将高维向量映射回d_model维(如2048→512)
关键特点:输入和输出的形状完全一致(batch_size × seq_len × d_model),不改变序列长度和向量维度。
经过"多头自注意力 + 残差连接+层归一化 + 前馈神经网络 + 残差连接+层归一化"后,一层Encoder的计算完成。6层Encoder堆叠后,输出的上下文特征将传递给Decoder。
三、Decoder(解码器):基于Encoder特征生成目标序列
Decoder的核心任务是根据Encoder输出的上下文特征,生成符合要求的目标序列(如翻译后的句子、生成的文本)。标准Transformer同样堆叠6层Decoder,每层包含三个子层:Masked Multi-Head Self-Attention(掩码多头自注意力)、Multi-Head Cross-Attention(多头交叉注意力)、Feed-Forward Network(前馈神经网络)。
1. Masked Multi-Head Self-Attention(掩码多头自注意力):防止"偷看未来信息"
与Encoder的多头自注意力相比,Decoder的这一层多了一个"掩码"(Mask),核心目的是:在生成序列时,确保当前位置只能看到前面的token,不能看到后面的token(即"未来信息")。
(1)为什么需要掩码?
以文本生成为例,当生成第i个token时,模型只能依赖第1~i-1个token的信息,不能提前知道第i+1个及以后的token——否则就是"作弊",训练出的模型在推理时无法正常生成序列。
(2)Shifted Target Sequence(移位目标序列)
训练时,Decoder的输入是"移位后的目标序列":
- 原始目标序列:[“我”, “很”, “好”, “<”](<为结束标记)
- 移位后序列:[“”, “我”, “很”, “好”](为起始标记)
这样设计是为了让模型在训练时,每个位置的输入都对应下一个位置的输出(如"“对应"我”,“我"对应"很”)。
(3)Causal Mask(因果掩码)
掩码是一个上三角矩阵,下三角及对角线为0,上三角为-∞(负无穷)。例如seq_len=5的掩码矩阵:
[[0., -inf, -inf, -inf, -inf], [0., 0., -inf, -inf, -inf], [0., 0., 0., -inf, -inf], [0., 0., 0., 0., -inf], [0., 0., 0., 0., 0.]]掩码的作用:将Q×K^T的上三角元素设为-∞,经过Softmax后这些位置的权重会变为0,从而屏蔽未来位置的信息。
(4)训练vs推理的差异
- 训练时:可并行计算所有位置的输出(一次前向传播生成整个序列)
- 推理时:只能串行生成(先输入"“生成第1个token,再将”+第1个token"作为输入生成第2个token,以此类推)
2. Multi-Head Cross-Attention(多头交叉注意力):融合Encoder的上下文信息
交叉注意力的作用是让Decoder能够"看到"Encoder的输出(即输入序列的上下文特征),实现跨序列的信息融合。
核心区别:Cross-Attention vs Self-Attention
- Self-Attention:Q、K、V来自同一个序列(如Encoder的输入、Decoder的移位序列)
- Cross-Attention:Q来自Decoder(掩码多头自注意力的输出),K和V来自Encoder(最终输出)
计算公式:
具体流程:
- 掩码多头自注意力的输出经过残差连接和层归一化后,作为Q
- Encoder的最终输出作为K和V(整个解码过程中K和V固定不变)
- 计算交叉注意力,让Decoder每个位置的token都能关注到Encoder输入序列中相关的token(如翻译时,目标语言的token关注源语言的对应token)
交叉注意力之后,同样会经过残差连接和层归一化,再进入前馈神经网络(与Encoder的前馈神经网络结构完全一致)。
四、输出数据处理:从模型输出到最终文本
经过6层Decoder堆叠后,得到的输出张量需要经过两步处理,才能转换为最终的文本序列:
1. 线性层(Linear):映射到词表维度
Decoder的输出张量形状为(batch_size, seq_len, d_model),通过一个线性层将其映射到词表维度:
- 线性层的权重矩阵形状为
(d_model, vocab_size)(vocab_size为词表中token的总数) - 映射后的张量形状为
(batch_size, seq_len, vocab_size)
2. Softmax层:转换为概率分布
对映射后的张量的每一行(每个位置的token)应用Softmax函数,将其转换为概率分布(每行概率和为1)。例如:
// vocab_size=5时的概率分布示例(每行对应一个位置的token概率) [ [0.05, 0.12, 0.73, 0.08, 0.02], // 第1个位置:概率最大的是第3个token [0.18, 0.65, 0.07, 0.06, 0.04], // 第2个位置:概率最大的是第2个token [0.03, 0.09, 0.11, 0.72, 0.05] // 第3个位置:概率最大的是第4个token ]3. 序列生成策略
从概率分布中选择token的方式有多种,常见的有:
- 贪心搜索(Greedy Search):选择每个位置概率最大的token(速度快,但可能生成重复、单调的文本)
- 束搜索(Beam Search):保留概率最高的k个候选序列(平衡速度和质量,k通常取5~10)
- 采样(Sampling):按概率分布随机选择token(增加文本多样性,可通过Top-k、Top-p、Temperature调节)
当模型生成结束标记(<)时,序列生成停止,最终得到完整的输出文本。
总结
Transformer的计算流程可概括为"输入处理→Encoder特征提取→Decoder序列生成→输出处理"四大环节,核心依赖位置编码、多头自注意力、交叉注意力、残差连接+层归一化四大关键技术。
正是这些设计的组合,让Transformer实现了并行计算、长距离依赖捕捉、深层堆叠三大优势,成为现代大模型的基础架构。无论是NLP领域的文本理解、生成、翻译,还是CV领域的图像分类、目标检测,Transformer都已成为核心模型框架。
希望本文的分步解析能帮助你真正理解Transformer的工作原理,无论是准备面试的程序员,还是刚入门大模型的小白,都能从中收获干货。建议收藏本文,结合代码实践(如用PyTorch实现简易Transformer),加深对每个环节的理解——实践是掌握技术的最佳方式!
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
为什么要学习大模型?
我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年,人才缺口已超百万,凸显培养不足。随着AI技术飞速发展,预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。
大模型入门到实战全套学习大礼包
1、大模型系统化学习路线
作为学习AI大模型技术的新手,方向至关重要。 正确的学习路线可以为你节省时间,少走弯路;方向不对,努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划,带你从零基础入门到精通!
2、大模型学习书籍&文档
学习AI大模型离不开书籍文档,我精选了一系列大模型技术的书籍和学习文档(电子版),它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。
3、AI大模型最新行业报告
2025最新行业报告,针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。
4、大模型项目实战&配套源码
学以致用,在项目实战中检验和巩固你所学到的知识,同时为你找工作就业和职业发展打下坚实的基础。
5、大模型大厂面试真题
面试不仅是技术的较量,更需要充分的准备。在你已经掌握了大模型技术之后,就需要开始准备面试,我精心整理了一份大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
适用人群
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。