- 大模型(LLM)基础原理详细讲解,覆盖 Transformer 到生成策略的核心概念
- 对应面试问答速查见 大模型基础(面试版)
- 相关主题:大模型训练与微调、大模型推理与部署、RAG、AI Agent、LangChain 与 LangGraph
- 当前覆盖:Transformer、self-attention、多头注意力、位置编码、FFN、归一化、残差、分词器、token、上下文窗口、生成策略、MoE/Dense、注意力变体、幻觉、三种架构、causal mask、稀疏/线性注意力、RoPE/ALiBi、外推内插、Pre-Norm/RMSNorm、GELU/SiLU/SwiGLU、BPE/OOV/词表、temperature/top-p/repetition penalty、beam search、attention sink、perplexity、in-context learning
Transformer 的整体结构是什么?为什么它能取代 RNN/LSTM?
整体结构
Transformer 是 2017 年《Attention Is All You Need》提出的纯注意力架构,由 Encoder(编码器) 和 Decoder(解码器) 两大部分堆叠而成。每层由多头自注意力(Multi-Head Self-Attention) + 前馈网络(FFN) + 残差连接 + LayerNorm 组成。
- Encoder:N 层,每层含 self-attention + FFN,负责把输入序列编码成上下文表示。
- Decoder:N 层,含 masked self-attention + cross-attention + FFN,自回归生成下一个 token。
- 现代大模型(GPT 系)是 Decoder-only,即只保留 Decoder 的 masked self-attention 部分,做「预测下一个词」。
为什么能取代 RNN/LSTM
| 维度 | RNN/LSTM | Transformer |
|---|---|---|
| 并行性 | 顺序计算,无法并行 | 注意力矩阵可全并行计算 |
| 长程依赖 | 梯度易消失/爆炸,信息被压缩 | 任意两位置直接交互,路径长度 O(1) |
| 表达能力 | 逐时刻隐藏状态 | 多头注意力从多子空间建模 |
| 训练效率 | 慢 | 快,可堆叠超大模型 |
一句话:注意力让任意 token 对直接建立联系,摆脱了 RNN 的顺序依赖,因此可并行、可扩展。
先答「纯注意力架构 + Encoder/Decoder 结构」,再补三点:① 注意力全并行、路径长度 O(1) 解决长程依赖;② RNN 顺序计算无法并行训练;③ 现代 GPT 是 Decoder-only 的自回归结构。
self-attention(自注意力)的原理是什么?Q/K/V 分别是什么?
原理
自注意力的本质:让序列中每个 token 根据与其它 token 的相关性,加权聚合所有 token 的信息,得到融入上下文的新表示。
计算过程:
Attention(Q, K, V) = softmax(Q · K^T / √d_k) · V- 每个输入 token 经三个线性变换得到 Q(Query 查询)、K(Key 键)、V(Value 值)。
- 用 Q 与所有 K 做点积得到注意力分数,除以
√d_k防止分数过大导致 softmax 梯度消失。 - softmax 归一化成权重分布。
- 权重加权求和 V,得到该 token 的输出。
Q/K/V 的含义
- Q(Query):当前 token「我想关注什么」。
- K(Key):其它 token「我是什么」。
- V(Value):其它 token「我携带的实际信息」。
Q·K 算「相关性打分」,V 提供「被聚合的内容」。
复杂度
序列长度 n、维度 d:注意力矩阵 n × n,复杂度 O(n²·d)。长序列是瓶颈,由此催生 FlashAttention、稀疏注意力、MQA/GQA 等优化。
把公式写出来(含 √d_k 缩放),说清 Q/K/V 语义,并主动提 O(n²) 复杂度与优化方向。
为什么用多头注意力(Multi-Head Attention)?单头和多头有什么区别?
多头注意力的动机
单头注意力只用一个注意力空间,难以同时捕捉多种关系。多头注意力把 Q/K/V 拆成 h 个子空间,各自独立做注意力再拼接,让模型在不同子空间关注不同信息(如语法、指代、语义)。
MultiHead(Q,K,V) = Concat(head_1, ..., head_h) · W^O
head_i = Attention(Q·W_i^Q, K·W_i^K, V·W_i^V)单头 vs 多头
| 维度 | 单头 | 多头 |
|---|---|---|
| 子空间 | 1 个 | h 个并行子空间 |
| 关系建模 | 单一平均后的注意力 | 捕捉多种关系 |
| 参数量 | 少 | 多(但总维度不变,h 份均分) |
- 多头不是「更多参数堆叠」,而是把维度切分并行,总计算量与单头同量级,但表达更丰富。
- 典型配置:h = 8(原论文)、32、64(大模型),每头维度 d_k = d_model / h。
强调「多个子空间并行关注不同特征」,并说明维度均分后总计算量不显著增加,还能自然适配后续 MQA/GQA 的工程优化。
位置编码的作用是什么?绝对位置编码、相对位置编码和 RoPE 有什么区别?
作用
注意力本身是对 token 集合的无序加权(并行计算不感知顺序),位置编码把「位置信息」注入模型,使其知道「我前面的词是谁」。
三类位置编码
- 绝对位置编码:给每个位置一个固定向量(如正弦位置编码 sin/cos,或可学习 embedding),直接加到输入上。缺点:训练外推长序列困难。
- 相对位置编码:建模 token 之间的相对距离而非绝对位置(如 T5 的 relative bias、ALiBi 按距离线性衰减注意力分数)。
- RoPE(旋转位置编码):把位置信息编码为对 Q/K 的旋转变换,使点积只依赖相对位置。LLaMA/Qwen/DeepSeek 等主流模型都采用。
RoPE: Q' = Q · R(θ·pos),点积结果只含 (pos_i - pos_j),即相对位置对比
| 类型 | 代表 | 外推能力 | 特点 |
|---|---|---|---|
| 绝对 | 正弦、可学习 | 弱 | 简单,位置为绝对 |
| 相对 | T5 bias、ALiBi | 较好 | 直接建模相对距离 |
| RoPE | LLaMA 系 | 好(可插值外推) | 旋转嵌入,兼顾绝对与相对 |
讲清「注意力无序、位置编码补顺序」,再点出 RoPE 是当前主流、天然支持长上下文外推(可配合 NTK、YaRN 等插值扩展)。
Transformer 中前馈网络(FFN)的作用是什么?常用的激活函数有哪些?
作用
注意力层负责 token 间的信息交互(通信),FFN 层负责对每个 token 做独立的非线性变换(计算),提升表达能力。两者交替:注意力聚合上下文 → FFN 非线性加工 → 层归一化。
结构演变
- 原始 Transformer:
FFN(x) = W2 · ReLU(W1 · x),中间维度通常 4×d_model。 - 现代大模型多用 SwiGLU:
FFN(x) = W2 · (SwiGLU(W1 · x)),其中SwiGLU(x) = Swish(x) ⊙ (x·V),提升收敛与效果(LLaMA、Qwen 等)。
常用激活函数
| 激活函数 | 特点 |
|---|---|
| ReLU | 简单,负半轴为 0 |
| GELU | 平滑近似,BERT 使用 |
| Swish/SiLU | x·sigmoid(x),LLaMA 系使用 |
| SwiGLU | Swish 的门控变体,主流首选 |
记住「注意力做通信、FFN 做计算」这个分工,并提到现代模型普遍用 SwiGLU 替代 ReLU 提升效果。
LayerNorm 和 BatchNorm 有什么区别?为什么 Transformer 用 LayerNorm?
区别
| 维度 | BatchNorm | LayerNorm |
|---|---|---|
| 归一化维度 | 对每个特征跨 batch 归一化 | 对每个样本跨特征维度归一化 |
| 依赖 batch | 依赖,batch 小不稳定 | 不依赖,逐样本独立 |
| 适用场景 | CNN | RNN/Transformer |
| 推理 | 需记录移动统计量 | 直接算,无需 batch 统计 |
为什么 Transformer 用 LayerNorm
- 序列长度可变、batch 内 token 数不定,BatchNorm 难以在变长序列上稳定统计。
- 逐样本独立,与 batch 无关,训练/推理行为一致。
- 归一化放在每个 token 自身的特征维度上,天然适合「token 级」的并行计算。
Pre-Norm 与 Post-Norm、RMSNorm
- Post-Norm(原论文):
x + Sublayer(LN(x)),深网络梯度不稳。 - Pre-Norm(现代主流):
x + Sublayer(x)再 LN,训练更稳定。 - RMSNorm:只用均方根缩放、去掉均值平移,省算力,LLaMA 系采用。
核心是「LayerNorm 对每个样本独立归一化、不依赖 batch」,并能说出 Pre-Norm 更稳定、RMSNorm 更省算力这两个现代改进。
残差连接在 Transformer 中的作用是什么?
作用
残差连接 x + Sublayer(x)(He 的 ResNet 思想)解决深度网络的梯度消失/退化问题:
- 梯度直通:反向传播时梯度可沿恒等映射直接回传,避免深层梯度消失。
- 低层信息保留:每层输出至少保留输入信息,网络堆叠再深也不至于「学丢」原始信息。
- 训练稳定:配合 LayerNorm(Pre-Norm),可训练上千层的超大模型。
一句话:残差让「深层叠加」成为可能,是 Transformer 能堆到几百层的基石。
类比 ResNet,答「恒等映射保证梯度与信息直通」,再补一句「配合 Pre-Norm 才能稳定训练千亿参数模型」。
分词器(Tokenizer)的原理是什么?BPE、WordPiece、SentencePiece 有什么区别?
原理
分词器把原始文本切成 token 序列,是「文本 → 模型可处理的数字 ID」的入口。目标是在词表大小与OOV(未登录词)覆盖之间平衡:词表太大则 embedding 巨、太小则切太碎。
三种主流算法
| 算法 | 核心 | 特点 |
|---|---|---|
| BPE | 统计最高频相邻字符对,迭代合并成子词 | GPT 系,基于字符级字节合并 |
| WordPiece | 合并使语言模型似然增益最大的对 | BERT 系,用 ## 标记词内续段 |
| SentencePiece | 直接在原始字节/空白上做 BPE 或 unigram | 不依赖预分词,语言无关,T5/LLaMA 系 |
- 三者都是子词(subword)级:把罕见词切成多个子词(如
unbelievable → un + believ + able),兼顾词表大小与覆盖。 - 现代模型多采用 BPE(Byte-level BPE):以字节为单位合并,天然覆盖所有字符(含 emoji、多语言)。
说清「子词级在词表大小与 OOV 间折中」,BPE 按频率合并、WordPiece 按似然合并、SentencePiece 语言无关,并能举 un + believ + able 的例子。
什么是 token?token 和字/词的关系?中英文 token 有什么差异?
概念
token 是大模型处理文本的最小单位,输入先被分词器切成 token 序列,再映射为 ID。模型按 token 计费、按 token 计量上下文长度。
token 与字/词的关系
- 一个 token 可能是半个词、一个词、一个字、一个标点,取决于分词器与词表。
- 高频词通常独立成 token,罕见词被拆成多个子词 token。
中英文差异
| 维度 | 英文 | 中文 |
|---|---|---|
| 切分难度 | 空格天然分词 | 无空格,需分词 |
| token/字比 | 约 1 token ≈ 0.75 词 | 1 个汉字常需 1~2 token |
| 影响 | 成本低 | 同样语义 token 更多、成本更高 |
- 实践中「1 个中文字符 ≈ 1 个 token,1 个英文单词 ≈ 1.3 token」是常见估算。
- token 数直接决定成本与上下文占用,是工程上要关心的指标。
强调「token 是计费与上下文的基本单位」,并指出中文比英文更「费 token」(无空格、多字节),这是中文场景成本高的原因之一。
什么是上下文窗口(context window)?如何扩展长上下文?
概念
上下文窗口是模型单次能处理的 token 上限(输入 + 输出的总 token 数)。超过则被截断或报错。它是注意力 O(n²) 复杂度和 KV cache 显存的直接体现。
扩展长上下文的方法
- 训练期:直接用长序列训练(成本高)、位置编码外推。
- 位置编码插值:
- Position Interpolation:把长序列的位置按比例压缩到训练长度内。
- NTK-aware 插值:对 RoPE 的旋转基做非线性缩放,外推更平滑。
- YaRN:结合 NTK 与插值,进一步稳定长文效果。
- 注意力优化:滑动窗口(window attention)、稀疏注意力、FlashAttention 降低显存与计算。
- 工程侧:LongRoPE、ring attention(序列并行)、KV cache 压缩(如 MLA、GQA)等。
答「窗口是 token 上限,受 O(n²) 注意力与 KV cache 限制」,并举例 NTK/YaRN 插值和滑动窗口、GQA/MLA 等主流扩展手段。
大模型的生成策略有哪些?greedy、beam search、sampling、top-k、top-p 有什么区别?
生成策略
模型输出的是词表上的概率分布,生成策略决定「如何从分布里挑下一个 token」。
| 策略 | 做法 | 特点 |
|---|---|---|
| Greedy | 每步取概率最高 token | 确定性,可能重复、局部最优 |
| Beam Search | 维护 k 条候选序列,取整体概率最高 | 用于翻译等确定性任务 |
| Sampling | 按概率随机采样 | 多样性强,用于对话/创作 |
| temperature | 缩放 logits(softmax(logits/T)) | T 越大越随机,越小越确定 |
| top-k | 只从概率前 k 个 token 采样 | 截断长尾 |
| top-p(nucleus) | 取累计概率达 p 的最小集合采样 | 动态截断,自适应 |
组合实践
- 对话/创意写作:temperature 0.7~1.0 + top-p 0.9,多样性好。
- 代码/数学/事实问答:temperature 0~0.3 + greedy,稳定精确。
- 翻译/摘要:beam search 提升整体连贯性。
能说明「temperature 缩放分布、top-k 固定截断、top-p 动态截断」的区别,并给出「对话用高温度、代码用低温度」的实践结论。
主流开源大模型有哪些?MoE 和 Dense 架构有什么区别?
主流开源模型
| 模型 | 特点 |
|---|---|
| LLaMA(Meta) | 开源标杆,RoPE + SwiGLU + Pre-Norm |
| Qwen(阿里) | 中文强,多尺寸 |
| DeepSeek | MoE 架构,成本低、效果好 |
| GLM(智谱) | 中文生态 |
| Mistral | 欧洲开源,GQA 先行者 |
MoE vs Dense
| 维度 | Dense(稠密) | MoE(混合专家) |
|---|---|---|
| 结构 | 每层一个 FFN,全参数参与 | 每层多个专家 FFN,路由只激活部分 |
| 计算量 | 全量 | 每次只算 top-k 专家,激活参数少 |
| 总参数 | 相对少 | 大(千亿级),但推理成本低 |
| 训练 | 简单 | 需负载均衡(aux loss 防专家塌缩) |
- MoE 核心:「大参数量 + 小激活量」——用路由(gate)每个 token 只走 top-2/8 专家,显存存全量、计算只花一小部分,是 DeepSeek/Mixtral 低成本高性能的关键。
用一句话「MoE 大总参、小激活,省算力」点出本质,再补「路由 + 负载均衡 aux loss 防止专家不均衡」这个落地难点。
MHA、MQA、GQA 有什么区别?FlashAttention 解决什么问题?
MHA / MQA / GQA
多头注意力的三种工程变体,核心是压缩 KV 头数以省显存(KV cache 是推理显存大头):
| 类型 | Q 头数 | KV 头数 | 特点 |
|---|---|---|---|
| MHA | h | h | 标准多头,效果最好、KV cache 最大 |
| MQA | h | 1 | 所有头共享一组 KV,最省但可能掉点 |
| GQA | h | g(1<g<h) | 折中,分组共享 KV,主流(LLaMA2-70B、Qwen) |
- 量化指标:MQA 把 KV cache 降为 MHA 的 1/h,GQA 降为 g/h。
- 现代大模型普遍用 GQA 平衡效果与显存。
FlashAttention
解决「注意力 O(n²) 显存」的 IO 优化:
- 传统实现把
n×n注意力矩阵写回 HBM(显存带宽瓶颈)。 - FlashAttention 用 tiling(分块)+ softmax 在线计算,让中间矩阵留在 SRAM,减少 HBM 读写,显存从 O(n²) 降到 O(n),速度大幅提升且数学等价。
- FlashDecoding 是其对**长序列解码(batch 小、query 少)**的扩展优化。
讲清「GQA 是 MHA 与 MQA 的折中、省 KV cache」;FlashAttention 强调「数学等价 + 减少 HBM 读写」,不改变结果只优化 IO。
大模型为什么会出现幻觉?有哪些成因?
什么是幻觉
模型生成看似合理但与事实不符的内容(编造事实、张冠李戴、无中生有)。它是概率生成 + 缺乏可靠知识约束的自然结果。
成因
- 训练目标:自回归「预测下一个 token」只优化语言流畅性,不优化事实正确性。
- 知识边界:训练数据有时效与覆盖缺口,模型把「不确定」也自信地「编」出来。
- 概率采样:生成策略的随机性放大偏差。
- 缺乏检索/校验:无外部知识锚点时,模型只能靠参数记忆「脑补」。
- 对齐不足:RLHF/DPO 更偏「讨好用户」而非「承认不知道」。
缓解方向
RAG(外接知识)、约束解码、事实核查/自一致性(Self-Consistency)、降低温度、让模型「不确定时说不知道」、工具调用校验。
先归因到「预测下一个 token 的训练目标不保证事实性」,再分「知识缺口、概率采样、无外部锚点」展开,最后落到 RAG/约束解码等缓解手段,与 RAG 主题衔接。
Encoder-only、Decoder-only、Encoder-Decoder 三种架构有什么区别?各适合什么任务?
三种架构
Transformer 可拆成 Encoder(双向注意力)与 Decoder(因果注意力)两部分,主流模型按「用哪部分」分成三类:
| 架构 | 注意力方式 | 代表模型 | 适合任务 |
|---|---|---|---|
| Encoder-only | 双向(能看到前后文) | BERT、RoBERTa | 分类、NER、检索等理解型 |
| Decoder-only | 单向因果(只看左侧) | GPT、LLaMA、Qwen | 自回归生成、对话、通用 |
| Encoder-Decoder | Encoder 双向 + Decoder 因果 | T5、BART | 翻译、摘要等序列到序列 |
核心区别
- Encoder-only:每个 token 能看到完整上下文,适合「看懂整句」的下游任务,但不能自回归生成文本。
- Decoder-only:用 causal mask 屏蔽未来 token,训练目标统一为「预测下一个词」,是当前通用大模型的绝对主流。
- Encoder-Decoder:编码器读入源序列、解码器生成目标序列,天然适配长度不对等的映射任务。
用「注意力方向」一句话区分:Encoder 双向、Decoder 单向因果、Encoder-Decoder 两者拼接;再落到任务适配:理解用 Encoder、生成用 Decoder、翻译/摘要用 Encoder-Decoder,并点出 GPT 系全是 Decoder-only。
GPT 系列(GPT-1 到 GPT-4)的架构是如何演变的?
演变脉络
| 版本 | 年份 | 参数量 | 关键变化 |
|---|---|---|---|
| GPT-1 | 2018 | 1.17 亿 | 12 层 Decoder-only,预训练 + 微调范式 |
| GPT-2 | 2019 | 15 亿 | 更大数据/模型,验证 zero-shot 能力 |
| GPT-3 | 2020 | 1750 亿 | 稀疏多任务,in-context learning 涌现 |
| GPT-4 | 2023 | 未公开 | 多模态、更强对齐(RLHF)、推测为 MoE |
核心不变与进化
- 架构基本不变:GPT-1 到 GPT-3 都是 Decoder-only Transformer,靠「堆层数、加数据、加参数」实现 scaling。
- 范式演进:从「预训练 + 微调」→「zero-shot」→「few-shot/上下文学习」,再到 GPT-4 的多模态与安全对齐。
- GPT-4 传闻采用 MoE(多个专家子网络),以更小的推理算力撑起更大总参数量。
强调「架构没大变、靠 scaling 与范式演进」,按「预训练微调 → 上下文学习 → 多模态/对齐」这条线讲,GPT-4 的 MoE 传闻可作为加分细节。
LLaMA 相对原始 Transformer 做了哪些改进?
四项核心改进
LLaMA(Meta,2023)在原始 Transformer 上做了四处「现代化」改造,成为后续开源模型(Qwen、Mistral 等)的模板:
| 改进点 | 原始 Transformer | LLaMA |
|---|---|---|
| 归一化 | Post-Norm + LayerNorm | Pre-Norm + RMSNorm |
| 激活函数 | ReLU | SwiGLU |
| 位置编码 | 正弦绝对位置 | RoPE |
| 规模 | d=512、6 层 | 更深更宽(7B: 32 层 d=4096) |
训练策略
- 提出「小模型 + 大算力 + 大量数据」:用更多高质量 token 训练小模型,推理时反而更强(Chinchilla 缩放定律思想)。
- 这些改进分别解决:训练稳定性(Pre-Norm)、表达力(SwiGLU)、长上下文(RoPE)、算力(RMSNorm)。
按「RMSNorm + SwiGLU + RoPE + Pre-Norm」四件套背诵,并说明每项解决什么问题,再补一句「小模型大算力」的训练理念。
什么是 causal mask(因果掩码)?为什么 Decoder 需要它?
概念
causal mask 是注意力矩阵上的上三角掩码:把「当前位置之后」的位置分数置为 -inf,softmax 后概率为 0,从而禁止每个 token 看到未来信息。
mask[i][j] = 0 (j <= i) 保留
mask[i][j] = -inf (j > i) 屏蔽未来为什么需要
- 自回归本质:生成第 t 个 token 时只能依赖 t 之前的 token,否则「看到答案」就是信息泄露。
- 训练并行化:训练时已知完整序列,用 teacher forcing + causal mask 一次性算出所有位置的预测,却保证每个位置的预测只用了左侧信息。
- 推理一致:推理逐个 token 生成,与训练时「只看左侧」保持一致。
讲清「上三角 -inf 屏蔽未来」与「训练可并行、推理自回归」这个关键,把 teacher forcing 和并行训练点出来。
self-attention 和 cross-attention 有什么区别?分别用在哪里?
区别
| 维度 | self-attention | cross-attention |
|---|---|---|
| 输入来源 | Q/K/V 来自同一序列 | Q 来自一个序列,K/V 来自另一个序列 |
| 作用 | 序列内部建模关系 | 两个序列间对齐与融合 |
| 位置 | Encoder、Decoder 各层 | Encoder-Decoder 的 Decoder 层 |
用在哪里
- self-attention:Encoder 内建模源句上下文,Decoder 内建模已生成部分(带 causal mask)。
- cross-attention:Decoder 的 Q 来自目标序列、K/V 来自 Encoder 输出,让「生成」关注「输入」,是翻译、摘要等 Encoder-Decoder 模型的核心。
- Decoder-only 模型(GPT)没有 cross-attention,只有 masked self-attention。
一句话「Q/K/V 同源是 self、异源是 cross」,再举例翻译中「解码器 query 去查编码器 key/value」就是 cross-attention,并说明 GPT 系没有它。
为什么主流大模型都选择 Decoder-only 架构?
原因
- 统一训练目标:全部任务都化为「预测下一个 token」,无需为不同任务设计不同目标。
- 因果注意力限制最小:双向注意力在长序列上的计算/显存更大;Decoder 用 KV cache 自回归推理更自然高效。
- 上下文学习能力:Decoder-only 的 next-token 目标让 few-shot/in-context learning 涌现得最好(GPT-3 验证)。
- scaling 友好:结构与目标简单,易于堆叠到千亿参数,符合 scaling law。
代价
失去双向信息,对「理解型」任务不如 Encoder,但可用更多数据与参数弥补,通用性更强。
核心是「统一自回归目标 + 涌现上下文学习 + scaling 友好」三条,再补一句「代价是单向注意力,但可用参数与数据换回」的辩证。
缩放点积注意力为什么要除以 √d_k?
原因
点积 Q·K^T 的每个元素是 d_k 个随机变量之和,方差随 d_k 线性增大。d_k 大时点积值落入 softmax 的饱和区(梯度接近 0),导致训练缓慢甚至不收敛。
数学
假设 Q、K 各分量独立、均值 0 方差 1,则点积方差为 d_k。除以 √d_k 使方差回到 1,softmax 输入落在非饱和区间,梯度稳定。
Attention(Q,K,V) = softmax(Q·K^T / √d_k) · V直接答「防止点积方差过大、softmax 进入饱和区导致梯度消失」,能提到「方差正比于 d_k、除以 √d_k 拉回单位方差」是满分级别。
稀疏注意力有哪些做法?滑动窗口、全局+局部、Longformer 分别是什么?
动机
标准注意力 O(n²),长序列无法承受。稀疏注意力只让每个 token 关注部分位置,把复杂度降到 O(n·k) 或 O(n)。
三类做法
| 做法 | 每个 token 关注 | 复杂度 | 代表 |
|---|---|---|---|
| 滑动窗口 | 前后各 w/2 个邻居 | O(n·w) | Longformer、Mistral |
| 全局+局部 | 少数全局 token + 窗口内邻居 | O(n·(w+g)) | Longformer、BigBird |
| 随机/分块 | 随机或分块选 token | O(n·k) | BigBird、Reformer |
- Longformer:结合滑动窗口 + 全局注意力(CLS 等特殊 token 关注全局)+ 扩张窗口,覆盖长文档。
- BigBird:随机 + 窗口 + 全局三种注意力组合,理论上近似全注意力。
讲「稀疏注意力的本质是牺牲全局、保留局部 + 少量全局 token」,把复杂度从 O(n²) 降到 O(n·w),并举例 Longformer 的「窗口 + 全局 + 扩张」三件套。
线性注意力(Linear Attention)的原理是什么?有什么优缺点?
原理
标准注意力 softmax(QK^T)V 是 O(n²)。线性注意力把 softmax 换成可分解的核函数 φ,利用矩阵结合律改变计算顺序:
Attention = φ(Q) · (φ(K)^T · V) 先算 φ(K)^T V(d×d),再乘 φ(Q)(n×d)复杂度从 O(n²·d) 降到 O(n·d²),长序列时几乎线性。
优缺点
| 维度 | 说明 |
|---|---|
| 优点 | 长序列算力/显存几乎线性,适合超长文本 |
| 缺点 | 去掉 softmax 后注意力无法稀疏化(softmax 指数放大近邻);建模能力弱于标准注意力 |
- 代表:Performer、Linear Transformer,RWKV 也借鉴了线性注意力的思想。
核心答「用核函数分解 softmax + 交换矩阵乘法顺序,O(n²)→O(n)」,再点出代价是「丧失 softmax 的稀疏性与表达力」,这是权衡点。
注意力计算中 softmax 的作用是什么?去掉 softmax 会怎样?
作用
softmax 把注意力分数(可为任意实数)映射为非负、和为 1 的概率分布:
- 归一化:保证加权求和是「凸组合」,输出量级稳定。
- 放大差异:指数函数让高分与低分差距拉开,注意力更聚焦(稀疏化)。
- 可导:配合交叉熵训练,梯度计算简单。
去掉会怎样
- 分数无界、无归一化,加权和可能发散或量级不稳。
- 注意力趋于「均匀关注所有位置」,失去聚焦能力,效果显著下降(这也是线性注意力的痛点)。
三条作用「归一化、指数放大差异、可导」都答到,并强调「去掉后注意力不聚焦、量级不稳」,能自然引出与线性注意力的联系。
什么是 sliding window attention?为什么能节省显存和算力?
概念
sliding window attention 让每个 token 只关注固定窗口内的前后 token(如窗口 w=4096),窗口外的位置不参与计算。
token_i 只关注 [i-w, i] 范围内的 token(Decoder 因果窗口)为什么省资源
- 算力:注意力从 O(n²) 降到 O(n·w),长序列收益巨大。
- 显存:KV cache 只存最近 w 个 token 的 K/V,O(w) 而非 O(n),与序列长度解耦。
- 代表:Mistral 系列用滑动窗口 + 分层窗口设计,在长文档上低成本运行。
代价
窗口外的远距离依赖丢失;可通过堆叠多层让信息逐层传递(第 k 层能看到约 k·w 范围)弥补。
讲清「窗口内注意力 + KV cache 固定 O(w)」这个省显存本质,并提到「多层堆叠扩大感受野」弥补全局信息丢失,Mistral 是典型代表。
ALiBi 位置编码的原理是什么?为什么它能外推?
原理
ALiBi(Attention with Linear Biases)不加位置向量,而是直接在注意力分数上按 token 距离线性衰减:
score = Q·K^T / √d_k - m · |i - j|每个注意力头用不同的斜率 m(几何递增),距离越远惩罚越大。
为什么能外推
- 惩罚是线性的,距离再大也只是线性衰减,不会出现「位置超出训练范围后 embedding 无意义」的问题。
- 训练短序列学到「按距离衰减」的规律,可直接泛化到更长的距离,无需额外插值。
- 论文显示 ALiBi 在训练 1k 长度下可外推到 2k、3k 甚至更长仍保持效果。
核心「位置信息不靠 embedding、靠线性偏置」,外推源于「线性规律可平滑延伸到未见距离」,与 RoPE 插值方案形成对比。
RoPE(旋转位置编码)的数学原理是什么?为什么能编码相对位置?
原理
RoPE 把位置信息编码为对 Q/K 向量的二维旋转:对 d 维向量按维度两两配对,第 i 对旋转角度为 θ_i · pos。
q' = q · R(θ·pos),R 是分块旋转矩阵
(q'_m)^T k'_n = q_m^T R(θ·(n-m)) k_n ← 点积只依赖相对位置 n-m为什么能编码相对位置
- 旋转是正交变换,保持向量模长不变,只改变「方向」。
- 两个旋转后的向量点积,其角度差恰好是
θ·(n-m),因此注意力分数天然只依赖相对距离。 - 同时保留绝对位置信息(每个 token 的旋转角度与绝对 pos 绑定),兼顾绝对与相对。
写出「旋转矩阵 + 点积只依赖 (n-m)」是核心,说明它「用正交旋转同时编码绝对位置、点积天然含相对位置」,这也是它外推好的原因。
位置编码的「外推」和「内插」有什么区别?
概念
- 外推(Extrapolation):让模型处理超过训练长度的序列,位置编码直接沿用公式计算训练外的新位置。
- 内插(Interpolation):把长序列的位置按比例压缩回训练长度内,避免出现「没见过的位置」。
对比
| 维度 | 外推 | 内插 |
|---|---|---|
| 做法 | 位置按公式继续外延 | 位置按缩放因子压缩(×L_train/L) |
| 代表 | ALiBi、NTK | Position Interpolation、YaRN |
| 风险 | 未见位置效果不稳 | 分辨率下降、相邻 token 混淆 |
- NTK-aware:不改位置、改 RoPE 的旋转基(频率缩放),属于「隐式外推」,比直接内插更平滑。
- YaRN:结合 NTK 与温度调节,兼顾外推与内插,效果更稳。
一句话「外推=直接算新位置、内插=把新位置压缩回旧范围」,再举例 ALiBi 外推、PI/YaRN 内插,NTK 是两者的折中。
为什么绝对位置编码难以外推到长序列?
原因
- 可学习绝对位置:训练只见过 [0, L-1] 的 embedding,位置 L、L+1 的 embedding 是随机初始化,模型完全无法利用。
- 正弦绝对位置:虽有解析公式可算任意位置,但模型在训练中未见过长距离位置对应的注意力模式,泛化差。
- 绝对位置把「位置」与「绝对坐标」强绑定,序列变长后坐标分布与训练分布偏移,效果退化。
解决思路
改用相对位置编码(ALiBi、RoPE)——它们编码的是「距离」而非「绝对坐标」,规律可平滑延伸到未见长度。
核心「绝对坐标强绑定 + 未见位置 embedding 无意义」导致分布偏移,进而引出「相对位置编码靠距离可外推」的解法。
Pre-Norm 和 Post-Norm 有什么区别?为什么现代模型用 Pre-Norm?
区别
| 维度 | Post-Norm(原论文) | Pre-Norm(现代主流) |
|---|---|---|
| 公式 | y = x + F(LN(x)) | y = LN(x + F(x)) |
| 梯度路径 | 归一化在残差分支内,梯度易消失 | 恒等路径通畅,梯度稳定 |
| 训练稳定性 | 深网络需 warmup,易震荡 | 无需精细 warmup,可直接深堆 |
为什么用 Pre-Norm
- 残差恒等映射不被归一化截断,梯度直通,堆叠几百层也不发散。
- 虽然 Pre-Norm 在浅层/同深度下可能略弱于 Post-Norm,但工程上「稳定训练千亿模型」的收益远大于这点损失。
写出两个公式并指出「归一化放残差分支内 vs 外」,Pre-Norm 让梯度沿恒等路径直通、深网络更稳,是千亿模型能训练的关键。
RMSNorm 的原理是什么?相比 LayerNorm 省了什么?
原理
LayerNorm 对每个 token 的隐向量做「减均值 + 除标准差」两步。RMSNorm 认为「平移」对效果影响很小,只保留均方根缩放:
LayerNorm: y = (x - μ) / σ · γ + β
RMSNorm: y = x / RMS(x) · γ RMS(x) = sqrt(mean(x²))省了什么
- 少算均值:省掉 μ 的统计与减法,计算量更低。
- 少一个参数 β:去掉偏置,参数量微降。
- 在 LLaMA/Qwen 等大模型上效果与 LayerNorm 相当,但训练/推理更快。
答「只做均方根缩放、去掉均值平移与偏置」,强调「省统计量 + 省参数 + 效果不降」,是 LLaMA 系标配。
GELU 和 SiLU(Swish)有什么区别?为什么替代 ReLU?
公式与区别
| 激活 | 公式 | 特点 |
|---|---|---|
| ReLU | max(0, x) | 负半轴为 0,x=0 不可导 |
| GELU | x·Φ(x)(Φ 为标准正态 CDF) | 平滑,BERT/GPT-2 使用 |
| SiLU/Swish | x·sigmoid(x) | 平滑非单调,LLaMA 系使用 |
- 三者都「负半轴被压制」,但 GELU/SiLU 是平滑、处处可导,梯度更稳定。
- SiLU 有轻微非单调(负区间先降后升),比 GELU 计算更简单(无 erf 近似)。
为什么替代 ReLU
ReLU 的「硬零」会杀死负梯度(死神经元),平滑激活保留少量负响应,信息流更连续,深度模型收敛更好。
写出公式并点出「平滑可导、负半轴非硬零」是替代 ReLU 的原因,SiLU 比 GELU 更省算、是 LLaMA 系选择。
什么是 GLU 门控结构?SwiGLU 为什么效果好?
GLU 结构
GLU(Gated Linear Unit)用门控相乘替代单一非线性:一个分支做激活门控、另一个分支线性投影,逐元素相乘:
GLU(x) = (x·W1 + b1) ⊙ σ(x·W2 + b2) σ 为门控激活SwiGLU
把门控的 sigmoid 换成 Swish,得到 SwiGLU(x) = Swish(x·W1) ⊙ (x·V),FFN 变为 W2 · SwiGLU(x)。
为什么效果好
- 门控乘法:让部分维度被选择性「通过/抑制」,比直接加偏置更灵活。
- 非线性增强:两个分支相乘引入更强表达能力,同等参数下效果优于 ReLU。
- LLaMA/PaLM 等实验证明 SwiGLU 在相同算力下收敛更快、效果更好(中间维度通常从 4× 调成约 8/3× 以平衡参数量)。
答「门控 = 双分支相乘、一个分支激活一个线性」,SwiGLU 用 Swish 门控 + 更强非线性,同等算力效果更好,注意「中间维度需调整平衡参数」。
BPE 的合并过程是怎样的?能否举例说明?
合并过程
BPE(Byte Pair Encoding)从字符级词表出发,反复合并出现频率最高的相邻符号对:
- 初始化词表为所有字符,语料按字符切分。
- 统计所有相邻符号对的频次,合并最高频的一对为新符号。
- 重复直到词表达到预设大小或合并次数。
举例
语料 low(5 次)、lower(2 次)、newest(6 次)、widest(3 次):
第一轮:频次最高对是 "e"+"s"(9 次)→ 合并为 "es"
第二轮:得到 "es"+"t"(9 次)→ 合并为 "est"
第三轮:继续合并最高频对……最终 lower → low + er、newest → new + est,罕见词被拆成高频子词组合。
讲清「统计最高频相邻对 → 迭代合并 → 词表达上限」三步,并能现场用 low/lower/newest 这类例子演示一轮合并。
什么是 OOV(未登录词)?子词分词如何解决?
概念
OOV(Out-of-Vocabulary)指词表中不存在的词。传统词级分词(按空格切词)遇到新词、专名、拼写变体时无法映射,只能退化为 UNK,信息丢失。
子词分词的解决
- 子词分词把词拆成更小的子词单元(如
unbelievable → un + believ + able),词表只需覆盖常见子词。 - 任何未见词都能用「已见过的子词」拼出来,理论上零 OOV(配合 byte-level 连任意字符都能表示)。
- BPE/WordPiece/SentencePiece 都属于子词分词,在「词表大小」与「覆盖」间折中。
核心「词级分词遇新词退化为 UNK,子词分词用子词拼装、零 OOV」,并举例 un+believ+able。
特殊 token(BOS/EOS/PAD/UNK)分别是什么?
四种特殊 token
| token | 全称 | 作用 |
|---|---|---|
| BOS | Beginning of Sequence | 序列开头标记,<s>/`< |
| EOS | End of Sequence | 序列结尾标记,生成到它即停止 |
| PAD | Padding | 补齐变长序列到固定长度,mask 掉不参与计算 |
| UNK | Unknown | 词表外词的兜底(子词分词下基本不用) |
关键点
- EOS 决定生成停止:模型输出 EOS 即终止,是自回归解码的「刹车」。
- PAD 需掩码:PAD 位置要在注意力中 mask 掉,否则污染其它 token 的表示。
- 现代大模型(LLaMA 等)常用
<s>兼作 BOS、</s>作 EOS;PAD 在批量推理中用于对齐长度。
说清「BOS 开头、EOS 停止、PAD 补齐需 mask、UNK 兜底」,并强调 EOS 是解码停止信号、PAD 必须屏蔽。
词表大小如何权衡?太大或太小各有什么问题?
权衡
词表大小 V 直接决定:embedding 矩阵规模(V×d)、输出层 softmax 计算量(V 类)、以及「平均每个词被切成几个 token」。
| 维度 | 词表太小 | 词表太大 |
|---|---|---|
| 序列长度 | 词被切太碎,序列变长 | 词多独立成 token,序列短 |
| 参数/算力 | embedding/softmax 小 | embedding/softmax 大(显存、计算) |
| 语义粒度 | 过碎,语义被割裂 | 更完整,但长尾词易稀疏 |
| 风险 | 长序列更贵、语义差 | 大矩阵开销、长尾词训练不足 |
- 现代大模型 V 通常在 3 万~25 万之间(如 LLaMA 32k、Qwen 15 万+),在「序列长度」与「softmax 开销」间取平衡。
- 结论:词表越大 → token 越少(成本低)但矩阵越大,需按语种与算力调优。
点出「V 决定 embedding/softmax 开销与切分粒度」,两难是「切太碎 vs 大矩阵」,举例 LLaMA 32k、Qwen 15 万这类实际数字。
什么是 byte-level BPE?为什么能覆盖所有字符?
概念
普通 BPE 以「字符」为最小单位,Byte-level BPE 以 **UTF-8 字节(0~255)**为最小合并单位。GPT-2 提出后成为 GPT 系默认。
为什么覆盖所有字符
- 任何 Unicode 字符都能编码成 1~4 个 UTF-8 字节,256 个字节符号可表示所有文字(中文、emoji、罕见符号)。
- 合并时在字节序列上做 BPE,即使遇到训练时未见过的字符,也能拆成字节级子词处理,彻底消除 OOV。
- 无需预分词(不依赖空格切词),语言无关,任意脚本都适用。
"😀" → 4 个 UTF-8 字节 → 可能被合并为 1~2 个字节级 token代价
字节序列更长,早期合并步数更多;但换来「零 OOV + 语言无关」,现代模型普遍接受。
核心「以 UTF-8 字节为基本符号、256 种字节覆盖一切字符」,换来零 OOV 与语言无关,代价是序列更长。
temperature 的原理是什么?为什么缩放 logits?
原理
temperature T 在 softmax 前缩放 logits,控制概率分布的「尖锐程度」:
p_i = softmax(z_i / T) = exp(z_i/T) / Σ_j exp(z_j/T)- T → 0:分布趋近 one-hot,几乎总选最高分 token,确定但单调。
- T = 1:原始分布。
- T → ∞:分布趋近均匀,随机性强、多样性高。
为什么缩放 logits
温度直接控制分布的熵:T 越大,logits 差异被「抹平」,采样更随机;T 越小,差异被「放大」,采样更确定。它是把「确定性 ↔ 多样性」的权衡交给一个标量参数,比直接改采样阈值更平滑。
写出 softmax(z/T),用「T→0 变 one-hot、T→∞ 变均匀」说明两端行为,并点出它本质是控制分布熵、平衡确定性与多样性。
top-p 和 top-k 有什么区别?各自的优缺点?
区别
| 维度 | top-k | top-p(nucleus) |
|---|---|---|
| 截断方式 | 固定取概率前 k 个 token | 取累计概率达 p 的最小集合 |
| 候选数 | 固定 k 个 | 动态,随分布形状变化 |
| 参数敏感性 | 分布平坦/尖锐都固定 k | 自适应分布 |
优缺点
- top-k:简单直观,但分布平坦时 k 太小会漏掉合理 token、分布尖锐时 k 太大又引入垃圾 token(k 难调)。
- top-p:动态截断,能自适应「平坦 vs 尖锐」分布,通常效果更稳;但 p 值本身也需调,极端时可能退化为只留 1 个或全留。
实践
两者常组合使用(先 top-k 后 top-p),对话生成常用 top-p=0.9。
一句话「top-k 固定个数、top-p 动态按累计概率」,点出 top-k 对分布形状不敏感是缺陷、top-p 自适应是优点,实践常组合。
repetition penalty 是什么?如何抑制生成重复?
概念
repetition penalty 对已经出现过的 token 在采样前做对数惩罚,降低它们再次被选中的概率:
z_i' = z_i - penalty 若 token i 已生成过(或 z_i / penalty,视实现)penalty > 1(如 1.1~1.3),已出现 token 的 logits 被压低,抑制重复。
抑制重复的多种手段
- repetition penalty:全局惩罚已生成 token。
- frequency penalty:按出现次数累加惩罚,次数越多压得越狠。
- presence penalty:只要出现过就固定惩罚,不随次数累加。
- no_repeat_ngram_size:禁止连续 n-gram 重复。
讲清「对已生成 token 的 logits 惩罚」,并区分 presence/frequency penalty(固定 vs 随次数累加)、no_repeat_ngram 这几类,能说 penalty 典型值 1.1~1.3。
beam search 的 beam size 如何影响生成质量与速度?
原理
beam search 每步保留 beam size(k) 条概率最高的候选序列,最后选整体概率最高的一条。k=1 退化为 greedy。
影响
| 维度 | k 小 | k 大 |
|---|---|---|
| 质量 | 可能局部最优、错过全局更优 | 更接近全局最优,连贯性更好 |
| 速度 | 快,几乎与 greedy 同速 | 慢,每步维护 k 条序列,约 O(k) 倍 |
| 多样性 | 单一 | 仍偏确定性,易「通用句式」 |
- 翻译/摘要常取 k=4~8;k 过大会变慢且收益递减,还引入「长度偏差」(需 length penalty 校正)。
- 对话/创意生成通常不用 beam,改用 sampling(beam 会让输出刻板)。
答「k=1 即 greedy,k 越大越接近全局最优但越慢」,点出「收益递减 + 长度偏差需 length penalty + 生成刻板」,说明为何对话不用 beam。
为什么 greedy 解码容易产生重复?如何缓解?
原因
- 局部最优陷阱:每步只取最大概率,一旦进入高频「循环」就难以跳出(如一直输出重复短语)。
- 无随机性:确定性解码对重复 token 没有任何扰动,容易陷入自增强的循环。
- 训练偏差:语言模型对常见 n-gram 有高概率,greedy 会反复选中。
缓解
- sampling/top-p/top-k:引入随机性打破循环。
- repetition/frequency penalty:惩罚已生成 token。
- no_repeat_ngram_size:硬禁止重复 n-gram。
- 提高 temperature 适当增加多样性。
归因「局部最优 + 无随机扰动」导致自增强循环,缓解手段落到「采样引入随机性 + repetition penalty + n-gram 禁止」三件套。
为什么中文比英文更费 token?这对成本有什么影响?
原因
- 无空格:英文以空格切词,中文需分词器切字/词,一个汉字常被切成 1 个或多个 token。
- UTF-8 多字节:汉字在 UTF-8 中占 3 字节,字节级 BPE 合并后,单个汉字往往就是 1~2 个 token,而英文一个单词(多个字母)可能也只 1 个 token。
- 词表覆盖:多数模型英文语料占比高,中文字符/词在词表中的子词粒度偏粗。
成本影响
- 同样语义,中文 token 数通常更多(粗略:1 汉字 ≈ 0.7~1.5 token,1 英文词 ≈ 1.3 token)。
- 影响:API 按 token 计费 → 中文更贵;上下文窗口更快占满 → 长文档处理更受限。
归因「无空格 + 多字节 UTF-8 + 词表英文偏置」三因,落到「中文更费 token → 更贵、窗口占更快」的成本结论。
上下文窗口越大越好吗?长上下文有什么代价?
代价
| 维度 | 代价 |
|---|---|
| 显存 | KV cache 随长度线性增长,长上下文显存爆 |
| 算力 | 注意力 O(n²),长度翻倍算力翻 4 倍 |
| 效果 | Lost in the Middle:中间信息易被忽略 |
| 训练成本 | 长序列训练昂贵,需插值/外推扩展 |
- Lost in the Middle:模型对长文首尾信息记得牢、中间容易丢,窗口大了不等于用得好。
- 实际应用:能短则短——窗口越大越贵越慢,且「位置编码外推」可能带来质量下降。
结论
不是越大越好,而是「按需选择」:够用即可,长上下文需配合 GQA/MLA、FlashAttention、稀疏注意力等手段控制成本。
辩证答「不是越大越好」:KV cache 线性涨、注意力平方涨、Lost in the Middle、训练成本高,落到「按需 + 工程优化压成本」。
什么是 attention sink?为什么首 token 很重要?
概念
attention sink(注意力汇)指初始 token(尤其首个 BOS/句首 token)会吸引大量注意力分数,即使它无语义信息,模型也倾向「把多余注意力倒给它」。这是流式注意力(StreamingLLM)等工作发现的现象。
为什么首 token 重要
- 软掩码的归处:模型对「不重要位置」不关注时,多余注意力需要一个「垃圾桶」,首 token 常扮演此角色。
- 数值稳定:softmax 要求每个 query 的注意力权重和为 1,总要有 token 承接被忽略的分数,首 token 承接后计算更稳定。
- 流式/超长推理:StreamingLLM 通过保留首 token + 滑窗,即使 KV cache 只存开头几个 token + 最近窗口,也能保持长文推理效果。
讲「首 token 承接多余注意力、是软掩码的垃圾桶」,并点出 StreamingLLM 利用它「保留首 token + 滑窗」做无限长流式推理。
什么是 perplexity(困惑度)?如何理解?
定义
perplexity(PPL)是语言模型的核心评估指标,衡量模型对测试语料「有多不意外」:
PPL = exp( - (1/N) Σ_i log p(w_i | w_<i) ) = exp(交叉熵)如何理解
- 本质是交叉熵的指数,可理解为「模型对下一个词的平均候选数」:PPL=50 意味着平均每个位置模型像在 50 个词里「猜」。
- PPL 越低越好:越低说明模型对真实文本的预测越确定、越接近真实分布。
- 用途:比较同词表/同语料下模型的语言建模能力;但 PPL 不等同于下游任务效果,也不适合跨词表直接比较。
写出 exp(平均负对数似然),用「平均候选数」直观解释(PPL=50 像在 50 词里猜),并点出「越低越好、但不能跨词表比、不等于下游效果」。
什么是 in-context learning(上下文学习)?
概念
in-context learning(ICL,上下文学习)指模型不更新参数,仅通过在 prompt 里给出「示例 + 问题」,就能完成新任务——模型从上下文的示例中「现学现用」。
示例:北京 → 中国;巴黎 → 法国
问题:东京 → ? 模型无需训练即可答「日本」关键点
- 零梯度更新:与微调(改变参数)本质不同,ICL 只是改变输入。
- 涌现能力:GPT-3 发现参数规模足够大时 ICL 能力涌现,小模型不明显。
- 机制:主流解释是 Transformer 注意力在做隐式「元学习/线性回归」,在上下文中临时构建任务映射。
核心「不更新参数、靠 prompt 示例现学」,强调是「大模型涌现能力、与微调相对」,机制可提「注意力隐式做元学习」。
什么是 few-shot 和 zero-shot?为什么 prompt 里给示例有效?
概念
- zero-shot:只给任务描述,不给示例,直接让模型作答。
- few-shot:在 prompt 里给少量(如 3~5 个)输入-输出示例,再给待答问题。
为什么给示例有效
- 激活能力:示例唤醒模型预训练中习得的相关知识/模式,让「怎么答、输出格式」更明确。
- 任务对齐:示例隐式定义任务边界与输出格式,减少歧义(in-context learning)。
- 分布校准:示例帮助模型对齐「输入分布 → 输出分布」,few-shot 通常比 zero-shot 稳定。
说清「zero-shot 无示例、few-shot 给少量示例」,有效源于「激活预训练能力 + 对齐任务格式 + 上下文学习」,并强调 few-shot 一般更稳但更费 token。
多语言大模型如何平衡各语言的能力?
挑战
「多语言诅咒(Curse of Multilinguality)」:固定模型容量下,语言种类越多,单语言能力可能被稀释,尤其低资源语言。
平衡手段
- 数据配比:按语言重要性调训练数据占比,防止高资源语言挤占(temperature sampling 上采样低资源语)。
- 共享词表/表示:用 byte-level 词表让多语言共享子词,复用表示能力。
- 多语言对齐:通过平行语料/跨语言预训练目标让表示跨语言对齐(如 XLM-R)。
- 指令/对齐数据多语言化:微调时覆盖多语言,保证指令遵循不只在英文上。
点出「多语言诅咒 + 容量稀释」是核心矛盾,手段落到「数据配比、共享词表、跨语言对齐、多语言微调」四条,能举 XLM-R 更佳。