大模型底层核心逻辑总结——Tokenizer + Embedding + Transformer
大模型底层核心逻辑总结
1 核心总纲
大模型的核心逻辑:先通过「Tokenizer+Embedding」实现“识字”(将文字转化为模型可处理的数学信号),再通过「Transformer层」实现“懂话”(理解上下文语义);训练阶段靠「反向传播+残差连接+层归一化」稳住训练过程、调好参数,推理阶段固定所有参数,只用训练好的组件完成“输入→输出”的预测。
2 关键组件详解(训练+推理的作用)
2.1 Tokenizer(分词器)
核心作用: 将人类文字拆分为模型理解的最小语义单元「token」,是文字与模型的“桥梁”。
关键细节: 是独立于大模型的预训练(属于数据准备阶段,即预训练前),用海量语料训练完成,生成固定「词表」(仅记录token与唯一ID的映射,不存向量)。
需要注意的是,
训练前(此处特指数据准备阶段)用于生成词表的海量语料,
与训练时(主要指预训练阶段)用于优化模型参数的海量语料,可同可不同,
但核心要求是语料分布一致——若二者类型、分布差异过大,会导致词表不适配预训练数据,影响模型“识字”精准度。
分词器产生的词表*不与单个大模型绑定*,可以给不同大模型使用,但需满足“适配性要求”,并非随意可用
具体说明:
① 可共用的情况:
当不同大模型的类型(如均为Decoder-only、均为Encoder-only)、语料分布一致,
且使用同一种Tokenizer算法(如均为BPE)时,
词表可共用(比如用通用语料生成的词表,可给两个不同的GPT类模型使用);
② 不建议共用的情况:
若模型类型不同(如一个是BERT<Encoder-only>、一个是GPT<Decoder-only>)、
语料分布差异大(如一个是新闻语料词表、一个是医学模型),
或Tokenizer算法不同,共用词表会导致适配性差,影响模型语义理解精度;
理论上,如果Tokenizer算法、词表大小、特殊token定义完全一致,词表可以共用。
但实践中极少这样做,因为不同模型通常有特定的tokenization需求(如GPT-2用<|endoftext|>,BERT用[CLS]/[SEP]),
且词表是模型参数的一部分,直接共用可能导致维度不匹配或语义偏差。
推理时作用: (即训练完成后,用户与大模型对话、提出需求时的作用)——
将用户输入的文字(哪怕是未见过的词/句子)拆分为词表中已有的token小块,转化为对应ID(未见过的词靠BPE等算法拆分,避免报错)。
2.2 Embedding(词向量)
核心作用: 将Tokenizer输出的「token ID」转化为高维向量,让模型用数学方式表示token的语义特征。
关键细节:
① 维度数:人为设定的超参数(如768、4096),并非从数据中发现;
② 向量含义:模型在预训练中自主学习,人类无法提前指定,也难以完全解释(仅能事后推测部分维度的大致含义,如情感、词性);
③ 与词表的区别及时间线:
Tokenizer的训练独立于神经网络预训练,通常在数据准备阶段完成,全程固定且可跨模型共用;
Embedding矩阵在预训练启动时随机初始化,并作为可学习参数在预训练过程中持续优化。它是神经网络第一层,将离散的token ID映射为连续向量,其参数与 Transformer 层的参数,通过反向传播机制同时被梯度下降更新,
待训练完成后正式固定,且与单个对应的大模型绑定,不可跨模型直接复用,因为Embedding矩阵是每个模型在自身训练过程中,结合自身训练数据、参数结构,重新初始化并优化的专属矩阵,跨模型复用会导致语义编码不匹配,严重影响模型效果。
二者配合完成“文字→向量”的转换。
需注意,Embedding矩阵的优化并非由Transformer层单独实现,而是与Transformer层参数一起,通过反向传播机制协同更新。
推理时作用: 用训练好的固定Embedding矩阵,将token ID快速映射为向量,作为Transformer层的输入(不更新参数,仅做前向计算)。
2.3 Transformer层(核心语义理解组件)
核心作用: 将孤立的token向量,通过「自注意力机制」融合上下文信息,转化为“懂逻辑、懂语义”的向量,实现从“识字”到“懂话”的升级。
关键细节:
① 自注意力机制:通过Q(查询)、K(键)、V(值)的矩阵运算,计算token间的相关性(注意力分数),本质是“点积+缩放”,和余弦相似度思想同源(工程上更高效,不直接显式调用余弦相似度/欧式距离);
② 多头注意力(多个专家专项处理):多个并行的注意力“头”,分别关注语法、语义等不同特征,最后拼接结果,丰富语义表示;
③ 中间含义:编码器输出“中间含义”(无法用具体语言描述的原文语义),解码器通过“交叉注意力”参考这个中间含义,确保生成内容贴合输入;解码器还会用“Mask掩码”(防偷看、遮占位符),避免训练和推理时出现逻辑错误;注意:对于Decoder-only架构(如GPT),不存在独立的编码器,用户输入直接作为解码器的prompt,通过自注意力(Self-Attention)逐层处理,没有交叉注意力机制。
④ 核心结构:
Transformer层主要由「编码器(Encoder)」和「解码器(Decoder)」组成,
类比翻译任务更好懂——编码器负责“读懂原文”,解码器负责“写出译文”,二者配合完成语义的编码与解码,
不同大模型会灵活选用(如GPT只用解码器,BERT只用编码器)。
- 推理时作用:即训练完成后,用户与大模型对话、提出需求时的作用——仅做前向计算,通过注意力机制让每个token“吸收”其他token的上下文信息,不涉及任何梯度计算或参数更新。
Transformer层(编码器+解码器)训练与推理的通俗工作机制
结合翻译任务类比,用“工厂调试(训练)”和“工厂开工(推理)”的思路,把工作机制讲透,避开复杂公式:
(1)训练时:相当于“调试工厂设备”,让编码器、解码器学会配合,调好所有参数
核心目标:让编码器能精准“读懂”输入(原文)、解码器能精准“写出”输出(译文),通过反向传播不断修正参数,最小化预测误差。
① 编码器的工作(读懂原文):
接收Embedding层传来的token向量,先加上“位置编码”,再通过自注意力机制,计算每个token和其他所有token的关联(比如“苹果”和“手机”“吃”的关联度),再经过多头注意力、残差连接、层归一化、前馈神经网络(FFN)的处理,最终输出“中间含义”(原文的语义密码,看不到但很关键),全程是“前向计算”,为解码器提供参考。
这里的位置编码,通俗说就是给每个token的向量“打位置标记”,
是人为设计的固定规则(非模型学习所得),核心是“不同位置编码不同”,
解决自注意力机制“忽略语序”的缺陷——
自注意力本身只算token间的关联,
不加位置编码会分不清“我爱你”和“你爱我”。
具体工作流程很简单,举个通俗例子:
假设“我”“爱”“你”的Embedding向量分别是[0.2,0.5,0.1]、[0.8,0.3,0.6]、[0.4,0.7,0.9],
给第1、2、3位分别分配固定编码[0.01,0.01,0.01]、[0.02,0.02,0.02]、[0.03,0.03,0.03],
将token向量与对应位置编码相加,就能得到带位置信息的向量
(如“我”(第1位)变为[0.21,0.51,0.11],“你”(第3位)变为[0.43,0.73,0.93]),
这样模型就能区分语序差异。
注意:
这里的固定编码仅作易懂的示例,实际并非简单的“等差数列”,
而是使用正弦/余弦函数(Transformer原始论文)或可学习的参数(后续变种)
② 解码器的工作(学写译文):
训练时,解码器的输入是“完整的正确译文”(该译文来自训练前提前准备的标注训练语料,是人工或自动标注好的“原文-译文”对应对,本质是给模型提供的“标准答案”,来自专门构建的平行标注语料库,确保准确性和规范性,比如原文“我有一只猫”,译文“I have a cat”),但会做两个关键操作:一是加“Causal Mask(防偷看掩码)”,遮住译文后面的词(避免模型“作弊”,强迫它只能根据前面的词预测下一个词);二是加“Padding Mask(占位掩码)”,遮住句子末尾的无效占位符(避免干扰计算)。
之后,解码器先通过“掩码自注意力”处理自己的输入(译文token向量),再通过“交叉注意力”(上传文件核心知识点)参考编码器输出的“中间含义”(确保译文贴合原文),最后经过和编码器类似的后续处理,输出预测结果,与“正确译文”对比,算出“损失”(预测错误的程度)。
③ 协同优化(反向传播主导):
算出损失后,反向传播机制会贯穿整个Transformer层(编码器+解码器),还有Embedding矩阵,计算所有参数(Q/K/V权重、FFN权重等)的梯度,再通过梯度下降更新这些参数——相当于“调试设备”,比如调整编码器对“关联度”的计算方式、解码器对中间含义的参考权重,反复迭代,直到损失最小、预测最精准。
④ 关键提醒:
训练时,编码器和解码器是“一起调试”的,参数同步更新;如果是Encoder-only模型(如BERT),就只有编码器在训练,重点优化“语义理解”(比如完形填空);如果是Decoder-only模型(如GPT):输入文本直接经过Tokenizer、Embedding后,进入堆叠的Transformer Decoder blocks处理,通过自注意力机制学习语言建模(预测下一个token),不存在单独的编码器-解码器分工。
(2)推理时:相当于“工厂开工”,用调试好的设备(固定参数)高效干活,不做任何调试
核心目标:用户输入文字后,快速输出准确结果,全程不更新参数、不计算损失、不用反向传播,只做“前向计算”。
① 编码器的工作(还是读懂输入):
和训练时的前向计算逻辑完全一样——接收用户输入(比如“我有一只猫”)经过Tokenizer、Embedding处理后的向量,加位置编码,通过自注意力、多头注意力等一系列处理,输出“中间含义”,传递给解码器(如果是Decoder-only模型,不存在"编码器"和"解码器"的区分,整个模型就是一个统一的前向传播过程,将输入文本作为context,直接通过自注意力机制逐层处理,自回归地生成后续token)。
② 解码器的工作(逐步生成输出):
推理时,解码器没有“完整的正确译文”当输入,只能“从零开始”逐步生成:
第一步:输入一个特殊的“起始token”(比如),结合编码器传来的中间含义(有编码器时),预测出第一个词(比如“I”);
第二步:把“起始token+I”作为新的输入,再预测下一个词(比如“have”);
第三步:重复这个过程,每一步都通过交叉注意力参考编码器的中间含义(确保不偏离原文),通过掩码自注意力参考前面生成的词(确保逻辑连贯),直到预测出“结束token”(比如),停止生成,输出最终结果(译文或对话回复)。
③ 关键提醒:
推理时,所有参数(编码器、解码器的权重,Embedding矩阵)都已固定,相当于“设备调试好后,只按固定流程干活”,速度快、不修改任何设置;Mask掩码依然会用(防偷看、遮占位符),确保生成逻辑正确。
通俗总结:训练时,Transformer层(编码器+解码器)是“边学边调”,重点练“看懂”和“写对”;推理时,是“学以致用”,重点练“快速、准确输出”,二者流程相似,但目的、操作完全不同。
3 训练阶段核心技术(解决“训练不稳定”问题)
核心目标:通过海量数据训练(主要是预训练阶段),不断优化并调整「在预训练启动时随机初始化的Embedding矩阵+Transformer参数」,让损失函数最小化,帮助模型学会语言规律;二者协同优化,由反向传播机制主导(非Transformer层单独主导),配套「残差连接+层归一化」解决训练中的不稳定问题。
3.1 反向传播
专属场景: 仅存在于「训练阶段」,推理阶段完全不用。
核心作用:
计算损失函数对模型所有参数的梯度(包括Embedding矩阵参数和Transformer层所有参数),通过梯度下降不断更新这些参数(让模型持续修正错误,学会规律),实现Embedding矩阵与Transformer层参数的协同优化。
需特别澄清:反向传播是整个大模型训练时的「全局优化机制」,并非仅存在于Transformer层的解码器中—— 无论Transformer是Decoder-only(如GPT)、Encoder-only(如BERT)还是Encoder-Decoder结构,反向传播都会贯穿所有可学习参数所在的组件。
两种核心结构的反向传播差异如下:
① Decoder-only结构(如GPT):
反向传播贯穿Embedding层和所有Decoder块,
梯度从输出层(预测下一个token)反向传递至输入侧,
重点优化“生成逻辑”相关参数;
② Encoder-only结构(如BERT):
反向传播贯穿Embedding层和所有Encoder块,
梯度从输出层(完形填空等任务)反向传递,
重点优化“语义理解”相关参数,二者核心逻辑一致,仅传梯路径随结构略有差异,均会更新所有可学习参数。
3.2 残差连接
核心作用: 解决训练时反向传播的「梯度消失」问题(深层网络梯度连乘趋近于0,前面的层学不到东西)。
原理: 输出 = 上一层原始输入 + 本层处理后的结果,反向传播时,对输入的梯度会沿着残差连接直接回传(梯度为1),避免了经过F(x)时的梯度衰减,确保深层网络也能得到有效更新。
推理时作用: 即训练完成后,用户与大模型对话、提出需求时的作用——仅做简单的加法操作(无梯度、无求导),融合原始信息和处理后的信息,让语义表示更稳定。
3.3 层归一化(Layer Norm)
核心作用: 解决训练时的「梯度爆炸+训练不稳定」,加速收敛(并非防梯度消失)。
原理: 将每一层的向量“拉回”均值接近0、方差接近1的标准分布,避免QK点积等运算导致数值波动过大,防止梯度爆炸和Softmax饱和。
推理时作用: 即训练完成后,用户与大模型对话、提出需求时的作用——和训练时逻辑一致,做标准化处理,稳住数值范围,确保前向计算顺畅。
4 关键疑问澄清(重点回顾)
4.0 大模型从0到有的主要流程
4.0.1 准备阶段(Preparation Phase)
(0)时间线: 任何"训练"开始之前
(1)数据收集与清洗
- 做什么: 从互联网、书籍、论文等渠道抓取海量原始文本
- 产出: 干净的自然语言语料(几十TB级别,无标注、无配对)
- 关键: 去重、去噪、过滤低质量内容,但不需要人工标注
(2)Tokenizer训练(BPE/SentencePiece等算法)
- 做什么: 用清洗后的语料训练分词算法,学习"如何切分文本"
- 产出:
- 词表(Vocabulary): token ↔ ID的映射表(如50000个token)
- 分词规则: 遇到未知词如何拆成子词
- 关键:
- 这是统计学习,不是神经网络训练
- 只确定"怎么切分",不涉及语义理解
- 词表一旦生成就固定不变
4.0.2 预训练(Pre-training)
(0)时间线: Tokenizer准备好之后,这是模型"练基本功"的核心阶段
(1)做什么
用 无标注 的海量文本,通过自监督任务训练神经网络参数
(2)核心机制
- 输入: 原始文本(如"猫坐在垫子上")
- 任务形式:
- GPT类:预测下一个token(“猫坐"→预测"在”)
- BERT类:掩码语言模型(“猫[MASK]在垫子上"→预测"坐”)
- 学习对象:
- Embedding矩阵(随机初始化→优化)
- Transformer所有参数(随机初始化→优化)
(3)关键特征
| 特征 | 说明 |
|---|---|
| 数据 | 无标注、海量(TB级)、通用领域 |
| 目标 | 学会语言的统计规律、世界知识、推理能力 |
| 产出 | 基座模型(Base Model),具备通用能力但不懂指令 |
| 耗时 | 数周到数月,消耗数千GPU/TPU |
(4)与Tokenizer的关系
- Tokenizer在预训练之前已固定
- 预训练时调用Tokenizer将文本转为token ID
- 不修改Tokenizer,只训练神经网络参数
4.0.3 微调/对齐阶段(Fine-tuning / Alignment)
(0)时间线: 预训练完成后,让模型"学会听话"
(1)指令微调(Instruction Tuning / SFT)
做什么: 用有标注的指令-回复数据训练,让模型学会"问答格式"
| 对比 | 预训练 | 指令微调 |
|---|---|---|
| 数据 | “猫坐在垫子上”(纯文本) | {“instruction”: “翻译这句话”, “input”: “Hello”, “output”: “你好”} |
| 标注 | 无 | 需要人工或模板生成 |
| 目标 | 预测下一个token | 学会遵循指令格式 |
| 数据量 | TB级 | MB~GB级(通常数十万到数百万条) |
其他微调变体
- 领域微调: 用医学/法律等专业数据,让模型成为专科医生
- 任务微调: 针对翻译、摘要等特定任务优化
4.0.4 推理部署(Inference)
(0)时间线: 所有训练完成后,用户实际使用
(1)做什么
- 冻结所有参数(Embedding + Transformer不再更新)
- 接收用户输入 → Tokenizer分词 → Embedding映射 → Transformer计算 → 生成输出
- 只有前向传播,没有反向传播
完整流程图
准备阶段 预训练阶段 微调阶段 推理阶段
┌─────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ 数据清洗 │ → │ 无标注数据 │ → │ 有标注数据 │ → │ 用户提问 │
│ (TB级) │ │ (TB级) │ │ (GB级) │ │ │
├─────────┤ ├──────────┤ ├──────────┤ ├──────────┤
│ 训练 │ │ 训练Embedding│ → │ 固定Tokenizer│ → │ 固定Tokenizer│
│ Tokenizer│ │ +Transformer│ │ 微调Transformer│ │ 前向计算 │
│ (统计学习)│ │ (神经网络) │ │ (神经网络) │ │ │
├─────────┤ ├──────────┤ ├──────────┤ ├──────────┤
│ 产出 │ │ 产出基座模型 │ → │ 产出Chat模型 │ → │ 生成回答 │
│ 词表(固定)│ │ (如GPT-3) │ │ (如ChatGPT)│ │ │
└─────────┘ └──────────┘ └──────────┘ └──────────┘
4.1 以翻译任务为例的数据构建(现代通用大模型范式)
现代通用大模型(如GPT-4)的翻译能力,不是通过专门的平行语料监督训练获得,而是遵循**“通用预训练→指令微调→推理使用”**的标准流程。以下以翻译任务为例,说明各阶段的数据构建方法。
4.1.1 准备阶段(Tokenizer训练)
目标: 让Tokenizer学会切分中英文文本,生成固定词表
| 维度 | 具体内容 |
|---|---|
| 数据性质 | 无标注、非平行(中文和英文各自独立,不需要一一对应) |
| 数据来源 | 中文:新闻网站、小说、论坛、维基百科中文版 英文:纽约时报、书籍、Reddit、维基百科英文版 |
| 数据量 | 各语种几十GB到TB级,覆盖通用领域 |
| 是否需要翻译对 | 不需要 |
| 核心要求 | 语种分布均衡、领域覆盖广泛、质量高 |
# 伪代码示意
chinese_corpus = 抓取(["人民日报", "知乎", "晋江文学", "百度百科"]) # 无标注
english_corpus = 抓取(["NYT", "Gutenberg", "Wikipedia_en", "Reddit"]) # 无标注
# 合并后训练Tokenizer(BPE算法)
tokenizer = train_bpe(
corpus = chinese_corpus + english_corpus, # 简单拼接,不对应
vocab_size = 64000, # 中英双语通常设大一些
special_tokens = ["<pad>", "<s>", "</s>", "<unk>"] # 特殊标记
)
# 产出:词表文件(vocab.json)+ 切分规则(merges.txt)
关键说明:
- 中文语料里全是中文,英文语料里全是英文,不需要对齐
- Tokenizer从混合语料中统计:中文常用字词、英文常用单词/子词
- 最终词表包含:中文token、英文token、共享子词(如数字、标点)
- 模型后续通过这个词表"认识"中英文,但此时不学习翻译映射
4.1.2 预训练阶段
目标: 让神经网络学会中英文各自的语法规律和世界知识,形成跨语言通用语义空间
| 维度 | 具体内容 |
|---|---|
| 数据性质 | 无标注、非平行(连续文本,无source/target配对) |
| 数据格式 | 原始连续文本,如:“猫坐在垫子上。The cat sat on the mat.” |
| 数据来源 | Common Crawl、Books、Wikipedia、代码等(含中英文混杂内容) |
| 数据量 | TB级(越多越好) |
| 核心要求 | 覆盖多领域,包含少量自然混用的多语言内容(如学术论文、多语言网页) |
关键机制:
- 不直接学习"这句中文=那句英文"
- 通过自监督语言建模(预测下一个token)学习:
- 中文语法:“猫坐在___” → “垫子上”
- 英文语法:“The cat sat on the ___” → “mat”
- 跨语言隐含关联:偶尔看到"人工智能(Artificial Intelligence)"这样的对照
产出: 基座模型(如GPT-3),具备中英文理解能力,但不会执行翻译指令
4.1.3 微调阶段(获得翻译能力的关键)
目标: 让模型学会"翻译"这个任务格式,激活预训练时埋下的跨语言关联
| 维度 | 具体内容 |
|---|---|
| 数据性质 | 有标注、指令格式(但不是传统平行语料的句对格式) |
| 数据格式 | {"instruction": "将以下中文翻译成英文", "input": "我有一只猫", "output": "I have a cat"} |
| 数据来源 | 人工标注、自动模板生成、部分公开翻译数据集转换 |
| 数据量 | MB~GB级(通常数万到数十万条指令,翻译只占其中一部分) |
| 核心要求 | 指令多样性(不仅翻译,还有问答、摘要、编程等),避免只学翻译 |
# 微调数据示例(翻译只是众多指令中的一种)
fine_tune_data = [
{
"instruction": "将以下中文翻译成英文",
"input": "我有一只猫",
"output": "I have a cat"
},
{
"instruction": "将以下英文翻译成中文",
"input": "The weather is nice today",
"output": "今天天气很好"
},
# 翻译指令只占全部微调数据的一小部分
{
"instruction": "总结以下文章",
"input": "长文本...",
"output": "摘要..."
},
{
"instruction": "写一段Python代码计算斐波那契数列",
"input": "",
"output": "def fib(n):..."
}
]
关键说明:
- 不需要百万级平行句对,只需少量翻译指令示例(可能几千条)
- 模型学会的是:听到"请翻译"指令时,如何组合预训练知识生成译文
- 翻译能力来自预训练的知识储备+微调的任务理解,而非死记硬背句对
4.1.4 推理阶段(实际翻译)
目标: 用户使用模型完成翻译任务
用户输入:"请把'我有一只猫'翻译成英文"
↓
Tokenizer: ["请", "把", "'", "我", "有", "一", "只", "猫", "'", "翻译", "成", "英文"] → IDs
↓
模型理解:这是一个"中译英"的翻译指令
↓
生成过程:I → have → a → cat(自回归生成)
↓
输出:"I have a cat"
关键:
- 模型从未在预训练或微调时见过"我有一只猫=I have a cat"这个精确配对
- 依靠预训练时学到的:
- "我≈I"的语义关联(来自混杂语料中的共现)
- "有≈have"的用法对应
- 英文语法规则(冠词"a"的使用)
- 实时组合生成正确译文
总结
| 阶段 | 数据特点 | 是否需翻译对 | 核心作用 |
|---|---|---|---|
| 准备阶段 | 无标注、非平行 | ❌ 不需要 | Tokenizer学习切分规则 |
| 预训练阶段 | 无标注、非平行 | ❌ 不需要 | 学会语言规律,形成跨语言语义空间 |
| 微调阶段 | 有标注、指令格式 | ⚠️ 少量翻译指令示例 | 学会"翻译"任务格式,激活跨语言能力 |
| 推理阶段 | 用户输入 | - | 组合知识,实时生成译文 |
与传统NMT的本质区别:
- 传统NMT:预训练无→直接用百万平行句对监督训练
- 现代通用大模型:预训练海量无标注数据→少量指令微调→涌现翻译能力
通用大模型 与 专用翻译模型 训练的区别
范式一:通用大模型(如GPT、LLaMA)
| 阶段 | 数据特点 | 任务 | 标注 |
|---|---|---|---|
| 预训练 | 海量、无标注、通用领域 | 语言建模(预测下一个token) | 无 |
| 微调/SFT | 少量、有标注、指令格式 | 遵循指令、对话 | 有 |
范式二:专用翻译模型(如传统NMT系统)
| 阶段 | 数据特点 | 任务 | 标注 |
|---|---|---|---|
| 预训练(可选) | 海量、无标注、通用领域 | 语言建模 | 无 |
| 监督训练 | 中等规模、有标注、平行语料 | 翻译任务 | 有 |
通用大模型: 预训练就是无标注的,后续可能接SFT或专门微调
专用翻译模型: 可以先无标注预训练(学会语言),再有标注监督训练(学会翻译);也可以直接用平行语料监督训练(从头学翻译)
4.2 未见过的词/句子,模型为什么能理解?
靠三层“泛化能力”:
① Tokenizer将新词拆分为词表中已有的token小块;
② Embedding通过语义空间的向量关联(相似词向量靠近)进行联想;
③ Transformer通过上下文注意力,推理出新词/句子的语义角色,实现“举一反三”。
4.3 向量相似度(余弦/欧式距离)在哪里用?
-
Transformer内部:不直接调用,QK点积+缩放的本质,和余弦相似度一样是“衡量向量相关性”,只是计算更高效;
-
其他场景(如RAG、向量检索):大量使用余弦相似度、欧式距离,用于匹配用户问题和数据库中的相似内容。
4.4 训练阶段 vs 推理阶段(核心区别)
| 维度 | 训练阶段 | 推理阶段(用户提问时) |
|---|---|---|
| 核心目标 | 调整参数,最小化损失 | 用固定参数,生成回答/预测 |
| 关键操作 | 前向传播→算损失→反向传播→更新参数 | 仅前向传播(文字→token→ID→向量→Transformer→输出) |
| 参数状态 | 持续更新(在预训练启动时随机初始化的Embedding矩阵、Transformer参数) | 完全固定(不做任何修改) |
| 核心依赖 | 反向传播、残差连接、层归一化 | Tokenizer、训练好的Embedding矩阵、Transformer |
5、终极通俗总结
5.1 组件分工:
Tokenizer+Embedding帮模型“识字”,Transformer帮模型“懂话”;
5.2 训练过程:
像学生刷题(前向传播)、老师批改(反向传播)、调整学习方法(更新参数),残差连接和层归一化是“辅助工具”,防止学生“越学越忘”“学乱”;
5.3 推理过程:
像学生考试,只用已经学会的知识(固定参数)做题,不批改、不调整,快速给出答案;
5.4 核心能力:
大模型不是“死记硬背”,而是靠训练学会语言规律,靠泛化能力应对未见过的提问。
更多推荐



所有评论(0)