系列文章目录



前言


一、语言模型与 Transformer 架构

1.1 语言模型

语言模型 (Language Model, LM) 是自然语言处理的核心。
其根本任务是计算一个词序列(即一个句子)出现的概率。

  • 在多智能体系统中,语言模型是智能体理解人类指令、生成回应的基础。
  • 下面将回顾从经典的统计方法到现代深度学习模型的演进历程。

1.2 统计语言模型与 N-gram 的思想

1.2.1 统计模型

  • 在深度学习兴起之前,统计方法 是语言模型的主流。
  • 核心思想 : 一个句子出现的概率,等于该句子中每个词出现的条件概率的连乘。对于一个由词 w 1 , w 2 , ⋯   , w m w_1,w_2,\cdots,w_m w1,w2,,wm 构成的句子 S,其概率 P(S) 可以表示为:

P ( S ) = P ( w 1 , w 2 , … , w m ) = P ( w 1 ) ⋅ P ( w 2 ∣ w 1 ) ⋅ P ( w 3 ∣ w 1 , w 2 ) ⋯ P ( w m ∣ w 1 , … , w m − 1 ) P(S)=P(w_1,w_2,…,w_m)=P(w_1)⋅P(w_2∣w_1)⋅P(w_3∣w_1,w_2)⋯P(w_m∣w_1,…,w_{m−1}) P(S)=P(w1,w2,,wm)=P(w1)P(w2w1)P(w3w1,w2)P(wmw1,,wm1)

  • 这个公式被称为概率的链式法则。
  • 然而,直接计算这个公式几乎是不可能的,因为像 P ( w m ∣ w 1 , ⋯   , w m − 1 ) P(w_m∣w_1,\cdots,w_{m−1}) P(wmw1,,wm1) 这样的条件概率太难从语料库中估计了,词序列 w 1 , ⋯   , w m − 1 w_1,\cdots,w_{m−1} w1,,wm1 可能从未在训练数据中出现过。
图片描述

图 3.1 马尔可夫假设示意图

  • 为了解决这个问题,研究者引入了马尔可夫假设 (Markov Assumption)

  • 核心思想是:我们不必回溯一个词的全部历史,可以近似地认为,一个词的出现概率只与它前面有限的 n − 1 n−1 n1 个词有关,基于这个假设建立的语言模型,称之为 N-gram模型。这里的 “N” 代表考虑的上下文窗口大小。

  • 这正是N-gram的思想:

一个词的出现,主要受它前面有限几个词的影响,不必记住整句话的历史。

模型 看几个词来猜 例子
Unigram (N=1) 不看上下文,只看词本身频率 猜“的”“是”这种高频词
Bigram (N=2) 只看前1个词 “天气很” → 猜“好”
Trigram (N=3) 看前2个词 “今天天气很” → 猜“热”(夏天语境)
  • 这些概率可以通过在大型语料库中进行最大似然估计(Maximum Likelihood Estimation,MLE) 来计算。
  • 例如,对于 Bigram 模型,我们想计算在词 w i − 1 w_{i−1} wi1 出现后,下一个词是 w i w_i wi 的概率 P ( w i ∣ w i − 1 ) P(w_i∣w_{i−1}) P(wiwi1)。根据最大似然估计,这个概率可以通过简单的计数来估算:

P ( w i ∣ w i − 1 ) = C o u n t ( w i − 1 , w i ) C o u n t ( w i − 1 ) P(w_i∣w_{i−1})=\frac{Count(w_{i−1},w_i)}{Count(w_{i−1})} P(wiwi1)=Count(wi1)Count(wi1,wi)

  • 这里的 Count() 函数就代表“计数”:
    • C o u n t ( w i − 1 , w i ) Count(w_{i−1},w_i) Count(wi1,wi):表示词对 ( w i − 1 , w i ) (w_{i−1},w_i) (wi1,wi) 在语料库中连续出现的总次数。
    • C o u n t ( w i − 1 ) Count(w_{i−1}) Count(wi1):表示单个词 w i − 1 w_{i−1} wi1 在语料库中出现的总次数。

1.2.2 动手算一遍N-gram:用datawhale例子深化理解

  • 语料库:
句子1: datawhale agent learns
句子2: datawhale agent works
  • Bi-gram 计算句子 datawhale agent learns 的概率:
