Transformer入门必看:从架构到实践,大模型学习收藏这篇就够了
提到大模型,就绕不开Transformer——这个由谷歌DeepMind在2017年通过论文《Attention Is All You Need》横空出世的模型架构,彻底颠覆了传统序列处理方式。它摒弃了循环神经网络(RNN)的串行结构,完全基于注意力机制构建,成为如今ChatGPT、BERT等主流大模型的“骨架”。对于刚入门大模型的程序员和小白来说,吃透Transformer的核心逻辑,就等于掌握
提到大模型,就绕不开Transformer——这个由谷歌DeepMind在2017年通过论文《Attention Is All You Need》横空出世的模型架构,彻底颠覆了传统序列处理方式。它摒弃了循环神经网络(RNN)的串行结构,完全基于注意力机制构建,成为如今ChatGPT、BERT等主流大模型的“骨架”。对于刚入门大模型的程序员和小白来说,吃透Transformer的核心逻辑,就等于掌握了大模型技术的钥匙。本文将从应用场景到核心架构,再到实操细节,一步步拆解Transformer,帮你快速入门。
Transformer有多重要?看这些应用场景就懂了
Transformer的核心能力是处理“序列到序列”(seq2seq)的映射问题,简单说就是把一段输入数据(如文本、音频)转化为另一段目标数据。这种强大的适配性让它在多个领域“大杀四方”,你日常接触的很多技术都离不开它:
- 文本翻译:从英语文献翻译成中文,或小语种间的实时转换,Transformer是谷歌翻译、百度翻译等工具的核心动力;
- 文本生成:ChatGPT的对话生成、AI写作助手的文案创作、代码生成工具(如GitHub Copilot)的代码补全,都依赖其强大的生成能力;
- 音频处理:语音转文字(如微信语音转文字)、文字转语音(如有声书合成),以及语音识别中的噪声过滤,都有它的身影;
- 序列分类:电商平台的商品评论情感分析(判断是好评还是差评)、新闻稿件的自动分类,都靠它实现;
- 生物医药:基因序列的分析、蛋白质结构的预测,Transformer正在助力生命科学的突破。
核心优势总结:相比传统RNN,Transformer能轻松捕捉长文本中的依赖关系(比如一句话开头和结尾的关联),同时支持并行计算,训练效率提升数倍;而残差连接、多头注意力等设计,还解决了深层网络的梯度消失问题——这也是它能支撑起百亿、千亿参数大模型的关键。
模型架构
原文中通过一张图清晰地展示了该模型的架构,如图,它主要由编码器和解码器两个部分组成,编码器和解码器又分别是N个相同模块的堆叠。

整个体系实际上是由多头注意力层、残差连接层、归一化层、前馈网络层的排列组合构成。
文本信息经过三个阶段的处理:词嵌入编码得到语义信息,位置编码得到位置信息,注意力编码上下文信息,最终将得到一个抽象的,包含了全部语义和上下文信息的向量,通过该向量来预测可能的输出值。
前置准备
文字嵌入
在处理序列问题时,第一步永远是把序列处理为计算机可以理解的“数字”,对于文本序列就是所谓词嵌入。
假设有输入序列可被分词为,对于其中的每个词,可以将其转变为维度为的嵌入向量,整个输入序列可以用输入矩阵表示:
从文本到向量已有很多成熟的模块,且这部分并不是Transformer的核心创新点,在此不做赘述,可以参考本站其它教学学习。
总之,经过文字嵌入后,句子中的每个词将被转化为独特的向量,后续的计算将围绕词向量展开。

QKV计算
QKV矩阵的计算是注意力的核心,首先说明单个字词的注意力计算,示意图如下:

单个词向量分别乘以权重矩阵 、、,得到 、、这三个新的词向量。可以把它们理解为query、key、和value,其中query编码了要查询的值,key编码了被查询的值,value编码了具体的值;权重矩阵 、、 是神经网络需要学习训练的部分。
得到query、key、value三个向量后,根据注意力计算公式就可以计算相似度权重,权重代表上下文的每个词对当前词的影响程度,随后再将上下文信息注入原始向量,得到最后的编码向量。
我们利用矩阵运算的性质,将输入的序列的N个词“打包”成一个矩阵,可以同样并行计算所有词的query、key、value向量,而得到了三个新矩阵,分别为Q、K、V矩阵。示意图如下:

