大模型核心原理
Transformer / Self-Attention · 位置编码 · Tokenization · Scaling Law · 解码采样 · 涌现与对齐
🧠 一句话记忆锚点
大模型 = Self-Attention(任意位置直连 + 全并行,代价是 O(n²))+ 位置编码(注意力本身不知词序)+ Scale(Chinchilla 参数/数据等比) + 对齐(SFT→RLHF/DPO)。一切生成都归结为"预测下一个 token",输出风格由解码采样决定。
名词速查
首次阅读可跳过本表,直接看「场景问题」,遇到生词再回查。
本篇是模型本体这一组名词的归属页——下面这些词的完整解释(后台类比 + 系统职责 + 类比失效边界)只在这里展开,其他篇提到它们时只给一句话并链回本表。反过来,本篇正文里出现的推理侧、检索侧名词,其完整解释在各自归属页,本表末尾给出跳转。
| 名词 | 后台类比 | 在系统里干什么 | 类比失效边界 |
|---|---|---|---|
| Token | UTF-8 的一个码点 / protobuf 的一个 field——协议里的最小编码单元 | 模型的输入输出全是 token id;上下文长度、计费、限流都按它计数 | 码点边界与字符一一对应,token 边界不按字/词切:一个汉字常占 1~2 token,一个英文单词可能被拆成几个 subword。别用 len(str) 估 token 数,得实际过一遍 tokenizer |
| Tokenization / BPE / BBPE | 字典压缩编码——像 gzip 先建词典再映射成定长 id | 把文本按"高频子串优先"切成词表内的 subword 再查 id,在词表大小与 OOV 之间取平衡;BBPE 在字节级切分,天然无 OOV | gzip 的目标是无损还原,BPE 的目标是"高频子串成词"——它会把罕见词、专业术语切得很碎,同一概念的不同写法可能切成完全不同的 id 序列。且词表训完不能增量加词,加词等于换 embedding 层 |
| 词表(Vocabulary) | 静态枚举表 / 码表,id ↔ 字符串一一映射 | 决定 embedding 矩阵的行数与输出层 softmax 的维度 | 业务枚举随时能加值;词表加一个词要同时动 embedding 层和输出层的形状,等于换一个模型,没法热更新 |
| RNN / LSTM | 串行处理的流式管道——第 t 条必须等第 t-1 条算完 | Transformer 之前的序列模型:靠一个隐状态一路往下传递上下文。本篇只用它做对照,说明为什么 2017 年后全换成了 Transformer | 流式管道慢是因为单条处理耗时,加机器分片就能并行;RNN 的串行是算法内在的——第 t 步依赖第 t-1 步的隐状态,加多少卡都无法并行化训练。且长程信息靠隐状态逐步传递会梯度消失,隔几十个 token 就丢了 |
| Self-Attention | 服务发现里拉全量节点列表、逐个打分再加权聚合(all-to-all 广播 + 加权归并) | 让序列里任意两个位置直接建连(路径长度 O(1) 而非 RNN 的 O(n)),且整段可一次性并行计算 | 服务发现的权重是静态配置读出来的;attention 权重是每次前向按内容现算的。且 all-to-all 的代价是 O(n²)——序列翻倍,算力翻四倍,这是后面所有长上下文优化的根源 |
| Q / K / V | 一次带权的 join:Q 是查询条件、K 是索引列、V 是要取的值列 | Q·Kᵀ 算相似度当权重,softmax 归一化后对 V 加权求和,得到融合了上下文的新表示 | SQL join 是命中/不命中的硬匹配,不命中就没这行;attention 对所有行都给一个 softmax 软权重,没有"不命中"这回事——不相关的 token 也会带着小权重掺进结果 |
| 多头注意力(Multi-Head) | 同一份数据建多个二级索引,各按不同维度排序 | 在多个低维子空间里并行捕捉不同关系(语法依赖、指代、位置远近),拼接后再线性融合 | 二级索引是人按业务显式设计的;哪个头学到什么无人指定也无法保证,实测有大量冗余头可以剪掉而几乎不掉点 |
| 因果 mask(Causal Mask) | 只读快照隔离——第 t 步只能看见 t 时刻之前已提交的数据 | 训练时屏蔽未来位置,保证"预测下一个 token"的目标与推理时逐 token 生成一致 | 隔离级别是运行时可切换的参数;因果 mask 写死在架构里,Decoder-only 模型没有"临时看一下未来"的开关——这也是它做不了 BERT 那种双向理解任务的原因 |
| 位置编码 / RoPE / ALiBi | 消息序列号(Kafka offset / TCP seq)——没有它,乱序到达就无法还原顺序 | attention 本身对位置无感(排列不变,亦作 置换等变:把输入打乱顺序,输出集合原样不变——它眼里输入是个袋子不是队列),必须显式注入位置信息。RoPE 用旋转注入相对位置、ALiBi 用线性衰减偏置,两者都便于长度外推 | seq 号是精确整数,越界了只是溢出报错;位置编码是连续信号,推理长度远超训练长度时不报错、而是平滑退化成语义漂移和胡言乱语——这种失败没有明确的边界告警 |
| Next-Token Prediction | append-only log 的唯一写接口——所有操作都被编译成同一个 op | 预训练与推理共用同一个目标:给定前缀算下一个 token 的分布。分类、翻译、对话、few-shot 全部由它承载 | log 里每条记录是确定的;这里每一步是从概率分布采样——同样的输入两次,输出可以不同(除非温度为 0 且实现完全确定) |
| Scaling Law / Chinchilla | 容量规划曲线——按 QPS 预估机器数的那条经验拟合线 | 给定算力预算,指导参数量与训练 token 数怎么配比(Chinchilla:两者大致等比放大,约 20 token/参数) | 容量曲线可以线性外推;Scaling Law 是幂律,且在高质量数据枯竭、语料重复时会拐弯——外推到远端的预测不可信,只能当区间内的经验规律 |
| temperature / top-k / top-p | 灰度放量的采样比例开关——决定从候选集里放多宽 | temperature 缩放 logits 改变分布陡峭度;top-k 截断到概率最高的 k 个;top-p(nucleus)截断到累积概率达 p 的最小集合 | 灰度比例是确定的流量百分比,调大就是线性放量;这三个参数改的是分布形状,不保证"多样性"线性增加——温度调过高不是"更有创意",而是直接语法崩坏 |
| beam search | 带宽度限制的 BFS——每层只保留最优 k 条路径 | 搜整体似然更高的完整序列,适合翻译/摘要这类"有唯一较优解"的任务 | BFS 的代价函数是确定的路径开销;beam 的打分是长度敏感的对数似然,会系统性偏好短句,且在开放式对话里产出乏味重复的文本——所以聊天场景反而不用它 |
| repetition penalty | 去重/防抖开关——对已出现过的项降权 | 对已生成过的 token 的 logits 施加惩罚,抑制复读机式循环 | 去重是二值的(去掉或留下);这里是连续降权,惩罚给大了会把该重复的词也压掉(人名、专业术语、代码里的变量名),产出前后不一致 |
| 涌现能力(Emergent Ability) | 规模跨过阈值后的相变——像连接数过线后雪崩、缓存命中率过线后延迟陡降 | 描述某些能力(多步推理、指令遵循)在小模型上近乎为零、参数量过线后陡然出现 | 雪崩有明确机理和可测算的阈值;涌现的"突变"部分是评测指标造成的——把 0/1 判分换成连续指标后曲线其实是平滑的。别把它当可预测的工程拐点来做规划 |
| 对齐(Alignment) | 上线前的验收 + 灰度调参——底座能力不动,改的是"输出符合期望的行为" | 让模型从"会续写"变成"会听指令、会拒绝有害请求":SFT 学格式与风格,RLHF/DPO 学人类偏好排序 | 验收不改代码;对齐真实改动权重,且可能损失部分底座能力(俗称"对齐税")。三种手段的目标与代价对比详见 微调策略选型 |
同名异义:embedding 在两个上下文里不是一回事
这是最容易埋雷的一处——两侧都叫 embedding,但指的是不同东西,各自只在自己的归属页展开:
| 上下文 | 在本上下文里指什么 | 归属页 |
|---|---|---|
| 模型本体(本篇) | token embedding:词表里每个 token id 对应的一行向量,是模型的内部参数,由 embedding 矩阵查表得到,随训练更新 | 本页(见"实现方案") |
| 检索 | 文本 embedding:一整段文本压成一个语义向量,是模型的输出产物,用来算文本之间的相似度、灌进向量库 | RAG 检索增强生成 |
一句话记住差别:token embedding 是模型肚子里的权重,文本 embedding 是模型吐出来的结果。把两者混为一谈,就会推出"换个 embedding 模型能改善模型的语言能力"这类错误结论。
本篇引用的其他上下文名词
| 名词 | 在本篇里的角色 | 完整解释去哪读 |
|---|---|---|
| Prefill / Decode / KV Cache | 采样这一步在完整推理流程里的位置 | 推理与微调优化 · 名词速查 |
| MoE(混合专家) | 影响"temperature=0 是否完全确定"的一个因素(路由带来微小非确定性) | 推理与微调优化 · 名词速查 |
| SFT / RLHF / DPO | 对齐的三种具体手段 | 微调策略选型 · 名词速查 |
| 文本 embedding / 向量相似度 | 与 token embedding 对照消歧 | RAG · 名词速查 |
场景问题
为什么是 Transformer,不是 RNN/LSTM?
一个绕不开的面试起点:给定一段文本预测下一个 token,为什么 2017 年后大家全换成了 Transformer?
- RNN/LSTM 的两个死穴:① 时序依赖无法并行——第 t 步必须等第 t-1 步算完,训练慢;② 长程依赖靠隐状态一路传递,梯度消失,隔几十个 token 的信息就丢了。
- Transformer 的答案:用 Self-Attention 让序列里任意两个位置直接建立连接(路径长度 O(1) 而非 O(n)),且整段序列可一次性并行计算。代价是注意力的 O(n²) 复杂度——这是后面所有"长上下文优化"的根源。
主流大模型都是 Decoder-only
原始 Transformer 是 Encoder-Decoder(翻译任务)。今天主流生成式大模型(GPT、LLaMA、Qwen、Claude)几乎都是 Decoder-only:
| 结构 | 代表 | 适合 |
|---|---|---|
| Encoder-only | BERT | 理解类(分类 / 抽取 / 检索 embedding) |
| Encoder-Decoder | T5 / BART | 序列到序列(翻译 / 摘要) |
| Decoder-only | GPT / LLaMA / Qwen | 自回归生成,统一用"预测下一个 token"做所有任务 |
Decoder-only 胜出的核心原因:任务大一统——预训练与推理都是同一个"next-token prediction",天然适配指令、对话、few-shot;架构简单、易 scale。
实现方案
Self-Attention:缩放点积注意力
打个比方:一次 attention 就是一条带权的 join ——Q 是查询条件,K 是索引列,V 是要取的值列。拿 Q 去和每个 K 比一比算出相似度当权重,再按权重把各个 V 加权求和。类比失效边界:SQL join 是硬匹配,不命中就没这行;attention 对所有行都给一个 softmax 软权重,没有"不命中"这回事——不相关的 token 也会带着小权重掺进结果。而且它是 all-to-all 的,代价是 O(n²):序列翻倍算力翻四倍,这是后面所有长上下文优化的根源。
一句话:每个 token 用自己的 Query 去和所有 token 的 Key 做相似度打分,softmax 归一化成权重,再对所有 Value 加权求和——得到"融合了上下文的新表示"。
Attention(Q, K, V) = softmax( Q·Kᵀ / √d_k ) · V
为什么要除以 √d_k:因为维度越高,点积的数值越大——两个 128 维向量的点积,天然比两个 8 维向量的点积大一个量级。而 softmax 只看数值的相对差距:喂给它一组差距悬殊的大数,它会把几乎全部权重压给最大的那一个,其余趋近 0。除以 √d_k 就是把分数拉回到与维度无关的尺度,让权重分布保持"有区分但不极端"。
代一遍数字(d_k = 128,两组打分只差一点):
不缩放:点积 ≈ [40, 36, 32] → softmax ≈ [0.98, 0.018, 0.0003] 几乎只看第一个
缩放后:除以 √128 ≈ 11.3
→ [3.54, 3.19, 2.83] → softmax ≈ [0.44, 0.31, 0.25] 三者都参与
所以工程上意味着什么:不缩放的话,注意力会退化成"只看最相似的那一个 token",等于丢掉了加权聚合的全部意义;而且极端的 softmax 在训练时几乎传不回梯度,模型学不动。这个除法不是数学洁癖,是让 attention 能正常工作的必要条件。
下图直观展示这个过程:当前 token 的 Query 依次给每个 Key 打分(扫描光束),softmax 归一化成权重(右侧长条),再按权重把各 Value 加权汇聚成"新表示"。权重高的 Key(K2)贡献最大。
- Q/K/V 都是输入 embedding 经三个可学习矩阵
W_Q / W_K / W_V线性变换得到。 - 除以 √d_k:见上文的算例——维度越高点积越大,不缩放 softmax 会把权重全压给最大那个,注意力退化成"只看最像的一个"且梯度传不回来。
- 多头(Multi-Head):把 Q/K/V 切成 h 份并行做注意力,再拼接——每个头学不同的关注模式(语法 / 指代 / 位置…),类似 CNN 的多通道。
- 因果 mask(Causal Mask):生成时第 t 个 token 只能看到 ≤ t 的位置,把上三角置为
-∞,softmax 后为 0——保证"不偷看未来"。
import numpy as np
def scaled_dot_product_attention(Q, K, V, causal=True):
# Q,K,V: [seq_len, d_k]
d_k = Q.shape[-1]
scores = Q @ K.T / np.sqrt(d_k) # [seq, seq] 相似度矩阵
if causal: # 因果 mask:屏蔽未来位置
mask = np.triu(np.ones_like(scores), k=1).astype(bool)
scores[mask] = -1e9
scores = scores - scores.max(-1, keepdims=True) # 数值稳定
weights = np.exp(scores)
weights /= weights.sum(-1, keepdims=True) # softmax
return weights @ V # 对 Value 加权求和
打个比方:自回归生成就像接龙作文——每写一个字之前,都要把前面所有字从头扫一遍再决定下一个(Self-Attention 全上下文打分),因果 mask 又规定绝对不许偷看后面还没写的字(
-∞屏蔽上三角)。KV Cache 相当于把"已经读过的段落"提前记好笔记,下一次接龙只算新字的问题,不再重扫一遍。类比失效边界:真实接龙可以停下来"这句不好"再改一遍,自回归却是一路向下、无法回退——早期一个错 token 会污染后面全部生成,只能从错处重开;KV Cache 又是显存换算力,超长上下文一撞显存红线要么截断、要么代价陡增,绝非"越长越聪明"。
一个完整的 Decoder Block = Masked Multi-Head Attention → 残差 + LayerNorm → FFN(前馈) → 残差 + LayerNorm,堆叠 N 层。残差连接解决深层网络梯度问题,LayerNorm 稳定训练(现代模型多用 Pre-LN + RMSNorm)。
这一节记住三句话
- 注意力是一次软 join:Q 拿去和所有 K 打分,softmax 成权重后对 V 加权求和——没有"不命中",不相关的 token 也会带小权重掺进结果。
- 代价是 O(n²) 且写死在架构里:序列翻倍算力翻四倍,因果 mask 没有"临时看一下未来"的开关——长上下文优化与 Decoder-only 做不了双向理解,根子都在这里。
- 一个 Block 是四件套堆 N 层:Masked Attention → Add&Norm → FFN → Add&Norm;残差治梯度、LayerNorm 稳训练,现代模型换成 Pre-LN + RMSNorm。
位置编码:注意力本身"看不见顺序"
Self-Attention 是排列不变的——打乱输入顺序,输出集合不变。必须显式注入位置信息:
- 正弦绝对编码(原版):用不同频率的 sin/cos 给每个位置一个固定向量,加到 embedding 上。简单但外推差。
- RoPE(旋转位置编码,LLaMA/Qwen 主流):把位置信息以旋转方式作用到 Q/K 上,天然编码相对位置,且有一定长度外推能力(配合 NTK/YaRN 插值可扩窗口)。
- ALiBi:直接在注意力分数上按距离加线性偏置,训练短、推理长的外推能力强。
Tokenization:模型眼里没有"字",只有 token
文本先切成 token(子词单元)再查 embedding 表。主流是 BPE / BBPE / SentencePiece:
- BPE(Byte-Pair Encoding):从字符开始,反复合并"最高频相邻对",直到词表达到设定大小。高频词整体成 token,低频词拆成子词——平衡词表大小与 OOV。
- BBPE(Byte-level BPE,GPT 系):在字节上做 BPE,任何 UTF-8 文本都能编码,永不 OOV,对中文/emoji 友好。
工程影响:① 中文一个字常占 1~2+ token,计费和上下文长度按 token 算;② prompt 里的空格、换行都是 token;③ 数字/罕见词被拆碎会影响数学能力。
预训练目标与 Scaling Law
- 预训练目标:Decoder-only 用自回归语言建模——最大化整段序列的
∏ₜ P(xₜ | x_<ₜ),即"预测下一个 token"。损失是交叉熵(等价于最小化困惑度 Perplexity)。 - Scaling Law:模型能力随参数量 N、数据量 D、算力 C呈幂律平滑提升。Chinchilla(DeepMind)修正了早期"堆参数"的偏见:给定算力预算,参数与数据应大致等比例增长(约 20 tokens/参数),此前的大模型多是"参数过大、数据喂不够"。
解码采样:同一个模型,输出风格由采样决定
模型每步输出的是全词表的概率分布,怎么从中选下一个 token 就是解码策略:
| 策略 | 做法 | 特点 |
|---|---|---|
| Greedy | 每步取概率最大 | 确定、易复读、乏味 |
| Beam Search | 保留 top-b 条候选序列 | 适合翻译/摘要,开放生成易呆板 |
| Temperature | logits 除以 T 再 softmax | T↑ 更随机有创意,T↓ 更保守 |
| Top-k | 只在概率前 k 个里采样 | 截断长尾 |
| Top-p(Nucleus) | 只在累积概率达 p 的最小集合里采样 | 动态截断,主流默认 |
| Repetition Penalty | 对已出现 token 降权 | 抑制复读 |
面试常问:"temperature=0 是否完全确定?"——理论上贪心确定,但受浮点/并行归约顺序、MoE 路由等影响,实际仍可能有微小非确定性。
这一步在完整推理流程中的位置:采样是
generate()的第 ⑥ 步,位于「输出层算出 logits」之后、「停止条件判定」之前,每生成一个 token 就执行一次。从 tokenize 到流式回传的完整链路、以及每一步对应哪个可观测指标(TTFT / TPOT),见 推理与微调优化 · 一次generate()的端到端流程。
为什么这么做
为什么 O(n²) 是"原罪"也是"取舍"
注意力要算 n×n 的相似度矩阵,序列翻倍则计算和显存都是 4 倍。为什么还用它?
- 换来的是任意位置直连 + 全并行,这是 RNN 给不了的表达力与训练效率。
- n² 的痛点催生了一整套优化:稀疏/滑窗注意力、FlashAttention(省显存不改结果)、线性注意力、以及推理侧的 KV Cache——详见 推理与微调优化。
为什么需要对齐(Alignment)
预训练只学会了"续写互联网文本",并不天然"听话、有用、无害"。要变成可用的助手需对齐三步:
- SFT(监督微调):用高质量"指令-回答"对,教模型follow instruction。
- RLHF / DPO:用人类偏好数据训练,让输出更符合人类偏好(有用/诚实/无害)。
- 系统提示 + 护栏:运行时约束角色与边界。
为什么别的选择不行
常见误区与澄清
| 误区 | 澄清 |
|---|---|
| "参数越多一定越强" | Chinchilla:数据不够时,大参数是浪费;小而喂饱的模型可反超 |
| "上下文窗口越大越好" | 有 O(n²) 开销 + "迷失在中间"(middle 信息利用差);长窗≠会用长窗 |
| "temperature 越高越聪明" | 只是更随机;推理/代码任务通常要低温甚至贪心 |
| "微调就能加知识" | 微调擅长改风格/格式/能力,加事实知识常更适合 RAG |
| "BPE 按词切" | 按高频子词/字节切,一个中文字可能是多个 token |
| "Attention 知道词序" | 不知道,全靠位置编码注入 |
为什么不直接无限堆层/堆窗口
- 层数堆太深收益递减且难训(靠残差 + Norm 缓解,但仍有瓶颈)。
- 窗口靠 O(n²) 硬扩会撞显存墙;工程上靠 RoPE 插值(NTK/YaRN)、稀疏注意力、外部检索(RAG)分摊,而非无脑加长。
沉淀结论
心法总结
大模型 = Transformer(Self-Attention 全连接 + 位置编码)× Scale(Chinchilla 最优的参数/数据配比)+ 对齐(SFT→RLHF/DPO)。 一切生成行为都归结为"预测下一个 token",而输出风格由解码采样控制;O(n²) 注意力是能力之源,也是所有长上下文与推理优化的战场。
面试常见问题清单(按主题分类)
架构
- Q:为什么 Transformer 取代 RNN/LSTM? A:Self-Attention 让任意两位置直连(路径 O(1))且整段并行;RNN 串行不能并行、长程靠隐状态传递会梯度消失。代价是注意力 O(n²)。
- Q:为什么主流大模型是 Decoder-only? A:任务大一统——预训练与推理都是同一个 next-token prediction,天然适配指令/对话/few-shot,架构简单易 scale。
- Q:Attention 为什么除以 √d_k? A:维度越高点积数值越大,softmax 只看相对差距——不缩放它会把权重几乎全压给最大那一个(注意力退化成"只看最像的一个 token"),且极端 softmax 梯度趋零、训练不稳。缩放把分数拉回与维度无关的尺度。
- Q:多头注意力的意义? A:把 Q/K/V 切成 h 份并行,各头学不同关注模式(语法/指代/位置),类似 CNN 多通道。
位置与分词
- Q:注意力知道词序吗?怎么注入位置? A:不知道(排列不变),必须显式注入——正弦绝对编码 / RoPE(相对位置、可外推)/ ALiBi(距离线性偏置)。
- Q:一个中文字是几个 token? A:不定,常 1~2+ 个;BPE/BBPE 按高频子词/字节切,计费与上下文长度都按 token 算。
训练与解码
- Q:Scaling Law 与 Chinchilla 的结论? A:能力随 N/D/C 幂律提升;给定算力,参数与数据应约等比例增长(~20 tokens/参数),别一味堆参数。
- Q:temperature=0 是否完全确定? A:理论上贪心确定,但受浮点/并行归约顺序、MoE 路由影响,实际仍可能有微小非确定性。
- Q:Top-k 与 Top-p 区别? A:Top-k 固定候选个数;Top-p(Nucleus)按累积概率动态截断,是主流默认。
能力边界
- Q:加事实知识该微调还是 RAG? A:微调擅长改风格/格式/能力;加事实/时效知识优先 RAG。
- Q:上下文窗口越大越好吗? A:否,有 O(n²) 开销 + "迷失在中间",长窗≠会用长窗。
延伸阅读:推理与微调优化 · RAG 检索增强生成 · Agent 开发
记忆口诀
- Self-Attention:QKV 打分 / softmax 加权 / 任意位置直连 O(1) / 代价 O(n²)
- 架构选型:Encoder-only 理解 / Encoder-Decoder 翻译 / Decoder-only 生成大一统
- 位置编码:注意力排列不变 / 正弦绝对 / RoPE 相对可外推 / ALiBi 距离偏置
- 分词计费:BPE 高频子词 / BBPE 字节永不 OOV / 中文一字多 token
- Scale 配比:Chinchilla / 参数数据等比 / ~20 tokens 每参数
- 解码采样:Greedy 确定 / Temperature 随机度 / Top-k 定数 / Top-p 动态截断
- 对齐三步:SFT 指令 → RLHF/DPO 偏好 → 系统提示护栏
内容来源
综合整理:Attention Is All You Need(Vaswani 2017)、GPT/LLaMA/Chinchilla 论文、RoPE/ALiBi 论文、Hugging Face 与各家官方文档(2026-07;领域更新快,请以最新论文与官方文档为准)。
自测:合上资料能说清楚吗?
- Transformer 靠什么取代了 RNN/LSTM?付出的代价是什么?
参考答案
用 Self-Attention 让任意两位置直连(路径 O(1))且整段并行,解决了 RNN 的串行不可并行与长程梯度消失。代价是注意力的 O(n²) 计算/显存开销,成为长上下文优化的战场。
- 为什么 Self-Attention 需要额外的位置编码?列举两种主流方案。
参考答案
注意力排列不变,打乱顺序输出集合不变,本身"看不见词序"。主流:RoPE(旋转编码,天然编码相对位置、可外推)、ALiBi(按距离加线性偏置,短训长推);原版是正弦绝对编码。
- 对比 Top-k 与 Top-p(Nucleus)采样的区别,各自特点是什么?
参考答案
Top-k 固定候选个数 k,长尾概率分布不均时可能仍过窄或过宽;Top-p 按累积概率取达 p 的最小集合,动态截断、随分布自适应,是主流默认。二者都在截断长尾、平衡多样性与质量。
- 对比"微调"与"RAG",加入新知识该选哪个?
参考答案
微调擅长改风格/格式/能力,把知识"焊死"进权重、更新成本高、易遗忘;RAG 把知识放外部库检索注入,适合事实/时效类知识,可增删溯源。加事实优先 RAG,改行为风格用微调。
- Chinchilla 修正了此前"堆参数"的什么偏见?给出结论。
参考答案
此前大模型多参数过大、数据喂不够。Chinchilla 指出:给定算力预算,参数 N 与数据 D 应大致等比例增长(约 20 tokens/参数),小而喂饱的模型可反超参数更大者,能力随 N/D/C 呈幂律提升。