步骤 计算 结果 直观解释
1. P ( datawhale ) P(\text{datawhale}) P(datawhale) datawhale出现次数 总词数 = 2 6 \frac{\text{datawhale出现次数}}{\text{总词数}} = \frac{2}{6} 总词数datawhale出现次数=62 ≈0.333 语料中1/3的词是datawhale
2. P ( agent ∣ datawhale ) P(\text{agent}|\text{datawhale}) P(agentdatawhale) “datawhale agent”出现次数 datawhale出现次数 = 2 2 \frac{\text{“datawhale agent”出现次数}}{\text{datawhale出现次数}} = \frac{2}{2} datawhale出现次数“datawhale agent”出现次数=22 =1.0 只要出现datawhale,下个词100%是agent
3. P ( learns ∣ agent ) P(\text{learns}|\text{agent}) P(learnsagent) “agent learns”出现次数 agent出现次数 = 1 2 \frac{\text{“agent learns”出现次数}}{\text{agent出现次数}} = \frac{1}{2} agent出现次数“agent learns”出现次数=21 =0.5 agent后面一半是learns,一半是works
最终概率 0.333 × 1.0 × 0.5 0.333 \times 1.0 \times 0.5 0.333×1.0×0.5 ≈0.167 这个句子有16.7%的可能性出现
  • 关键点来了,这里可以看出概率是连乘,只要中间某一步概率很低(如0.01),整个句子概率就会急剧下降——这解释了为什么N-gram难以生成长句子(“概率塌缩”问题)。

1.2.3 N-gram的局限和意义

  • N-gram 的三大局限
