Agent 速成笔记 · 第 3 章 大语言模型基础
Agent 速成笔记 · 第 3 章 大语言模型基础
源:Datawhale《Hello-Agents》第 3 章 | 定位:概念与原理 | 一句话:讲清 Agent 的「大脑」——LLM 的架构原理、交互方式、能力来源与固有边界
0. 一章速览(30 秒)
- 一句话:LLM 的本质是「给定前文,预测下一个最可能的词元」的自回归模型;Transformer 的自注意力让它摆脱循环、可并行,直接建立任意两词元间的依赖;Agent 的一次「思考」就是一次 token 序列进、token 序列出的调用。
- 本章解决什么问题:Agent 的「大脑」怎么工作——知识与推理能力从哪来、为什么会有幻觉,以及开发者能拧动哪些旋钮(提示、采样参数、模型选型)。
- 必须记住的 5 个点:
- 自注意力公式 \(\text{Attention}(Q,K,V)=\text{softmax}(QK^{T}/\sqrt{d_k})V\):Q 是「提问」、K 是「索引」、V 是「内容」,本质是按内容做加权检索,而非按位置。
- 自注意力不含顺序信息,必须额外注入位置编码;Decoder-Only 靠因果掩码保证训练时不「偷看」未来。
- 采样参数决定输出的确定/发散:温度改变分布形状,Top-k / Top-p 改变候选集大小,同设时优先级为 温度 → Top-k → Top-p。
- 上下文窗口与 API 计费都以 Token 计;分词粒度还会制造「
2+2算错」这类怪现象。 - LLM 有幻觉、知识截止、偏见三大固有缺陷;缩放法则说明能力随规模平滑提升并「涌现」,复杂 Agent 必须选足够大的模型。
1. 从 N-gram 到 Transformer(3.1.1)
1.1 语言模型要算什么
语言模型(Language Model, LM)的根本任务是计算一个词序列(句子)出现的概率——概率越高,句子越「通顺自然」。它是智能体理解人类指令、生成回应的基础。句子 \(S=w_1,\dots,w_m\) 的概率按链式法则拆成条件概率连乘:
\(w_i\) 是第 \(i\) 个词,\(P(w_i\mid w_1,\dots,w_{i-1})\) 表示「已知前 \(i-1\) 个词时第 \(i\) 个词出现的概率」。该式无法直接计算——长词序列可能从未在语料库中出现过。
1.2 N-gram 与马尔可夫假设
马尔可夫假设(Markov Assumption):不必回溯一个词的全部历史,一个词的出现概率只与它前面有限的 \(n-1\) 个词有关。基于此的模型就是 N-gram 模型,N 代表上下文窗口大小。条件概率由此大幅简化:
概率用最大似然估计(Maximum Likelihood Estimation, MLE) 估——最可能出现的,就是数据里出现次数最多的:
\(Count(w_{i-1},w_i)\) 是词对连续出现次数,\(Count(w_{i-1})\) 是单词出现总次数。以语料 datawhale agent learns、datawhale agent works(共 6 词)为例,句子 datawhale agent learns 的概率为 \(2/6\times 2/2\times 1/2\approx0.167\)。
N-gram 有两个致命缺陷(高频考点):一是数据稀疏性(Sparsity),从未出现的词序列概率直接为 0,平滑(Smoothing)只能缓解无法根除;二是泛化能力差,模型把词当作孤立离散的符号,理解不了语义相似性——见过很多次 agent learns,却算不出 robot learns。
1.3 神经网络语言模型与词嵌入
2003 年 Bengio 等人提出的前馈神经网络语言模型(Feedforward Neural Network Language Model) 改用连续向量表示词:把每个词映射为高维连续向量空间中的一个点,该向量称词嵌入(Word Embedding),语义相近的词向量位置也相近(agent 近 robot、远 apple);再用神经网络学习「前 \(n-1\) 个词的词向量 → 下一个词的概率分布」这一映射。关键性质是词嵌入并非人工标注,而是训练中自动学出来的。度量相似度常用余弦相似度(Cosine Similarity):
\(\vec a\cdot\vec b\) 是点积,\(|\vec a|,|\vec b|\) 是模长,结果落在 \([-1,1]\):夹角 0° 为 1(完全相关),90° 为 0(无关),180° 为 -1(完全负相关)。经典证据是 vector('King') - vector('Man') + vector('Woman') 与 vector('Queen') 极为接近,说明向量空间学到了「性别」「皇室」这类抽象概念。遗留限制:上下文窗口仍固定,只能看前 \(n-1\) 个词。
1.4 RNN 与 LSTM:给网络加「记忆」
循环神经网络(Recurrent Neural Network, RNN) 引入隐藏状态(hidden state) 向量,可理解为短期记忆:每步读入当前词,结合上一时间步的隐藏状态,生成新的隐藏状态传给下一刻。其病灶是长期依赖问题(Long-term Dependency Problem)——序列长度等于网络深度,序列一长,梯度反向传播经过多次连乘会迅速趋向零(梯度消失)或变得极大(梯度爆炸)。长短时记忆网络(Long Short-Term Memory, LSTM) 是为解决该问题设计的特殊 RNN,核心创新是细胞状态(Cell State) 加门控机制(Gating Mechanism):细胞状态是独立于隐藏状态的信息通路;门控由小型神经网络构成,学习性地决定信息是否通过——遗忘门丢弃上一时刻细胞状态中的部分信息,输入门把当前输入的新信息存入细胞状态,输出门决定从细胞状态输出哪些信息到隐藏状态。但瓶颈仍在:RNN/LSTM 必须按顺序处理,第 \(t\) 步要等第 \(t-1\) 步算完,无法大规模并行,直接限制了模型规模与训练速度。
2. Transformer 架构解析(3.1.2)
Transformer 于 2017 年由谷歌团队在《Attention is all you need》中提出,它完全抛弃循环结构,只依赖注意力(Attention) 机制捕捉序列内依赖,从而实现真正意义上的并行计算。
2.1 Encoder-Decoder 整体结构
最初的 Transformer 为端到端机器翻译设计,遵循编码器-解码器(Encoder-Decoder) 架构:编码器(Encoder) 负责「理解」输入句子,为每个词元生成富含上下文信息的向量表示;解码器(Decoder) 负责「生成」目标句子,参考已生成的前文并「咨询」编码器的理解结果。编码器层 = 多头自注意力 + 前馈网络,各配一次 Add & Norm;解码器层多一个交叉注意力(Cross-Attention) 子层——Q 来自解码器自身,K、V 来自编码器输出,这正是「向编码器提问」的实现方式,且解码器自注意力必须带掩码。
2.2 自注意力:核心机制与公式
读句子「The agent learns because it is intelligent.」时,读到 it 的人脑会自动把注意力放到前面的 agent 上。自注意力(Self-Attention) 就是对这种现象的数学建模:处理每个词时兼顾句中所有其他词,并分配不同的「注意力权重」;权重越高,该词信息在当前词表示中占比越大。实现上为每个词元引入三个可学习角色:
- 查询(Query, Q):当前词元,正在主动「查询」其他词元以获取信息。
- 键(Key, K):句中可被查询的词元的「标签」或「索引」。
- 值(Value, V):词元本身携带的「内容」或「信息」。
三者由同一个词嵌入向量分别乘以三个可学习权重矩阵 \(W^Q,W^K,W^V\) 得到。计算分四步,可想象成一次高效的开卷考试:每个词生成自己的 \(Q,K,V\);用当前词的 \(Q\) 与句中所有词(含自己) 的 \(K\) 做点积,得分反映其他词对该词的重要程度;所有得分除以缩放因子 \(\sqrt{d_k}\),再用 Softmax 转成总和为 1 的权重;权重分别乘以各词的 \(V\) 后相加,得到该词融合全局上下文后的新表示。一个公式概括:
- \(QK^{T}\):一次矩阵乘法同时算出所有词两两之间的相关性得分,这就是并行化的来源——无需按时间步循环。
- \(d_k\) 是 K 向量维度,除以 \(\sqrt{d_k}\) 是为了缩放,避免维度变大时点积过大、Softmax 饱和导致梯度趋近于零;\(\text{softmax}(\cdot)\) 把一行得分压成和为 1 的注意力权重,末尾乘 \(V\) 即按权重对内容加权求和。
掩码(Mask) 在 Softmax 之前使用:把不该被看到的位置得分置为极大负数(代码写 -1e9),Softmax 后权重趋近 0,数学上杜绝信息泄漏。代价方面,注意力要把每个词与所有词配对计算,复杂度随序列长度平方增长——这是「上下文窗口不是越大越好」的根源。
2.3 多头注意力
只做一次注意力,模型可能只学会关注一种关联,但指代、时态、从属关系需要同时被捕捉。多头注意力(Multi-Head Attention) 把 Q、K、V 在维度上切成 \(h\) 份(\(h\) 即「头」数),每份独立做一次单头注意力,相当于让 \(h\) 个专家从不同角度审视同一句话;最后把 \(h\) 份输出拼接起来,再经一次线性变换 \(W^O\) 整合。收益是让模型同时关注来自不同位置、不同表示子空间的信息。
工程约束:\(d_{model}\) 必须能被头数整除,每头维度 \(d_k=d_{model}/h\);实现的关键动作是 split_heads((batch, seq, d_model) → (batch, heads, seq, d_k))与 combine_heads(还原回去)。
2.4 位置编码
自注意力只关心词元间关系,对顺序完全不敏感——在它眼里 agent learns 与 learns agent 等价,而顺序恰恰是语义的一部分。位置编码(Positional Encoding) 为每个词元的嵌入向量额外加上一个表示位置的「位置向量」,且该向量不是学出来的,而是用固定数学公式算出来的:即使两个词元自身嵌入完全相同,位置不同、加上不同位置编码后,输入向量也变得独一无二。原论文用正弦/余弦:
其中 \(pos\) 是词元位置,\(i\) 是位置向量的维度索引(0 到 \(d_{model}/2\)),\(d_{model}\) 是词嵌入维度;偶数维用 sin、奇数维用 cos。不同维度对应不同频率的周期函数,等价于为每个位置生成一组多尺度「坐标指纹」,能同时表达绝对与相对位置。
2.5 前馈网络、残差连接与层归一化
逐位置前馈网络(Position-wise Feed-Forward Network, FFN) 紧跟多头注意力之后:若注意力层的职责是从整个序列中动态聚合信息,FFN 的职责就是从聚合结果中提取更高阶特征。
\(x\) 是注意力子层的输出,\(W_1,b_1,W_2,b_2\) 是可学习参数,\(\max(0,\cdot)\) 即 ReLU。「逐位置」指它对序列中每个词元向量独立作用——长度为 seq_len 的序列,FFN 被调用 seq_len 次,但所有位置共享同一组权重。中间层维度 d_ff 远大于 d_model(典型 d_ff = 4 * d_model),经 ReLU 后映射回 d_model,这种「先扩大再缩小」有助于学到更丰富的特征。
所有子模块都被 Add & Norm 包裹,两部分各解决一个独立问题:
- 残差连接(Add):把子模块输入直接加到输出上,\(\text{Output}=x+\text{Sublayer}(x)\)。反向传播时梯度可绕过子模块直接向前传,解决了深层网络的梯度消失问题。
- 层归一化(Norm):对单个样本的所有特征做归一化(均值 0、方差 1),解决内部协变量偏移(Internal Covariate Shift) 问题,让每层输入分布稳定,加速收敛并提升训练稳定性。
3. Decoder-Only 与自回归生成(3.1.3)
3.1 为什么要砍掉编码器
Transformer 的设计哲学是「先理解,再生成」;但 OpenAI 开发 GPT(Generative Pre-trained Transformer) 时提出一个更简单的思想——语言的核心任务,不就是预测下一个最有可能出现的词吗? 无论回答问题、写故事还是生成代码,本质上都是在已有文本后面一个词一个词地添加最合理的内容。于是 GPT 完全抛弃编码器,只保留解码器,这就是 Decoder-Only 架构的由来。
其工作模式叫自回归(Autoregressive),过程极为朴素:起始文本(如 Datawhale Agent is)→ 预测下一个最可能的词(如 a)→ 把该词追加到输入末尾形成新输入 → 再预测下一个词(如 powerful)→ 重复,直到生成完整句子或触发停止条件。
3.2 掩码自注意力:训练时不许偷看答案
训练时模型一次性拿到完整文本并行送入,怎么保证预测第 \(t+1\) 个词时不偷看答案?答案是掩码自注意力(Masked Self-Attention),也叫因果掩码:在注意力分数算出后、Softmax 归一化前,把位于当前位置之后的词元对应分数替换为极大负数,Softmax 后这些位置概率变为 0,模型在数学上被阻止关注后面的信息。生成阶段则更直接:未来的词还没生成出来,模型只能以已生成内容为上下文逐步预测。最关键的是,掩码自注意力保证了训练方式与生成时的自回归使用方式一致,模型始终只依赖当前位置之前的信息。
3.3 三个优势
| 优势 | 说明 |
|---|---|
| 训练目标统一 | 唯一任务就是「预测下一个词」,非常适合在海量无标注文本上预训练 |
| 结构简单、易扩展 | 组件更少,更易规模化;GPT-4、Llama 等数千亿至万亿参数模型都基于此架构 |
| 天然适合生成任务 | 与对话、写作、代码生成完美契合,是它成为通用 Agent 基础的核心原因 |
4. 提示工程(3.2.1)
提示(Prompt)是我们与大模型这个「大脑」沟通的语言;提示工程就是设计精准提示、引导模型产生期望输出的技术。对 Agent 而言,好的提示直接决定多智能体协作分工的效率。
4.1 采样参数:模型输出的三个旋钮
采样参数的本质,是在原始 Softmax 分布基础上按不同策略「重新调整」或「截断」分布,从而改变下一个 token 的选择。原始分布 \(p_i=\dfrac{e^{z_i}}{\sum_{j=1}^{k}e^{z_j}}\),其中 \(z_i\) 是模型对第 \(i\) 个 token 给出的原始分数(logits),\(k\) 是候选 token 总数。
温度(Temperature) 引入温度系数 \(T>0\),把 Softmax 改写为:
\(T\) 变小时分布更陡峭,高概率项被放大,输出更「保守」、重复率更高;\(T\) 变大时分布更平坦,低概率项权重提升,输出更「多样」但可能不连贯。
Top-k 把 token 按概率降序取前 \(k\) 个组成「候选集」,再在候选集内归一化:\(\hat p_i=\dfrac{p_i}{\sum_{j\in\text{候选集}}p_j}\)。\(k=1\) 时输出完全确定,退化为贪心采样(greedy)。
Top-p(核采样) 按概率降序累加,直到累积和首次达到或超过阈值 \(p\)(\(\sum_{i\in S}p_{(i)}\geq p\)),累加途中的 token 组成「核集合」并归一化。相比固定截断大小的 Top-k,Top-p 能动态适应概率分布的长尾特性。
三者如何协同(易错点):同设时按分层过滤工作,优先级为 温度调整 → Top-k → Top-p——Top-k 保留概率最高的 k 个后,Top-p 再从中选取累积概率 ≥ p 的最小集合,最终候选集是两者交集;实践中 Top-k 与 Top-p 二选一即可。退化情形常考:温度设 0 时 Top-k 与 Top-p 无关紧要;Top-k 设 1 时温度与 Top-p 也无关紧要。
| 温度区间 | 输出特征 | 适用场景 |
|---|---|---|
| \(0\leq T<0.3\) | 精准、确定 | 事实问答、数据计算、代码生成、法律条文解读、技术文档 |
| \(0.3\leq T<0.7\) | 平衡、自然 | 客服交互、聊天机器人、邮件撰写、产品文案 |
| \(0.7\leq T<2\) | 创新、发散 | 诗歌创作、科幻构思、广告 slogan、艺术灵感 |
4.2 零样本、单样本与少样本提示
按提供给模型的示例(Exemplar)数量划分,以情感分类为例:
| 类型 | 做法 | 特点 |
|---|---|---|
| 零样本(Zero-shot) | 不给示例,直接下指令 | 依赖预训练后获得的强大泛化能力 |
| 单样本(One-shot) | 给 1 个完整「问题-答案」对 | 展示任务的格式与期望输出风格,模型模仿补全 |
| 少样本(Few-shot) | 给多个示例,覆盖不同情况 | 让模型更准确理解任务的细节、边界与细微差别,性能更好 |
少样本示例的设计要点是覆盖不同类别:同时给出「负面」「中性」的例子,模型才能更可靠地把新样本判为「正面」,而不是简单复制示例标签。
4.3 从预训练到后训练:指令调优改变了什么
预训练在海量无标注文本上训练,唯一目标是预测下一个词,得到的是「文本补全」模型(如早期 GPT-3)——擅长续写,但不一定理解并执行人类指令。指令调优(Instruction Tuning) 则是用大量「指令-回答」格式数据对预训练模型再做微调,使其更好地理解并遵循指令。结论:ChatGPT、DeepSeek、Qwen 都是各自家族中经过指令调优的版本。人类反馈强化学习(RLHF) 是让模型与人类意图对齐的关键技术——ChatGPT 相比 GPT-3 的跃迁正是靠它,它同时被列为从数据源头减少幻觉的手段之一。
这对写提示有直接影响。对「文本补全」模型,必须用少样本提示「教会」它做什么:
这是一段将英文翻译成中文的程序。
英文:Hello
中文:你好
英文:How are you?
中文:
对「指令调优」模型,可以直接下达指令:
请将下面的英文翻译成中文:
How are you?
发现「模型不听话」时,先确认用的是补全模型还是指令调优模型;若是前者,写指令是徒劳的,应改用少样本示例。
4.4 基础提示技巧
- 上下文示例(In-context Example):与少样本提示同源,在提示中给出清晰的输入输出示例来「教会」模型处理请求,在复杂格式或特定风格的任务上尤其有效,典型用法是约束 JSON 输出(亦可配合角色扮演,用「你现在是一位资深 Python 专家」等设定引导回答风格与知识范围):
评论:这款"星尘"笔记本电脑的屏幕显示效果惊人,但我不太喜欢它的键盘手感。
输出:{"product_name": "星尘笔记本电脑", "sentiment": "混合"}
这对 Agent 尤其重要:Agent 需要可程序化解析的模型输出,格式约束提示是把 LLM 输出接入代码流水线的最基本手段。
4.5 思维链(Chain-of-Thought, CoT)
对于需要逻辑推理、计算或多步骤思考的复杂问题,直接让模型给出答案往往容易出错。思维链(CoT) 的做法是在提示中加一句简单引导语,如「请逐步思考」或「Let's think step by step」,引导模型显式地一步步展开推理,从而提升复杂任务准确率。以总胜率问题为例(80 场赢 60%,新赛季 15 场赢 12 场):直接问容易算错,加上引导语后模型会输出:第一步 \(80\times60\%=48\) 场;第二步 总场数 \(80+15=95\)、总胜场 \(48+12=60\);第三步 \(60/95\approx63.16\%\)。
两个附带收益:显式推理使回答更可信、更易检查与纠正——可检查即可干预、可纠错,这对 Agent 至关重要;此外 CoT 是「能力涌现」的产物,规模足够大时才显著有效。
5. 文本分词(3.2.2)
5.1 为什么需要分词
计算机只能理解数字。把文本序列转换为数字序列的过程叫分词(Tokenization);分词器(Tokenizer) 定义规则,把原始文本切成最小单元——词元(Token)。两种朴素策略各有硬伤:
| 粒度 | 优点 | 致命缺陷 |
|---|---|---|
| 按词(Word-based) | 直观、语义单元完整 | 词表爆炸;未登录词(Out-Of-Vocabulary, OOV) 无法处理;look/looks/looking 被当作三个无关词 |
| 按字符(Character-based) | 词表极小、无 OOV | 单字符大多不具独立语义,模型需花大量精力学「字符如何拼成词」,效率低 |
现代方案是子词分词(Subword Tokenization),核心是折中:常见的词(如 agent)保留为完整词元,不常见的词(如 Tokenization)拆成多个有意义的子词片段(如 Token + ization),既控制词表大小,又让模型通过组合子词理解和生成新词。
5.2 字节对编码(BPE)
字节对编码(Byte-Pair Encoding, BPE) 是最主流的子词分词算法之一,GPT 系列模型即采用它。核心是一个「贪心」的合并过程:
- 初始化:把词表初始化为所有在语料库中出现过的基本字符。
- 迭代合并:统计所有相邻词元对的出现频率,找到频率最高的一对,合并为新词元并加入词表。
- 重复:重复第 2 步,直到词表大小达到预设阈值。
以迷你语料库 {"hug":1, "pug":1, "pun":1, "bun":1} 为例,目标词表大小 10,四次合并依次为 ('u','g')→ug、('ug','</w>')→ug</w>、('u','n')→un、('un','</w>')→un</w>(</w> 表示词尾)。分词时对新词 bug,先查 bug(不在词表)→查 bu(不在)→查 b 与 ug(都在),于是切为 ['b','ug']——这就是 BPE 从长到短的贪心回退逻辑。
5.3 BPE 的两个重要衍生
| 算法 | 出处 / 使用者 | 与 BPE 的关键差异 |
|---|---|---|
| WordPiece | Google BERT 采用 | 合并标准是「最大化提升语料库的语言模型概率」,而非最高频率 |
| SentencePiece | Google 开源的分词工具,Llama 采用 | 把空格视作普通字符(_),分词与解码完全可逆且不依赖特定语言 |
易混点:BPE 与 WordPiece 是算法,SentencePiece 是工具。
5.4 分词器对开发者的三个实际意义
理解分词细节不是目的,但它的后果直接关系到 Agent 的性能、成本与稳定性:
- 上下文窗口与成本:上下文窗口(如 8K、128K)以 Token 数量计算,不是字符数或单词数;同一段话在不同语言或不同分词器下 Token 数可能相差巨大,而大多数 API 按 Token 计费。精确管理输入长度既是避免超限的基础,也是控制运行成本的关键。
- 模型表现的异常:模型「犯蠢」的根源有时在分词——它可能很擅长
2 + 2,但对2+2(无空格)就出错,因为后者被当成一个独立、不常见的词元;大小写不同也可能被切成完全不同的 Token 序列。设计提示词与解析输出时考虑这些陷阱,能显著提升 Agent 的鲁棒性。
6. 模型选型:本地运行与生态全景(3.2.3 / 3.2.4)
6.1 本地运行开源模型的最小链路
API 调用快捷方便,但对处理敏感数据、离线运行或精细控制成本的场景,本地部署更关键。Hugging Face Transformers 提供加载使用数以万计预训练模型的标准化接口;本章以 Qwen/Qwen1.5-0.5B-Chat(约 5 亿参数的对话模型)为入门对象。要记住的是这条链路,而非安装步骤:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "Qwen/Qwen1.5-0.5B-Chat"
tokenizer = AutoTokenizer.from_pretrained(model_id) # 与模型匹配的分词器
model = AutoModelForCausalLM.from_pretrained(model_id).to(device) # 因果语言模型
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
model_inputs = tokenizer([text], return_tensors="pt").to(device) # 文本 -> input_ids
generated_ids = model.generate(model_inputs.input_ids, max_new_tokens=512)
generated_ids = [out[len(inp):] for inp, out in zip(model_inputs.input_ids, generated_ids)]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0] # ids -> 文本
这段走通了模型交互的完整闭环:对话模板 → 分词成 input_ids → generate 生成新 id → 裁掉输入部分 → decode 回文本。其中 max_new_tokens 控制最多生成多少新 Token;apply_chat_template 把 {role, content} 消息列表套用模型特定的对话模板——换了模型就必须换模板,这是最容易踩的坑。
6.2 八个选型维度
选择模型不是追求「最大最强」,而是在性能、成本、速度和部署方式之间权衡。八个维度:性能与能力(最核心,可参考 LMSys Chatbot Arena Leaderboard)、成本(闭源按 Token 计费;开源为本地硬件与运维)、速度/延迟(实时交互 Agent 的关键,GPT-3.5 Turbo、Claude 3.5 Sonnet 等延迟更优)、上下文窗口(长文档与代码库分析需 128K Token 或更高)、部署方式(API 最省事但数据交给第三方;本地部署保隐私但硬件要求更高)、生态与工具链(社区支持、教程、微调工具与兼容框架如 LangChain、LlamaIndex、Transformers)、可微调性(特定领域场景关键,开源更灵活)、安全性与伦理(偏见、毒性、幻觉表现与负责任 AI 投入)。
6.3 闭源与开源阵营速览
| 阵营 / 家族 | 关键定位与技术特点 |
|---|---|
| 闭源 · OpenAI GPT | GPT-3 开启大模型时代;ChatGPT 引入 RLHF 实现与人类意图对齐;GPT-4 开启多模态;GPT-5 提升多模态与通用智能 |
| 闭源 · Google Gemini | 原生多模态(文本、代码、音视频、图像)+ 超长上下文窗口;分 Ultra(复杂任务)/Pro(广泛任务)/Nano(设备端),2.5 系列强化推理与速度 |
| 闭源 · Anthropic Claude | 以 AI 安全与长文档处理、指令遵循的可靠性著称;Claude 3 分 Opus/Sonnet/Haiku 三档,Claude 4 系列强化复杂推理与代码生成 |
| 闭源 · 国内主流 | 百度文心一言、腾讯混元、华为盘古-α、科大讯飞星火、月之暗面等,中文优势明显 |
| 开源 · Meta Llama | 开源里程碑;Llama 4(2025 年 4 月)首批采用 MoE(混合专家) 架构以提升计算效率,Scout 支持 1000 万 token 上下文 |
| 开源 · Mistral AI | 以「小尺寸、高性能」著称;Mistral Medium 3.1(2025 年 8 月)在代码、STEM 推理、跨领域问答上表现突出 |
| 开源 · 国内力量 | 阿里巴巴通义千问(Qwen)、清华与智谱 AI 的 ChatGLM,中文能力强、社区活跃 |
一句话总结:闭源「开箱即用」,开源「随心所欲」。
7. 缩放法则与固有局限(3.3)
7.1 缩放法则(Scaling Laws)
缩放法则揭示模型性能与模型参数量、训练数据量、计算资源之间存在可预测的幂律关系:在对数-对数坐标系下,性能(通常用损失 Loss 衡量)与这三者都呈平滑幂律关系。只要按比例持续增加三要素,性能就会可预测地平滑提升、不出现明显瓶颈——资源允许时应尽可能扩大规模与数据量。
Chinchilla 定律(DeepMind,2022)做了关键修正:给定计算预算下,参数量与数据量存在最优配比,最优模型比之前普遍认为的更小,但需用多得多的数据训练。典型例证:700 亿参数的 Chinchilla 模型因使用了比 GPT-3(1750 亿参数)多 4 倍的数据,性能反而超越后者。这纠正了「越大越好」的片面认知,强调数据效率,并指导了 Llama 等高效大模型的设计。
能力涌现是缩放法则最令人惊奇的产物:规模达到一定阈值后,模型会突然展现小模型中完全不存在或表现极差的全新能力。链式思考(CoT)、指令遵循(Instruction Following)、多步推理、代码生成,都在参数量达到数百亿甚至千亿级别后才显著出现。对 Agent 的直接结论:选择足够大规模的模型是实现复杂规划与自主决策的前提——小模型 Agent 规划表现不佳,往往不是提示写得不好,而是规模不够。
7.2 模型幻觉(Hallucination)
定义:模型生成的内容与客观事实、用户输入或上下文信息相矛盾,或生成了不存在的事实、实体、事件;本质是过度自信地「编造」 信息,而非准确检索或推理。
| 类型 | 表现 |
|---|---|
| 事实性幻觉(Factual) | 生成与现实世界事实不符的信息 |
| 忠实性幻觉(Faithfulness) | 在摘要、翻译等任务中,生成内容未忠实反映源文本含义 |
| 内在幻觉(Intrinsic) | 生成内容与输入信息直接矛盾 |
三大成因:数据侧(训练数据可能含错误或矛盾信息)、机制侧(自回归只是在预测下一个词元,没有内置事实核查模块)、推理侧(复杂推理中逻辑链出错,从而编造错误结论)。后果如:旅游规划 Agent 推荐现实中不存在的景点,或预订航班号错误的机票。
缓解手段分三层:数据层面用高质量数据清洗、引入事实性知识、RLHF;模型层面探索新架构或让模型表达对生成内容的不确定性;推理与生成层面用检索增强生成(RAG)、多步推理与自检/外部验证、引入外部工具(搜索引擎、计算器、代码解释器)。其中 RAG(Retrieval-Augmented Generation,检索增强生成) 最有效:生成前先从外部知识库检索相关信息,把结果作为上下文喂给模型,引导其基于事实回答。幻觉短期内难以完全消除,但上述策略可显著降低其频率与影响——「工具 + 检索 + 验证」正是智能体架构的核心价值。
7.3 另外两个固有局限
知识截止(时效性不足):LLM 的能力来源于训练数据,它掌握的知识止于数据收集的那一刻,此后的事件与新概念无法感知或正确回答。训练数据偏见:训练数据包含人类社会的偏见与刻板印象,模型不可避免地吸收并反映它们。二者与幻觉一样都不是「调参能修好」的 bug,而是架构与训练范式的固有属性,只能靠外部系统对冲。
8. 高频考点 & 易错点速查
- Q / K / V:Q 是当前词在「提问」,K 是其他词可被查询的「标签」,V 是词本身携带的「内容」。
- 除以 \(\sqrt{d_k}\) 的目的:防维度变大时点积过大、Softmax 饱和、梯度趋近零;不是「把概率归一化」。
- 位置编码为何用固定公式:自注意力对顺序无感,必须外部注入位置信息;固定 sin/cos 即可让相同词元在不同位置获得不同表示。
- 残差 vs 层归一化:残差解决梯度消失(梯度绕过子模块前传),层归一化解决内部协变量偏移(稳定每层输入分布)。
- Transformer 并行 / RNN 串行:RNN 第 \(t\) 步依赖第 \(t-1\) 步;自注意力把两两相关性算成一次 \(QK^T\),与顺序无关故可并行,代价是位置信息须靠位置编码补回。
- Decoder-Only 成为主流:训练目标统一、结构简单易扩展、天然契合生成任务。
- 掩码时机:Softmax 之前,将未来位置分数置为极大负数(如
-1e9)。 - 采样参数优先级:温度 → Top-k → Top-p;温度设 0 时后两者失效,Top-k = 1 时前两者失效。
- N-gram 两个缺陷:数据稀疏性(概率为 0,平滑只能缓解)、泛化能力差(不懂语义相似性);词嵌入解决后者,RNN/LSTM 解决固定窗口,Transformer 解决串行效率。
- 分词粒度的两难:按词导致词表爆炸 + OOV;按字符无 OOV 但单字符无语义、效率低;子词分词是折中。
- BPE / WordPiece / SentencePiece:前两者是算法(WordPiece 的合并标准是最大化语料语言模型概率,非最高频),SentencePiece 是工具,把空格当普通字符故可逆、语言无关。
- 分词的杀伤力:
2+2与2 + 2可能被切成不同 token 导致算错;大小写不同也会改变 token 序列。 - Chinchilla 的修正:不是「越大越好」,参数量与数据量存在最优配比——最优模型更小但需更多数据。
- 幻觉的缓解重点:三分类为事实性 / 忠实性 / 内在,三层缓解中 RAG 最有效;知识截止与偏见无法靠调参消除,只能靠外部系统对冲。
章末习题考点映射(一句话一条):① Bigram 概率手算 + 马尔可夫假设 + N-gram 局限 + RNN/LSTM/Transformer 如何克服;② 自注意力核心思想、并行与位置编码、Decoder-Only 与 Encoder-Decoder 之别;③ 字符/单词作输入单元的问题与 BPE 的作用;④ 本地部署调参、Zero/Few-shot/CoT 对比、闭源 vs 开源、客服 Agent 选型;⑤ 幻觉缓解手段的原理与适用场景;⑥ 论文辅助阅读 Agent 的选型、超窗口长文处理与忠于原文的设计。
9. 与前后章节的衔接
第 1 章确立了「LLM 是 Agent 的大脑」,本章把这个「大脑」拆开,回答它的知识与推理能力从哪来、边界在哪,并给出可直接用于工程的原料:提示手法、采样参数、Token 与上下文窗口的成本直觉、选型维度、幻觉应对策略。向后延伸有三条线——提示工程与格式约束是第 4 章「智能体经典范式构建」中 Thought-Action-Observation 解析器的前提;Token 与上下文窗口知识是后续「记忆」章节的基础;幻觉与 RAG 则是「工具调用」「知识检索」类章节要解决的问题。

浙公网安备 33010602011771号