在实际工程中,借助GPU强大的并行计算能力,可以很快的计算出所有输入词的QKV矩阵。而且可以发现,需要学习的模型权重 、、 的形状是 ,分别指词向量维度和模型输出维度,并没有对输入序列长度做约束,借此就可以处理任意序列/可变长序列。
注意力计算
在得到QKV矩阵后,就需要进行注意力的计算,实际上计算公式有多种多样,按原论文中的表述,它们使用如下的缩放点积注意力来计算。
缩放点积注意力模块
缩放点积注意力算法是自注意力的一种实现形式,它通过如下公式计算:
对于形状为的QKV矩阵来说,作为查询矩阵和键矩阵的转置做矩阵乘法,计算得到一个方阵,这个方阵的每个元素表示的相似度,或者说受哪个的上下文影响最大。
得到方阵后,对每个元素除以(是键向量的维度D),使得元素更加平缓,因为 Softmax 对大数值敏感,过大的点积会导致 Softmax 输出过于尖锐(只有一个权重接近 1,其余接近 0),缩放后能让注意力更均衡,让模型不会过度聚焦于某一个键,而是广泛的学习全局信息。
最后按行进行归一化,把注意力分数变成概率分布,矩阵的每一行概率和为1,这时也相当于每行中的元素是一个权重值,这个权重表示,当前 query 对各个 key 的注意力权重,当前 query 对各个 key 的注意力权重,在后续计算中进行加权求和。
具体的运算过程如下:

计算最后一步得,所谓加权求和实际上利用了矩阵乘法的性质,从示意图最右侧可以看出,相当于用注意力分数的每一行点乘的每一列,加和作为结果的值,以第一个元素为例,,即输出矩阵第一个向量的第一个元素综合考虑了上下文所有词,并按它们的影响程度权重计算,这样新得到的词向量就抽象的融合了上下文信息。

多头注意力模块
所谓多头注意力就是将多个注意力层堆叠,如果把单个注意力头类比为一个提取输入数据特征的评委,那么多头注意力就相当于多个评委,每个评委注意不同的侧重点,再将多个评委的意见整合到一起,这样做有利于模型学习到更加丰富的信息。
此时就涉及到头数和单层输出维度的设置问题,如果输入QKV矩阵依旧是,那么每个注意力头都会输出一个矩阵,这时拼接的话就会得到它的维度将会翻倍,这对硬件有着巨大的挑战,而且参数量暴增容易导致过拟合。
在原论文中,作者设置了头数是,而单个头的输出维度是,这里的 是单头时的维度。这么做相当于把原先单头注意力的QKV矩阵拆分成等份,经过注意力计算后得到个输出矩阵,将每个输出拼接,总维度仍为,在计算量和参数量不变的情况下,很好的做到了多头注意力,采集更丰富的信息。
在实际的操作中,会把QKV矩阵分别经过线性层处理,得到符合形状的输入矩阵,再经过注意力公式计算即可。下图是多头注意力的详细示意图:

多头注意力通过多视角拆分 - 并行计算 - 整合特征,让模型能同时关注不同子空间的信息(比如有的头关注语法,有的头关注语义),从而学习到更全面的表示,提升模型性能。
掩膜注意力模块
上文我们看到,对于一个序列来说,通过几次矩阵运算就可以同时算出所有分词的特征向量,并不需要等待上一个字符生成后再计算下一个字符,这种并行计算方法大大提高了效率。
不过,在训练过程中,我们不能一次性把已知答案所有的上下文全部输入,
现在需要设计一种方法,让序列中字符在被计算后只包含它之前的上下文信息,而不让它提前看到后文,即可使用如下的掩码操作:
在QK矩阵计算相似度时,人为地把结果矩阵地上三角部分设为,这样在经过后,上三角部分全变为0,再计算注意力时,可以看到第一个字符“我”向量与矩阵相乘时,后两个字符相似度为0,结果中只包含“我”向量地信息;第二个字符“和”相乘时,只包含“我”、“和”两个字符的信息;最后,“你”字符相乘时,将包含全部上下文信息。
通过这种方法,我们巧妙地生成了每行词向量只包含它上文信息的矩阵,在训练过程中并行地训练模型。