局限 说明 例子
数据稀疏问题 语料中未出现的词对,概率=0 → 整个句子概率归零 语料无“agent flies",则$P(\text{flies}
长距离依赖缺失 只看前N-1个词,无法捕捉远距离关联 “虽然今天下雨,但我还是决定___" → 应该填“出门”,但Bigram只看到“决定”,猜不准
无语义理解 仅统计共现频率,不懂词义相似性 语料有“吃苹果”,但无“吃香蕉” → 模型认为$P(\text{香蕉}

为缓解数据稀疏,研究者发明了平滑技术(如加1平滑):
P smoothed ( w i ∣ w i − 1 ) = Count ( w i − 1 , w i ) + 1 Count ( w i − 1 ) + V P_{\text{smoothed}}(w_i|w_{i-1}) = \frac{\text{Count}(w_{i-1},w_i) + 1}{\text{Count}(w_{i-1}) + V} Psmoothed(wiwi1)=Count(wi1)+VCount(wi1,wi)+1
其中 V V V是词汇表大小。这相当于“假装每个词对都至少出现过1次”,避免概率为0。但这是打补丁,无法根本解决语义缺失问题。

  • 但是,N-gram 模型首次让机器“量化”语言规律,支撑了早期机器翻译、语音识别等工作,可谓是真正的将 NLP 理念注入到人们的头脑中。

1.3 神经网络语言模型与词嵌入

1.3.1 神经网络语言模型

研究者们转向了神经网络,并提出了一种思想:用连续的向量来表示词。
2003年,Bengio 等人提出的 前馈神经网络语言模型 (Feedforward Neural Network Language Model) 是这一领域的里程碑。

  • Bengio 的 NNLM 提出一个天才想法:

把每个词映射到高维空间中的一个点(向量),让语义相近的词在空间中“地理位置”相近。

传统N-gram 神经网络语言模型
词 = 离散ID(如agent=42 词 = 连续向量(如agent=[0.2, -1.3, 0.7, ...]
词之间无关系 词之间有“距离”和“方向”
无法泛化 可通过向量运算泛化(如king - man + woman ≈ queen
  • 生活化比喻:词的二维地图(实际是高维,但原理相同):
Y轴(皇室程度)
  ↑
  │    king ●          queen ●
  │
  │    man ●           woman ●
  └──────────────────────────→ X轴(性别倾向)
        男性                女性
  • kingqueen在Y轴(皇室)上位置相近

  • manwoman在X轴(性别)上有固定偏移

  • kingman的向量 ≈ 从queenwoman的向量

  • 关键点来了,词向量不是人工设计的,而是在预测下一个词的任务中自动学习出来的——模型为了准确预测,被迫让语义相似的词在向量空间中靠近。

1.3.2 NNLM 架构拆解

  • NNLM 工作流程如下:
输入: "datawhale agent"  (预测下一个词)
       ↓
[Step 1] One-hot编码
  "datawhale" → [0,0,1,0,...]  (长度=词汇表大小V)
  "agent"     → [0,1,0,0,...]
       ↓
[Step 2] 查找词嵌入(Embedding Lookup)
  通过权重矩阵 C (V×d),将one-hot映射为d维向量:
    "datawhale" → [0.3, -0.7, 1.2, ...]  (d=100维)
    "agent"     → [-0.5, 0.9, 0.4, ...]
       ↓
[Step 3] 拼接上下文向量
  [0.3, -0.7, 1.2, ..., -0.5, 0.9, 0.4, ...]  (2d维)
       ↓
[Step 4] 隐藏层非线性变换
  通过全连接层 + tanh 激活函数,提取高阶特征
       ↓
[Step 5] Softmax输出概率分布
  输出V个词的概率,如 P(learns)=0.6, P(works)=0.4, ...

1.3.3 NNLM 的局限

  • NNLM 虽革命性,但仍继承 N-gram固定上下文窗口限制。
  • 这个局限直接催生了循环神经网络(RNN) ——它能处理任意长序列,通过“记忆单元”保留远距离依赖。
  • 2013年 Mikolov 的 Word2Vec 进一步简化了训练,让词向量技术大规模普及。

1.4 循环神经网络 RNN 与长短时记忆网络 LSTM

  • 循环神经网络 (Recurrent Neural Network, RNN) 应运而生,其核心思想非常直观:为网络增加“记忆”能力

  • 以 “虽然今天下雨,但我还是决定___” 为例

  • N-gram/NNLM 的局限:每次只拍一张“快照”

输入: "虽然今天下雨,但我还是决定___"
       ↑______↑
       只看最后2个词"还是决定",丢失"下雨"的关键信息
  • 这就像读书时每次只看当前页的最后两行,把前面的全忘了。

  • RNN 引入隐藏状态(hidden state) 作为“记忆笔记”:

时间步1: 读"虽然" → 笔记 = f("虽然", 初始空白)
时间步2: 读"今天" → 笔记 = f("今天", 上一步笔记)
时间步3: 读"下雨" → 笔记 = f("下雨", 上一步笔记)
...
时间步n: 读"决定" → 笔记 = f("决定", 包含"下雨"信息的笔记) → 预测"出门"
  • RNNLSTM 完成了NLP的第二次范式革命
范式 核心突破 代表模型
固定窗口 语言 = 局部共现 N-gram
循环记忆 语言 = 时序过程 RNN → LSTM
全局关联 语言 = 关系网络 Transformer

1.5 Transformer 架构解析

1.5.1 Transformer 的三个魂

  1. 砸碎了顺序处理这个枷锁
  • RNN 像一个人读书必须从左到右一字不落地看,第 100 100 100 个字没读完就永远不知道第 101 101 101 个字。
  • Transformer 则像你扫一眼整段文字,大脑瞬间建立起“虽然”和“但是”的连线——所有词同时被处理,依赖关系靠注意力权重动态建立。
  • 这就是为什么它能并行训练,把训练时间从几周压缩到几天。

1.5.2 Transformer 整体架构

最初的 Transformer 模型是为端到端任务机器翻译而设计的。它在宏观上遵循了一个经典的 编码器-解码器 (Encoder-Decoder) 架构

模块 任务 类比
编码器 读源语言句子,生成富含上下文的表示 翻译官先彻底理解原文
解码器 生成目标语言,每步参考:
1) 已生成的词(自注意力)
2) 编码器输出(交叉注意力)
翻译官边写译文边回头查原文

二、大语言模型交互

2.1 提示工程

  • 开门见山,提示工程有两条实践出来的真知:
  1. 模型是概率引擎,不是逻辑引擎
  • 它生成的是人类最可能写的下文,而非正确答案。你的提示要引导概率分布向目标倾斜。
  1. 高质量提示 = 任务定义 + 格式约束 + 思维引导
    • 任务定义:比如,翻译这段文本,而不是处理这段文本”
    • 格式约束:比如,用JSON输出
    • 思维引导:比如,先列步骤再计算

2.1.1 采样参数来调节概率分布

  • 就拿手作咖啡来举例
参数 比喻 低值(保守) 高值(发散) 适用场景
Temperature 咖啡师的“创意度” 只做标准美式(重复安全) 往拿铁里加辣椒粉(新奇但可能翻车) 事实问答用低温(0.2),写诗用高温(0.8)
Top-k “只看菜单前k项” 只考虑最热门5款(稳定) 浏览全部50款(多样) 代码生成用k=10,创意写作用k=50
Top-p “只看累计80%概率的选项” 动态截断:热门时看5个,冷门时看20个 更适应分布变化 实际工程中Top-p比Top-k更常用(如p=0.9)

2.2 文本分词

2.3 调用开源大语言模型

2.4 模型的选择


三、大语言模型的缩放法则与局限

3.1 缩放法则

缩放法则 Scaling Laws 是大语言模型领域最重要的发现之一。

3.1.1 什么是缩放法则

  • 它揭示了 模型性能(通常用损失 Loss 来衡量)模型参数量训练数据量 以及 计算资源 之间存在着可预测的 幂律 关系。

L ( N , D ) ≈ ( N c N ) α N + ( D c D ) α D + L 0 L(N, D) \approx \left(\frac{N_c}{N}\right)^{\alpha_N} + \left(\frac{D_c}{D}\right)^{\alpha_D} + L_0 L(N,D)(NNc)αN+(DDc)αD+L0

  • 研究发现,在双对数坐标下,这是一条平滑直线——意味着模型的性能是可预测地、平滑的提升。

  • 直观理解三要素:

资源 作用 过度投入的后果
参数量 N N N 模型的脑容量:决定能记住多少模式 只增参数不增数据 → 过拟合(死记硬背)
数据量 D D D 模型的眼界阅历:决定见过多少样例 只增数据不增参数 → 欠拟合(记不住)
计算量 C C C 模型的训练时长和资源:决定优化充分程度 计算不足 → 未收敛(学艺不精)

2022年 Deepmind 提出了 Chinchilla 定律,对此进行了重要修正。
该定律指出,在给定的计算预算下,为了达到最优性能,模型参数量和训练数据量之间存在一个最优配比

  • 核心结论:在固定计算预算 C C C 下,最优配比是 N ∝ D N \propto D ND,即参数量与数据量应同比例增长。

3.1.2 涌现

能力涌现(Emergence): 当模型规模跨过某个临界阈值,突然展现出小模型完全不具备的能力,且这种能力无法通过外推小模型性能预测。
通俗理解为量变引发质变。

  • 根据对现在大模型及其参数的了解,不一定正确,可能会有某个小模型经过特定任务从而学习到了某种能力。
能力 小模型(<10B) 大模型(>10B) 临界点
链式思考(CoT) 无法分步推理 能输出"首先…然后…因此…" ~60B
指令遵循 需精细prompt 理解"用三句话总结"等自然指令 ~20B
代码生成 仅能写简单函数 能生成完整类+错误处理 ~100B
多语言翻译 仅支持主流语言 支持小语种互译 ~50B
  • 涌现是不是大模型有意识了?现在的研究认为还不是,它仍是统计模式的复杂组合,但复杂到人类难以直观解释
  • 目前学界有三种解释(尚无定论):
假说 核心思想 类比
相变假说 模型参数达到临界点,内部表征发生质变 水加热到100°C突然汽化
任务分解假说 大模型将复杂任务自动分解为子任务链 小时候学系鞋带:先学打结→再学绕圈→最后组合
稀疏激活假说 大模型中只有少数神经元被特定任务激活,形成“虚拟专家” 图书馆有100万本书,只查询“量子力学”就只翻100本

3.2 模型幻觉

模型幻觉(Hallucination),通常指的是大语言模型生成的内容与客观事实、用户输入或上下文信息相矛盾,或者生成了不存在的事实、实体或事件。

3.2.1 幻觉的三种类型

类型 定义 案例
事实性幻觉 生成与现实矛盾的信息 比如 “巴黎的首都是柏林”
忠实性幻觉 未忠实反映源文本 比如,摘要中添加原文没有的“专家认为”
内在幻觉 与自身上下文矛盾 比如,前文说“用户喜欢咖啡”,后文推荐“茶馆”

3.2.2 为什么LLM必然会产生幻觉?

层1:训练目标的本质缺陷
  • LLM的训练目标是 “最大化下一个词的预测概率”,而非“保证事实正确性”。
训练目标: P("巴黎" | "法国的首都是") → 最大概率词是"巴黎" ✓
但模型不知道"巴黎"是事实,只知道它在训练数据中高频出现
层2:自回归生成的累积误差
  • 生成是链式过程:第 t t t 步依赖前 t − 1 t-1 t1 步,错误会像滚雪球一样放大。
正确链:  "法国" → "首都" → "巴黎" → "埃菲尔铁塔"
幻觉链:  "法国" → "首都" → "柏林"(错误)→ "柏林铁塔"(虚构)→ ...
层3:训练数据的噪声与矛盾
  • 互联网数据包含大量错误、虚构、矛盾内容(如维基百科编辑战、小说、谣言)。
  • 模型学到的是人类常说的话,而非真实世界。
层4:无外部验证机制
  • LLM是封闭系统:生成时无法查询外部知识库验证。
人类:不确定时 → 查维基/问专家 → 验证后再回答
LLM:不确定时 → 仍按概率生成 → “自信地胡说”
  • 事实上就是模型无法区分“我知道”和“我瞎蒙的”。

3.2.3 两大衍生局限:时效性与偏见

局限 根源 案例
知识冻结 模型能力=训练数据截止日 问GPT-3.5“2024年奥运会举办地” → 回答“东京”(训练截止2021)
社会偏见 训练数据反映人类偏见 问“护士的性别” 的话, 高概率生成“女性”(强化性别刻板印象)
  • 本质上 : LLM是人类知识的哈哈镜——它放大了我们的智慧,也放大了我们的错误。**

3.2.4 提升大语言模型可靠性的技术

技术 原理 适用场景 效果
RAG(检索增强生成) 生成前先检索外部知识库,将结果注入上下文 事实密集型任务(客服、医疗) 幻觉率↓
工具调用(Tool Use) 允许模型调用计算器/搜索引擎/代码解释器 精确计算、实时信息查询 错误率↓
思维链(CoT) 强制模型分步推理,暴露中间逻辑 复杂推理(数学、逻辑谜题) 可解释性↑,幻觉率↓

习题

  1. 自然语言处理中,语言模型经历了从统计到神经网络的模型演进。
    • 请使用本章提供的迷你语料库(datawhale agent learns, datawhale agent works),计算句子 agent works 在Bigram模型下的概率
    • N-gram模型的核心假设是马尔可夫假设。请解释这个假设的含义,以及N-gram模型存在哪些根本性局限?
    • 神经网络语言模型(RNN/LSTM)和Transformer分别是如何克服N-gram模型局限的?它们各自的优势是什么?

答:

  • Bi-gram 计算句子 datawhale agent learns 的概率:
步骤 计算 结果 直观解释
1. P ( datawhale ) P(\text{datawhale}) P(datawhale) datawhale出现次数 总词数 = 2 6 \frac{\text{datawhale出现次数}}{\text{总词数}} = \frac{2}{6} 总词数datawhale出现次数=62 ≈0.333 语料中1/3的词是datawhale
2. P ( agent ∣ datawhale ) P(\text{agent}|\text{datawhale}) P(agentdatawhale) “datawhale agent”出现次数 datawhale出现次数 = 2 2 \frac{\text{“datawhale agent”出现次数}}{\text{datawhale出现次数}} = \frac{2}{2} datawhale出现次数“datawhale agent”出现次数=22 =1.0 只要出现datawhale,下个词100%是agent
3. P ( learns ∣ agent ) P(\text{learns}|\text{agent}) P(learnsagent) “agent learns”出现次数 agent出现次数 = 1 2 \frac{\text{“agent learns”出现次数}}{\text{agent出现次数}} = \frac{1}{2} agent出现次数“agent learns”出现次数=21 =0.5 agent后面一半是learns,一半是works
最终概率 0.333 × 1.0 × 0.5 0.333 \times 1.0 \times 0.5 0.333×1.0×0.5 ≈0.167 这个句子有16.7%的可能性出现
  • 马尔可夫假设的核心思想:一个词的出现概率,只依赖于它前面有限的 n−1 个词,与更早的历史无关。 N-gram 模型的局限在于无语义理解,词都是离散的,而且数据稀疏,因为语料库的空间过于巨大,无法捕捉长距离的词语之间的关系,只是固定窗口大小。
N-gram (早期)
  │
  ├─ 局限:固定窗口、无语义
  │
  ↓
RNN/LSTM (现代)
  │
  ├─ 突破:循环记忆 → 长序列建模
  ├─ 局限:顺序计算、梯度瓶颈
  │
  ↓
Transformer (2017-)
  │
  ├─ 突破:自注意力 → 全局关联 + 并行训练
  └─ 成就:奠定大语言模型基础,如GPT/BERT等

总结

  • 大语言模型的缩放法则指导如何造出更强的模型,而幻觉与局限提醒我们再强的模型也有边界。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