收藏!小白程序员轻松入门大模型:Transformer架构详解与实战应用
本文详细解析了Transformer模型的背景、架构及其核心机制。首先指出RNN、LSTM在处理序列数据时的局限性,进而介绍Transformer如何通过Attention机制解决这些问题。文章深入探讨了Transformer的输入嵌入与位置编码、三种注意力机制(Self-Attention、Masked Self-Attention、Cross-Attention)以及多头注意力机制,并解释了残差连接和层归一化在模型中的作用。最后,文章阐述了模型的输出过程,为初学者提供了从理论到实践的全面指导,适合想要学习大模型的程序员阅读收藏。
1、Overview
1.1 提出背景
RNN,LSTM相关算法只能从左向右依次计算或者从右向左依次计算,这种机制带来了两个问题:
时间片 t 的计算依赖 t−1 时刻的计算结果,这样限制了模型的并行能力;
顺序计算的过程中信息会丢失,尽管LSTM等门机制的结构一定程度上缓解了 长期依赖 的问题,但是对于特别长期的依赖现象,LSTM依旧无能为力。
在2017年,Google和多伦多大学发布了论文《Attention is All You Need》。Transformer的提出解决了上面两个问题,首先它使用了Attention机制,将序列中的任意两个位置之间的距离是缩小为一个常量;其次它不是类似RNN的顺序结构,因此具有更好的并行性,符合现有的GPU框架。
1.2 总体架构
下图是论文《Attention is All You Need》中的Transformer总体架构图。
为了解释说明,本文重绘架构图,具体如下:
这是一个典型的Encoder-Decoder架构,每个Encoder包含N(论文中为6)个encoder,每个Decoder包含N(论文中为6)个decoder:
2、输入&嵌入层&位置编码
Transformer输入需关注两个信息:
词的含义信息:通过词嵌入对词编码,提取含义信息
词的位置信息:通过位置编码,提取词的位置信息
2.1 输入
输入有两种:
Encoder 输入:全程固定不变,一次性输入
Decoder 输入:逐步拼接已生成内容,每一步把「上一步所有输出」当成 新输入,直到输出结束符
举例说明如下:
| 应用场景 | Encoder 固定输入 | Decoder 逐时间步输入 | 模型当前步输出 |
|---|---|---|---|
| 中英翻译 | 原句:I love cat | 译文:我 爱 猫 | I、love、cat 步 1:我 步 2: 我爱 步 3: 我 爱猫 步 4: 我 爱 猫 |
| 文本摘要 | 原文:今天天气很好适合出门散步 | 摘要:今日宜出行 | 今天、天气、很好、适合、出门、散步 步 1:今 步 2: 今日 步 3: 今 日宜 步 4: 今 日 宜出行 步 5: 今 日 宜出行 |
| 问答对话 | 问题:1+1 等于几 | 回答:等于 2 | 1、+、1、等于、几 步 1:等 步 2: 等于 步 3: 等 于2 步 4: 等 于2 |
2.2嵌入层
2.2.1分词
如下图所示,先将输入文本切分为若干具有独立语义的最小单元(即词元,token),再利用词汇表映射为词元ID序列。
🔍词表及生成过程
词表(Vocabulary):是由语料库构建出的、包含模型可识别token 的集合。
词表中每个token都分配有唯一的 ID,并支持 token 与 ID 之间的双向映射。
构建词汇表的过程:如下图所示,首先将训练集中的全部文本分词成独立的词元,然后将这些词元按字母顺序进行排列,并删除重复的词元:接下来将唯一的词元聚合到一张词汇表。该词汇表定义了每个唯一的词元到唯一的整数值的映射。
2.2.2词嵌入
如下图所示,将上一步得到的词元ID转化为嵌入向量,这个向量能更丰富地标识对应词的含义。论文中每个词元嵌入向量维度为512。
2.3位置编码
在RNN循环过程中,每个词按顺序输入,因此模型能知道每个词的位置信息。
但是Transformer输入中所有词并行输入,虽提升了计算效率,但却丢失了词的位置信息,故通过位置编码添加词的位置信息。
位置编码的得到方式有很多种,可以通过固定算法得到,也可通过训练得到,目前并不知道哪种最好。
在论文中,位置编码具体数值的计算与输入序列的内容无关,是固定值。论文中,位置编码交织了一系列正弦值和一系列余弦值,对于每个位置 pos,当 i 为偶数时,使用正弦函数计算;当 i 为奇数时,使用余弦函数计算。
pos: 该词在序列中的位置
:位置编码向量的长度(与嵌入向量相同),论文中为512
i :位置编码向量的索引值,论文中为0-511
下图为位置编码得到的向量的示意图,横轴为位置编码向量的长度(图示为0-64,但实际论文中为0-511),纵轴为输入序列分词之后的Token序列长度。红框代表一个词元的位置编码向量。
2.4词元嵌入向量与位置嵌入向量结合
词元嵌入向量与位置嵌入向量维度一样(论文中为512),将二者相加得到输入嵌入向量。
3、注意力
Transformer 取得突破性效果的核心,在于注意力机制。模型处理每个单词时,能够捕捉上下文里和它语义密切相关的内容。一句话中,每个词都会计算自身与其他词语的关联程度,以此判断相互影响的强弱。注意力热力图,便能直观展示单词之间的注意力权重,用颜色深浅代表关联紧密程度。
如:在句子 The cat drank the milk because it was hungry 中,代词 it 的指代对象需要结合语境判断。通过注意力可视化可以清晰看到,it 与句中 cat 的关联权重最高、联系最紧密,这也让模型准确理解,it 指代的正是小猫。
如下图所示,Transformer中包含3种注意力:
注意力1:Encoder中的Self-Attention
注意力2:Decoder中的Masked Self-Attention
注意力3:Decoder中的Cross-Attention
3.1 Self-Attention
Self-Attention 用于获取本序列内相互的注意力,输入分两种情况,首层为输入嵌入,其余层为上一层输出,为了方便解释,这里统一用— 表示。
接下来演示如何根据— 得到Self-Attention 的输出:
第一步,根据得到三个不同的向量,,
以得到三向量,,为例,计算过程如下图
依次类推, 注意,这个过程中,所有的输入共享,,
第二步,计算注意力分数
以α为例,计算过程如下图:
α,其中表示向量或向量的长度,图中为3(论文中为64)。向量和向量的长度一定是相同的,但是向量长度可能和它们长度不同。
这里除以的原因是:防止向量和向量维度过高时,的值过大,softmax的输出会变成接近0或1的数,从而导致注意力分数极端,梯度消失,模型学不出有效内容等问题。
第三步,计算每个输入向量的贡献
如下如所示,注意力分数依次乘其对应的向量得到每个输入向量的贡献向量。
第四步,计算self-attention输出
如上图所示,αααα
上面只计算了,把—结合起来用向量表示如下:
(1)计算、、
(2)计算Z
即
3.2Masked Self-Attention
Masked Self-Attention设计是为了防止训练时泄密:自回归生成任务,第 i 个 token 只能依赖:1,2,…,i自身及前文,绝对不能看到 i+1,i+2,… 未来位置的 token。本质上强行赋予 Decoder 自回归归纳偏置,模拟「逐词生成、不能偷看后文」的推理逻辑,保证训练和推理行为一致。
具体做法如下如所示,上三角区域加负无穷大,经过softmax变为0,这样就看不到未来的信息了。
3.3 Cross-Attention
在decoder中注意力3用到了Cross-Attention,获取跨序列注意力。
Q(查询):上一层输出
K、V(键、值):来自Encoder 最终输出即encoder6输出
具体如下图所示:
3.4 Multi-Headed Attention
自然语言的关系是多元的,单头Attention只有一套,,,只能学习一种模式特征。 但是多头Attention的每个头通过不同的,,得到不同,,,从而学习不同的特征。例如一个head看到句子中的实体关系,另一个head关注句子中的活动,另一个head关注词属性,但是每个head是不能提前指定学习什么内容的。每个head的权重都是随机初始化的,给定足够多的训练数据和时间,每个头都将学习语言的不同方面。
下图是有八个head,每个head学习到的Attention用八种不同的颜色表示,颜色越深,代表权重越大。可以看出不同head关注不同,从而学习不同特征。
接下来将逐步说明Multi-headed Attention(以3个head为例,论文中有8个head)的计算过程:
第一步:不同head分别计算、、
第二步:不同head分别计算对应的Z
第三步:整合多头输出
通过拼接并乘一个权重得到最终输出:
其中:
不同头是并行计算的,不共享,,
4、Add &Normalize
4.1Add残差连接
Add残差连接的本质是对应维度直接逐元素相加 。
解决深层梯度消失:Transformer 堆叠 6 层encoder + 6 层 decoder,共 12 层深层结构。若无残差,反向传播时梯度层层相乘,不断衰减,深层网络无法收敛。但残差支路梯度无衰减直达底层,保证深层可训练。
保留原始信息:避免经过多层注意力、线性变换后,底层基础语义被稀释、丢失。
4.2 Layer Normalization 层归一化
假设LayerNorm 的输入向量为,LayerNorm 只在这 512 个数内部算均值、方差,不依赖批次,跟别的 Token、别的句子无关。
具体计算如下:
:当前输入所有维度的均值
:当前输入所有维度的方差
:极小常数(如 ),防止分母除 0
:缩放参数(可学习,维度 512)
:偏移参数(可学习,维度 512)
LayerNorm的作用如下:
稳定特征分布、防止数值爆炸:注意力打分、多头拼接、多层线性叠加,数值容易跑偏;LayerNorm 把特征强制拉到均值 0、方差 1附近,训练更稳。
加速模型收敛:归一化后参数更新梯度更平滑,学习率更好调,收敛更快。
消除尺度差异:不同 token、不同语义的向量取值范围差别巨大,归一化统一分布,让后续注意力、线性层更好学习。
5、Feed Forward
具体说明如下:
第一层:线性升维(论文中为512——>2048) + ReLU 激活
第二层:线性降维(论文中为2048——>512),还原维度
FFN 用 ReLU 增加非线性,提升模型拟合能力。
6、输出
输出具体计算如下:
- 最后一层decoder输出维度为(论文中为512),假如输出内容用表示
- Linear用线性变换,即矩阵相乘,将特征维度从转变为词表总大小,即。但是中的值可正可负,可大可小,代表模型对词表中每个候选 token 的原始 raw 打分 。
- 将输入softmax,映射到0-1之间, 使所有词的概率加起来严格等于 1,形成完整概率分布,最大的概率值对应的token就是输出。
最后
对于正在迷茫择业、想转行提升,或是刚入门的程序员、编程小白来说,有一个问题几乎人人都在问:未来10年,什么领域的职业发展潜力最大?
答案只有一个:人工智能(尤其是大模型方向)
当下,人工智能行业正处于爆发式增长期,其中大模型相关岗位更是供不应求,薪资待遇直接拉满——字节跳动作为AI领域的头部玩家,给硕士毕业的优质AI人才(含大模型相关方向)开出的月基础工资高达5万—6万元;即便是非“人才计划”的普通应聘者,月基础工资也能稳定在4万元左右。
再看阿里、腾讯两大互联网大厂,非“人才计划”的AI相关岗位应聘者,月基础工资也约有3万元,远超其他行业同资历岗位的薪资水平,对于程序员、小白来说,无疑是绝佳的转型和提升赛道。
对于想入局大模型、抢占未来10年行业红利的程序员和小白来说,现在正是最好的学习时机:行业缺口大、大厂需求旺、薪资天花板高,只要找准学习方向,稳步提升技能,就能轻松摆脱“低薪困境”,抓住AI时代的职业机遇。
如果你还不知道从何开始,我自己整理一套全网最全最细的大模型零基础教程,我也是一路自学走过来的,很清楚小白前期学习的痛楚,你要是没有方向还没有好的资源,根本学不到东西!
下面是我整理的大模型学习资源,希望能帮到你。
👇👇扫码免费领取全部内容👇👇
1、大模型学习路线
2、从0到进阶大模型学习视频教程
从入门到进阶这里都有,跟着老师学习事半功倍。
3、 入门必看大模型学习书籍&文档.pdf(书面上的技术书籍确实太多了,这些是我精选出来的,还有很多不在图里)
4、AI大模型最新行业报告
2026最新行业报告,针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。
5、面试试题/经验
【大厂 AI 岗位面经分享(107 道)】
【AI 大模型面试真题(102 道)】
【LLMs 面试真题(97 道)】
6、大模型项目实战&配套源码
适用人群
四阶段学习规划(共90天,可落地执行)
第一阶段(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 项目
内容安全
互联网信息服务算法备案
…
👇👇扫码免费领取全部内容👇👇
3、这些资料真的有用吗?
这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。
资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