交叉注意力模块
核心问题:如何将输入序列和输出序列对应?
在上文的讨论中,我们通过编码器得到了包含输入序列上下文信息的矩阵,也得到了包含已经输出序列的上下文信息矩阵,在生成过程中,我们期望设计一个模块,能够根据输入序列和前一步生成的序列,继续生成下一个字符,那这就需要交叉注意力模块,它负责把输入输出相联系。
所谓交叉注意力就是该模块的QKV来自不同的部分,在Transformer里,是用编码器的输出来计算K、V矩阵,用解码器的掩码注意力模块计算Q矩阵,利用Q这三个KV计算注意力,这个注意力的结果就包含了两个序列的相似度权重信息。
交叉注意力就是要让 “输出序列生成” 既符合 “已生成输出的上下文”,又对齐 “输入序列的语义”。
例如,编码器得到的矩阵让每个输入词向量带上了输入序列的上下文;解码器掩码注意力输出的矩阵让已生成的个词向量带上了它的上下文;那么交叉注意力的权重矩阵、、的形状都是,得到QKV是:
计算示意图如下:

计算相似度矩阵,再进行归一化处理得到:
最后用来计算注意力,相当于加权求和,,形状为。该矩阵的每一行,对应解码器中 “已生成的第 i 个目标词”,而行向量的每一个维度,则融合了编码器中与该目标词语义相关的源序列信息。

后续的流程中,将根据这个向量来预测序列的下一个可能的输出,而交叉注意力模块则是将两个不同来源序列相对应的核心。
总结
Transformer所涉及的全部三种注意力机制:
| 注意力类型 | 输入Q | 输入K,V | 学习目标 |
|---|---|---|---|
| 编码器自注意力 | 输入词自身 | 所有输入词 | 源语言内部关系 |
| 解码器掩码注意力 | 当前输出词 | 已生成输出词 | 目标语言内部关系 |
| 解码器交叉注意力 | 解码器状态 | 编码器输出 | 跨语言对齐映射 |
需要明确的一点是,如果的最简化无堆叠的的Transformer将需要个权重矩阵,编码器多头注意力、解码器掩码注意力、解码器交叉注意力各三个权重矩阵。权重矩阵并不是立刻得到的,而是通过神经网络不断训练优化得到的,最终的训练目的将会使输入经过权重计算后得到的QKV矩阵最能代表我们设定的功能,所求出的注意力也将最能反应序列的上下文信息,而这几个权重则是Transformer的核心!
Transformer处理流程
了解完Transformer的所有注意力模块后,简略介绍一下模型的其它模以及数据的总体流程图。
编码器
-
- 对于文本序列来说,将输入序列分词后进行词嵌入,生成的词向量包含语义信息;
-
- 通过语义编码(通常是正弦位置编码),此时的词向量包含位置信息。这个位置信息是指这个词在句子中的哪个位置,并不是“上下文的语义”位置;
-
- 对词向量分别乘以权重矩阵 、、,得到QKV矩阵,输入多头注意力模块,根据注意力公式计算得到注意力词向量,此时的向量将包含上下文信息,每个向量的值都会受全文中词的影响;
-
- 注意力模块的输出会和第二步的输出进行一次残差连接,并计算归一化,残差操作将避免长距离传递的数据稀释;
-
- 将归一化矩阵输入一个前馈网络,网络输出和前馈网络输入再进行一次残差连接,其结果进行归一化。前馈层会增强模型的非线性表达能力,增加泛化能力;
-
- 步骤3的输入和步骤5的输出矩阵形状一致,因此步骤3~5组成的编码器模块可以首位相连,堆叠N个,在原论文中。
解码器
解码器部分的处理流程在训练和推理阶段略有不同,在此分两部分讲解。
训练
-
- 训练时,每条数据将以 “我爱你” -> "I love you"对应同时输入编码器和解码器,序列
<我爱你>首尾分别增加起始符<sos>和终止符<eos>,变成序列<sos 我 爱 你 eos>在编码器中生成带上下文语义的向量;
- 训练时,每条数据将以 “我爱你” -> "I love you"对应同时输入编码器和解码器,序列
-
- 序列
<I love you>首尾分别增加起始符<sos>和终止符<eos>,变成序列<sos I love you eos>,再经过掩码注意力得到的每一行向量只包含它前面的序列上下文,而屏蔽后文,最终交叉注意力的输出矩阵,维度为 ;
- 序列
-
- 交叉注意力矩阵被送入前馈层,前馈层对矩阵中的每一行(对应目标序列中的每个词向量)独立进行线性变换、激活函数运算等,最终输出的结果维度还是 ;
-
- 前馈层的输出经过线性变换和 函数,得到每个位置预测下一个词的概率分布,维度是 ,V 是词表大小;
-
- 将每个位置的预测结果与真实目标序列中对应位置的词进行比较,使用损失函数并行计算所有位置的损失值,再求和得到总的损失;
-
- 反向传播更新权重。

