想象你第一次走进一家顶级餐厅的后厨:食材从冷库顺着传送带进入,流经切配、腌制、热炒、摆盘一个个工位,几十秒就变成一道可以上桌的菜;而支配这一切的不是某个吼来吼去的主厨,而是一条环环相扣的“中央厨房流水线”。大模型的架构,本质上就是一条“理解语言的流水线”——它把句子拆成一个个“食材”(词元),经过嵌入、注意力、前馈、归一化等一道道工序,最终输出“下一个词最可能是什么”的概率。 本文带你以“新人大厨”的视角,把这条流水线的每一站都走一遍:先看后厨全景图(Transformer 总体架构),再拆解传菜员的秘密(注意力机制)、顺序标签(位置编码)、灶台与备料(前馈与残差)、品控(归一化),最后聊聊试菜与营业(训练与推理)和菜系进化(主流模型演进)。读完你不仅能看懂结构图,更能在面试官面前把这条流水线讲得头头是道。
大模型架构是 AI 面试的“必考硬菜”。无论面算法岗还是工程岗,能把 Transformer 的原理讲到“让外行听懂、让内行点头”,就是最有说服力的技术名片。
目录
可视化演示
动态演示大模型架构精讲的核心机制,通过输入/处理/存储/输出四种模式展示关键概念与交互流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
大模型架构精讲:Deco Decoder-Only架构设 Scaling Law与模型扩 核心机制可视化 大模型架构精讲整体架构与关键组件
Transformer 总体架构:后厨全景图
站在这家“注意力餐厅”的后厨门口,主厨递给你一张平面图。图上有两条流水线:左边一条叫“理解线”——它把整张菜单从头到尾读一遍,摸清每道菜与每道菜之间的关系;右边一条叫“生成线”——它一道菜一道菜地往外出,每出一盘都要回头看看前面已经上了哪些菜。你恍然大悟:最早提出 Transformer 的翻译模型,正是用“理解线”读完源语言句子,再由“生成线”逐词吐出目标语言。
无论走哪条线,食材进门的第一站都完全相同——嵌入层(Embedding)。就像后厨把五花八门的食材统一切成规格一致的丁、丝、片,嵌入层把每个单词映射成固定维度的向量。流水线的最末端则是“输出头”(Output Head),它把最后一层加工出的特征,翻译成“词表上每个词该上桌的概率”。理解了这两端,整张平面图的骨架就立住了。
1. 词元序列 x:句子先被切分成词元(token),每个词元查嵌入表变成一个向量,这就是食材进门的“标准化切配”。
2. 逐层加工 Block:每一层 Transformer 模块拿到上一层输出,内部完成注意力与前馈两道工序,一共堆叠 L 层,就像后厨 L 个结构相同的加工工位。
3. 输出投影 W_e^\top:把最后一层特征乘上嵌入矩阵的转置,映射成词表上每个词对应的“打分”。
4. softmax 出菜:把打分转成概率分布,概率最高的词就是模型预测的下一个词。
所以面试官如果问“Transformer 长什么样”,你完全可以用这张平面图回答:食材从嵌入层进门,流过 L 个结构相同的加工工位,每站都做“注意力交换信息 + 前馈深度加工”两件事,最后在输出头变成概率。接下来,我们把每个工位的内部零件逐一拆开看。
注意力机制:传菜员的沟通艺术
后厨里最神奇的角色是传菜员。客人喊“我的面呢”,传菜员不会乱跑,而是先看每道菜上的桌号牌,快速判断哪些菜和自己负责的这单相关,再按相关程度分配精力。Transformer 里也有这样的“传菜员”:当句子中出现“苹果”,它会环顾整句话,判断这个词到底跟“吃”有关,还是跟“手机”有关——这就是注意力机制。
这种让每个词都能“同时看着所有词、按相关度分配信息”的机制叫自注意力(Self-Attention)。为了让“相关度”可以计算,模型给每个词配了三样东西:一个问题向量 Q(Query,我要找谁)、一张名片 K(Key,我是谁)、一份可交付的信息 V(Value,我身上有什么)。三样东西全部由输入向量乘不同的权重矩阵得到,并且每个词可以同时扮演三种角色。
1. 查询 Query:当前词发出“谁和我相关”的问题,由输入乘权重矩阵 W_Q 得到。
2. 键 Key:每个词亮出自己的“名片”,供别人的问题来匹配。
3. 相关度打分:用 Q 与所有 K 做点积,得到两两之间的相关度分数。
4. 缩放稳定:除以维度平方根,把分数方差压回 1,避免 softmax 梯度消失。
5. 权重归一:softmax 把分数变成非负且和为 1 的注意力权重。
6. 加权汇总:用权重对 V 加权求和,得到融合上下文后的新表示。
把三样东西串起来记:Q 是问题,K 是名片,V 是货。传菜员先拿问题去匹配名片(打分),再用分数决定端多少货(加权求和)。面试官最爱问的“注意力本质是什么”,一句话答完——按相关度加权求和。
位置编码:食材的顺序标签
你很快发现一个致命问题:如果传菜员只认菜不认顺序,“鱼香肉丝”和“肉丝鱼香”在他眼里就是同一道菜——食材一样,顺序一变,菜完全不是一回事。自注意力天生“无视顺序”:把句子里的词任意打乱,Attention 的计算结果一模一样。对语言来说,这意味着“猫追老鼠”和“老鼠追猫”会变成同一个输入。
所以 Transformer 必须给食材贴上“第几道菜”的标签,这就是位置编码(Positional Encoding)。经典方案用正弦/余弦函数为每个位置生成一个独一无二的“坐标向量”,直接加到词向量上。后来出现的旋转位置编码(RoPE)把“位置差”编码进向量间的旋转角度,表达能力更强,成为 LLaMA、Qwen 等主流大模型的标配。
1. 位置编号 pos:每个词在句子中的序号,从 0 开始。
2. 维度下标 i:把 d 维编码拆成两半,偶数维用正弦、奇数维用余弦。
3. 多尺度频率:分母 10000^{2i/d} 让低维变化快、高维变化慢,形成一把“刻度尺”。
4. 正余弦交替:位置偏移 k 的编码可以写成原编码的线性组合,模型能隐式学到相对位置。
一个记忆锚点:词嵌入回答“这是什么食材”,位置编码回答“这是第几道菜”。面试中说到 RoPE,就强调它携带的是“相对位置信息”(你离我多远),而不是“绝对编号”,这对处理超长上下文非常关键。
前馈网络与残差:灶台与备料
传菜员只负责匹配与传菜,真正把食材变成美味的是灶台师傅。Transformer 里的“灶台”是前馈网络(FFN):一个两层的全连接网络。它的工作方式是先“爆炒”——把维度从 d 放大到 4d,给特征充分的空间互相碰撞;再“收汁摆盘”——把 4d 压回 d,回到大家熟悉的规格。
流水线还有一个大麻烦:层数一深,梯度信号传回前端时已经衰减得所剩无几,就像传话游戏传到最后完全走样。解决办法是残差连接(Residual Connection):每个工位都把“原始备料”留一份在旁边,无论加工成什么样,出锅时都跟备料加到一起——信息永远有一条“高速通道”直达后端。这道菜做坏了,备料还在,可以再炒一遍。
1. 升维展开:第一层线性变换把维度放大到 4 倍,给特征充足的“工作台”空间。
2. ReLU 激活:逐元素取 max(0,·),引入非线性,只保留正向信号——只有够味的信号才上桌。
3. 降维还原:第二层线性变换把维度压回 d,与输入维度对齐,方便残差相加。
4. 残差捷径:原始输入与变换结果逐元素相加,为梯度留一条恒等通道。
5. 层归一化:相加后再做归一化,稳定数值尺度(下一节细讲)。
记住一组数字:FFN 通常是整个 Transformer 里参数最多的模块(约占总参数的 2/3),是名副其实的“灶台主力”;而残差连接就是用一次加法,换来极其稳定的深层训练。面试二连问“FFN 干嘛的”“残差干嘛的”,用“爆炒收汁 + 留备料”就能答得又形象又准确。
归一化技术:出品品控
主厨最看重出品稳定:不管食材多新鲜、火候多猛,同一道菜端上桌的口味必须一致。后厨的“品控”环节就是归一化(Normalization)——把每一层的数值分布拉回一个标准区间,训练才不会因为数字忽大忽小而剧烈摇晃。
Transformer 选择的品控方式是 Layer Normalization(层归一化,LN)。它跟图像领域常用的 BatchNorm(批归一化)思路相反:不依赖整批样本的统计量,而是对每个样本(每个 token)自身的所有特征维做标准化。NLP 的句子长度千差万别、batch 大小也常变,“自己归一自己”最稳。工程上还催生了简化版 RMSNorm——去掉均值平移,只做缩放,速度快且效果几乎不降。
1. 求均值方差:对每个 token 的所有特征维求 μ 和 σ²。
2. 标准化:减去均值除以标准差,并加极小量 ε 防止除零,让分布归一到零均值单位方差。
3. 缩放平移:可学习参数 γ、β 恢复模型需要的表达范围——归一化不是“抹掉个性”,而是“稳定发挥”。
可以这样记位置:Post-LN 是“炒完再品控”,早期 Transformer 用,深了容易翻车;Pre-LN 是“先品控再下锅”,训练更稳,如今是默认做法;RMSNorm 是“简化品控”,只控分量不控咸淡。面试问到“为什么 LLM 用 LN 不用 BN”,从“句子长短不一、不依赖 batch 统计”入手答就稳了。
训练与推理:试菜与营业
新菜能不能进菜单,得看客人买不买账。后厨的做法分两步:先用海量“标准菜谱”反复试菜,让每个工位都练出手感——这叫预训练;再根据老客人的特殊口味做针对性调整——这叫微调。而正式营业时,传菜员发现一个省力诀窍:之前端过的菜,桌号和名片都记熟了,不必为每位新客重新核对一遍——这就是推理加速里的 KV Cache。
大模型的预训练目标主流是自回归(Autoregressive)语言建模:给定前文,预测下一个词。为了防止模型“偷看答案”,训练时用一个因果掩码(Causal Mask)把未来位置的词遮住——第 t 个词只能看到自己及左边的词。BERT 则反其道而行,采用掩码语言模型(MLM):随机盖住一些词,让模型双向去猜,所以 BERT 是“双向理解者”,GPT 是“单向生成者”。
1. 前文条件:模型只能看到位置 t 之前的词,未来被因果掩码遮住。
2. 下一个词概率:模型输出第 t 个位置上词表中每个词的预测概率。
3. 负对数似然:正确词的概率越接近 1,这个位置的损失越小;模型就是在逐步“把对的词推高、把错的词压低”。
4. 序列平均:对句子里所有位置取平均,得到本轮训练的整体优化目标。
推理阶段的关键则是一本“熟客台账”:KV Cache。自回归生成第 t 个词时,前 t-1 个词的 Key/Value 早就算过了,缓存起来直接复用,每次生成只对新词做一次前向计算,把每步的复杂度从 O(T²) 降到 O(T)。面试官问“训练和推理的区别”,你就答:训练是“整桌菜反复试炒”,推理是“上菜时只看下一道”——一个重质量,一个重速度。
主流模型演进:菜系进化史
这家餐厅的菜系也在不断进化。刚开业时,它靠“理解线 + 生成线”两条流水线打天下(Encoder-Decoder);后来生意分化:BERT 像一位只负责品鉴的品鉴师(Encoder-only),把整道菜从头品到尾;GPT 则变成边想边说的主厨(Decoder-only),想一个词说一个词。再后来,后厨忙不过来,老板请了一群专家厨师,每道菜只叫最对口的几位上手——这就是混合专家(MoE)。
从演进脉络看:Transformer(2017)→ BERT / GPT(2018)→ 如今主流大模型几乎都是 Decoder-only + Pre-LN + RoPE + MoE 的组合拳。为什么 Decoder-only 笑到最后?因为它的训练目标统一(永远预测下一个词)、天然支持生成任务、对缩放定律(Scaling Law)最友好——模型越大,损失下降曲线越平滑;而 BERT 式的双向编码,在生成任务上优势有限。
1. 专家网络 E_i:每个专家是一个独立的前馈网络,相当于各有所长的厨师。
2. 门控打分:路由器 W_g 为每个专家打一个“对口程度”分数。
3. TopK 筛选:只保留分数最高的 K 个专家,其余置为负无穷,softmax 后权重趋近 0。
4. 加权汇总:被激活专家的输出按门控权重相加,得到最终结果。
一句话总结菜系:BERT 是品鉴师,GPT 是主厨,MoE 是专家团。面试被问“为什么模型越来越大却不怎么变慢”,答案正是 MoE 的稀疏激活——参数翻倍但每次只激活少数专家,效果全收、算力可控。讲到这一步,大模型架构这一题的深度已经远超平均线。
AI 应用场景
电商客服的意图识别与实体抽取
阶段:模型推理(微调后的 BERT / 注意力模型)
解决的问题:客服话术口语化严重,“我想把上次买的东西退掉”里关键信息分散。传统正则规则词表维护成本高、漏召回多;预训练模型加注意力机制能同时定位意图(退货)与实体(上次买的东西),注意力权重图还能为运营提供可解释依据。
具体案例:某电商平台客服机器人收到“我上周买的红色保温杯想退货”时,注意力层在“退”“保温杯”附近打出显著高权重,系统据此触发售后流程并抽取商品属性。意图识别准确率从规则版的 78% 提升到 94%。
代码补全工具的推理加速
阶段:推理部署(Decoder-only + KV Cache)
解决的问题:代码补全要求“边敲边补”,延迟必须控制在几十毫秒。若每输入一个字符都把整个上文重新过一遍 Transformer,算力浪费严重。KV Cache 把已算过的历史 Key/Value 缓存复用,使每步计算只针对新 token。
具体案例:Copilot 类 IDE 插件中,用户输入 def add(a, b): 后模型逐词补全 return a + b。每次补全新词只做一次前向计算、复用历史缓存,平均响应时间从 600ms 降到 90ms。
企业知识库的 RAG 问答
阶段:检索增强生成(长上下文 + 位置编码)
解决的问题:企业文档动辄几十页,直接塞进上下文既超窗口又昂贵。RAG 先把文档切片向量化,检索出最相关片段再拼接进上下文让模型生成答案;RoPE 的相对位置编码让拼接后的长文本仍能保持合理位置关系。
具体案例:某律所合同审查助手输入 300 页合同,系统检索“违约金”“保密条款”等片段后由大模型总结风险点并生成审查意见。借助 RoPE 的外推能力,上下文从 4K 扩展到 32K token。
Python 演示
import numpy as np def softmax(x): x = x - x.max(axis=-1, keepdims=True) # 减去最大值防止指数溢出 e = np.exp(x) return e / e.sum(axis=-1, keepdims=True) def positional_encoding(T, D): # 生成正弦位置编码, 相当于给每个位置贴顺序标签 pe = np.zeros((T, D)) pos = np.arange(T).reshape(-1, 1) idx = np.arange(D).reshape(1, -1) angle = pos / np.power(10000.0, 2 * (idx // 2) / D) pe[:, 0::2] = np.sin(angle[:, 0::2]) pe[:, 1::2] = np.cos(angle[:, 1::2]) return pe def multi_head_attention(x, wq, wk, wv, wo, num_heads, causal=False): # 输入的 x 形状为 (batch, seq_len, dim) B, T, D = x.shape H = num_heads d = D // H # 每个词同时扮演 Q(提问者) / K(名片) / V(信息) 三种角色 q = (x @ wq).reshape(B, T, H, d).transpose(0, 2, 1, 3) k = (x @ wk).reshape(B, T, H, d).transpose(0, 2, 1, 3) v = (x @ wv).reshape(B, T, H, d).transpose(0, 2, 1, 3) scores = q @ k.transpose(0, 1, 3, 2) / np.sqrt(d) # 缩放点积打分 if causal: mask = np.tril(np.ones((T, T))) # 因果掩码: 只看左侧 scores = np.where(mask == 0, -1e9, scores) # 未来位置打巨负分 attn = softmax(scores) # 权重归一化 out = (attn @ v).transpose(0, 2, 1, 3).reshape(B, T, D) return out @ wo, attn def demo(): np.random.seed(42) D, H, T = 8, 2, 4 # 维度 / 头数 / 句子长度 x = np.random.randn(1, T, D) + positional_encoding(T, D) wq = np.random.randn(D, D) * 0.1 wk = np.random.randn(D, D) * 0.1 wv = np.random.randn(D, D) * 0.1 wo = np.random.randn(D, D) * 0.1 out, attn = multi_head_attention(x, wq, wk, wv, wo, H, causal=True) print("输出形状:", out.shape) print("注意力权重:", np.round(attn[0, 0], 2)) print("第3个词看不到未来:", attn[0, 0, 2, 3] == 0) if __name__ == "__main__": demo()
q = (x @ wq).reshape(B, T, H, d).transpose(0, 2, 1, 3)把向量拆成 H 个头,维度重排成 (batch, head, seq, head_dim)scores = q @ k.transpose(0, 1, 3, 2) / np.sqrt(d)Q 与 K 转置做矩阵乘并除以 √d,即缩放点积打分mask = np.tril(np.ones((T, T)))生成下三角矩阵作为因果掩码,位置 t 只能看到 0 到 tscores = np.where(mask == 0, -1e9, scores)把未来位置设为 -1e9,softmax 后权重约等于 0attn = softmax(scores)得到和为 1 的注意力权重,行代表“当前词看向谁”out = (attn @ v).transpose(0, 2, 1, 3).reshape(B, T, D)按权重加权汇总,再还原为原始形状x = np.random.randn(1, T, D) + positional_encoding(T, D)用随机向量模拟词嵌入,叠加位置编码print("第3个词看不到未来:", attn[0, 0, 2, 3] == 0)验证因果掩码生效,结果为 True
常见误区
误区注意力不就是把整句话里所有词的向量求个平均吗?反正每个词都被“看了一遍”。
正解注意力权重由 Q 与 K 的点积决定,差异可以非常大。句子“猫追老鼠,它跑得飞快”里,“它”的注意力几乎全部集中在“猫”上。公式 softmax(QKᵀ/√d)·V 的权重是按相关性分配的,“加权求和”绝不等于“均匀平均”。
为何常见:直觉上以为“环顾全局”就是“所有词都看一眼且一样多”,忽略了 softmax 之后权重分布的尖锐性。
误区自注意力已经看到整句话了,顺序信息难道不藏在词义里吗?去掉位置编码应该也能跑。
正解自注意力对集合元素是对称的——把“我打你”三个词任意换位,Attention 结果完全相同。没有位置编码,模型就是一个词袋模型。“猫追老鼠”和“老鼠追猫”词一模一样、语义完全相反,只有位置编码能区分。
为何常见:词嵌入本身编码了部分语义和局部共现信息,小实验里去掉位置编码效果差异不明显,让人误以为它可有可无。
误区都是归一化,公式长得差不多,BN 在图像里那么成熟,直接搬过来用不就行了。
正解两者归一化的维度完全不同。BN 按特征维跨样本统计,依赖 batch 大小;NLP 句子长度可变,batch 内每句话长度不同,BN 统计量极不稳定。LN 对每个样本自身的特征维归一,不依赖 batch,变长序列下更稳。实践中大模型全部使用 LN / RMSNorm,没人用 BN。
为何常见:名字都叫“归一化”,式子长得像,容易当成同一种工具的不同版本。
误区头越多能看到的模式越多,那加到 64 头、128 头,模型岂不是更强?
正解总维度 = 头数 × 每头维度,头太多会把每头的维度压得过小,单头表达能力受限。研究还发现许多头会“退化”成冗余模式,主流模型头数集中在 8-32 之间,继续增加收益递减且计算更贵。
为何常见:“多”字让人本能地觉得多多益善,忽略了头数与其他超参数之间的耦合约束。
误区KV Cache 是一种“偷懒”的近似优化,用了缓存之后的结果应该和原来不完全一样吧?
正解KV Cache 不改变任何计算数值,只是把已经算过的 Key/Value 张量存下来复用。自回归第 t 步本来就要用到 1 到 t-1 位置的全部 K/V,缓存后直接查表,矩阵乘法结果与不缓存完全等价。它只优化计算,不改变概率输出。
为何常见:带缓存的代码是“换一种写法省算力”,不像量化、剪枝那样引入近似,容易误以为所有优化都会带来精度损失。
面试题
Q1. 自注意力中 Q、K、V 三个向量分别是怎么得到的?
- A.直接复用输入的原始向量
- B.由输入乘三个不同权重矩阵← 正确答案
- C.随机初始化后保持不变
- D.由前馈网络输出的三个副本
答案:B。Q/K/V 分别是输入 X 与三个不同的可学习矩阵 W_Q、W_K、W_V 相乘得到。直接复用输入无法形成“提问/名片/信息”的分工,随机初始化不参与学习,前馈网络输出也并非 QKV 的来源。
Q2. 缩放点积注意力中为什么要除以 √d_k?
- A.防止点积过大导致梯度消失← 正确答案
- B.减小参数量以加快训练速度
- C.让查询键值维度保持数值一致
- D.让注意力计算过程完全无需学习
答案:A。当 d_k 较大时,点积数值的方差随之增大,softmax 分布趋向极端(接近 0 或 1),导致梯度趋近于 0。除以 √d_k 把方差压回约 1,让训练更稳定。
Q3. 多头注意力机制的核心思想是什么?
- A.让不同头学习不同子空间的语义关系← 正确答案
- B.用多个头做类似模型集成的投票
- C.让每个头处理一个独立完整句子
- D.用头数替代网络层数来加深模型
答案:A。每个头在低维子空间里学习不同类型的关系(语法、指代、位置等),最后拼接融合。集成投票是“多个独立模型结果投票”,与多头共享底层参数的分工训练完全不同。
Q4. 关于位置编码,下列说法正确的是?
- A.自注意力天然无序位置信息必须额外注入← 正确答案
- B.正弦编码用不同频率函数生成位置向量← 正确答案
- C.旋转编码把相对位置信息旋转进向量← 正确答案
- D.位置编码只在解码器中使用而编码器不需要
答案:ABC。自注意力对集合元素对称,必须额外注入顺序信息;经典正弦编码用不同频率的 sin/cos 函数生成;RoPE 通过旋转矩阵把相对位置编码进向量。编码器同样需要顺序信息,D 错误。
Q5. Pre-LN 与 Post-LN 的主要区别是什么?
- A.归一化放在残差相加之前而非之后← 正确答案
- B.归一化用的参数量比传统更少
- C.把归一化彻底从残差中移除掉
- D.只适用于编码器而非解码器结构
答案:A。Post-LN 是“子层输出加上残差后再归一化”,深层训练不稳;Pre-LN 把归一化放到子层之前,梯度路径更干净。两者参数量相同、都做归一化,编码器和解码器都能使用。
Q6. KV Cache 主要解决的问题是什么?
- A.避免重复计算历史词的键值缓存← 正确答案
- B.训练阶段梯度消失导致模型无法收敛
- C.词表过大致使分类计算量爆炸
- D.长文本超出位置编码的表示范围
答案:A。自回归推理每生成一个新词都要用到全部历史 token 的 K/V,缓存后只需增量计算,结果与不缓存完全一致。它不参与训练、不处理词表、也不解决位置外推问题。
Q7. 残差连接在 Transformer 中的作用有哪些?
- A.为梯度提供恒等快捷通道缓解消失← 正确答案
- B.让深层信息可以无损直达更浅层← 正确答案
- C.减少模型需要学习的参数量
- D.允许堆叠更多层而不明显退化← 正确答案
答案:ABD。y = x + f(x) 中恒等分支让梯度至少保留一份“原样信号”,信息可以直达任意浅层,因此可以堆叠更深而训练不退化。残差并不改变参数数量,C 错误。
Q8. 为什么当代 LLM 多数采用 Decoder-only 架构?
- A.自回归目标统一且可扩展性好← 正确答案
- B.天然支持生成并适配指令任务← 正确答案
- C.缩放定律显示其能力提升平滑← 正确答案
- D.始终比编码器训练成本更低廉
答案:ABC。Decoder-only 用统一的“预测下一个词”目标,实现简单、可扩展;天然支持生成,配合指令微调可适配各类任务;缩放定律实验表明其损失下降更稳定平滑。训练成本取决于数据与规模,与架构类型无必然关系。
Q9. MoE(混合专家)中“稀疏激活”的含义是什么?
- A.每个 token 只调用少数几个专家网络← 正确答案
- B.每个专家只处理部分训练数据样本
- C.推理时丢弃不重要的层减少计算
- D.训练时只更新被采样到的参数
答案:A。门控网络为每个 token 打分,只激活 TopK 个专家并加权求和,其余专家权重为 0。训练时被路由选中的专家都要更新梯度,并非“只更新采样参数”,也不是丢弃层。
Q10. 自回归语言模型的训练目标是什么?
- A.在给定前文条件下最大化下一个词的概率← 正确答案
- B.同时最大化句子中所有词出现的概率
- C.最小化所有词向量之间的距离总和
- D.让编码器输出与解码器输出完全一致
答案:A。因果掩码保证每个位置只能看左边,目标就是最大化正确下一个词的概率(等价于最小化其负对数)。B 是掩码语言模型(MLM)的思路,C、D 都不是语言建模的训练目标。