推理
模型训练完成后进行推理,此时只知道输入序列<我爱你>,需要模型自己来判断生成序列<I love you>,这时需要自回归逐词生成:
-
- 序列
<我爱你>在编码器中生成带上下文语义的向量,此时解码器输入起始符<sos>;
- 序列
-
- 起始符
<sos>经过掩码注意力模块生成序列上下文,当然这里它并没有上文;
- 起始符
-
- 两个结果被送入交叉注意模块,计算交叉注意力结果向量,形状为,该向量包含了输入序列的上下文语意和起始符语义;
-
- 经过前馈层得到预测下一个词的向量表示,经过层,输出模型所预测的下一个词的概率分布,维度是 ,V 是词表大小。正常情况下,这里将预测得到字符
<I>;
- 经过前馈层得到预测下一个词的向量表示,经过层,输出模型所预测的下一个词的概率分布,维度是 ,V 是词表大小。正常情况下,这里将预测得到字符
-
- 将预测的词写入序列,得到
<sos I>,把它再送入解码器的输入端,循环步骤2~4,直到生成终止符。
- 将预测的词写入序列,得到

损失函数
最后简要介绍Transformer损失函数的计算方法,在用于seq2seq任务时,最常用是交叉熵损失:
模型输出结果
经过Transformer解码器中的前馈网络、线性层和Softmax函数后,会得到每个位置预测下一个词的概率分布。假设目标序列长度为 ,词表大小为,那么预测结果是一个维度为的矩阵,矩阵中第行第列的元素,表示在目标序列的第个位置预测为词表中第个词的概率,每一行概率最高的那个值将会作为模型的输出词。
给定的真实目标序列可以表示为一个长度为 的向量,每个元素是目标序列中对应位置词在词表中的索引。例如,在机器翻译任务 “我爱你 → I love you” 中,假设 “I” “love” “you” 在词表中的编号分别为 、、,真实目标序列向量就是 。
单个位置的交叉熵损失
以目标序列第 个位置为例,预测的概率分布为 ,设真实词的索引为 ,预测词的索引为 ,起初可能出现真实词和预测此不一致的情况。
我们根据真实词的索引取出它对应位置的概率值 ,则该位置的交叉熵损失 为:
这意味着模型预测真实词的概率越高,该位置的损失值就越低。训练的过程就是让模型预测的最大概率词和真实词更加接近。
平均交叉熵损失
最后,将目标序列所有位置的交叉熵损失求和,再除以序列长度 ,得到平均交叉熵损失,即训练时使用的损失值 :
举例说明
假设目标序列长度 ,词表大小 ,模型预测结果为:
给定的真实目标序列为 (词表索引从 开始),那么:
- • 矩阵第一行是模型预测的在该位置最可能输出词表中的哪个词。已知应该输出的真实词对应索引
1,概率为,但模型预测的最大概率词对应索引2,概率为,因此我们要加损失,调整模型参数;该位置的损失为: ; - • 第 个位置损失 ,同理,但这一行模型正确的预测到了词表中第四个值出现的概率最大;
- • 第 个位置损失 ,同理。
平均交叉熵损失
通过计算损失,利用反向传播算法将损失值反向传播到整个Transformer模型,更新模型中的可训练参数,使模型预测结果不断接近真实目标序列,提升模型性能。在实际应用中,还可能结合一些正则化方法(如L1、L2正则化)来防止模型过拟合,进一步优化训练效果。
如何学习大模型 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 的正确特征了。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

更多推荐



所有评论(0)