系列文章目录
- task00 环境配置+前言
- task01 初识智能体
- task02 智能体发展史
- task03 大语言模型基础
- task04 智能体经典范式构建
- task05 基于低代码平台的智能体搭建
- task06 框架应用开发实战
文章目录
- 系列文章目录
- 前言
- [一、语言模型与 Transformer 架构](#一、语言模型与 Transformer 架构)
-
- [1.1 语言模型](#1.1 语言模型)
- [1.2 统计语言模型与 N-gram 的思想](#1.2 统计语言模型与 N-gram 的思想)
-
- [1.2.1 统计模型](#1.2.1 统计模型)
- [1.2.2 动手算一遍N-gram:用datawhale例子深化理解](#1.2.2 动手算一遍N-gram:用datawhale例子深化理解)
- [1.2.3 N-gram的局限和意义](#1.2.3 N-gram的局限和意义)
- [1.3 神经网络语言模型与词嵌入](#1.3 神经网络语言模型与词嵌入)
-
- [1.3.1 神经网络语言模型](#1.3.1 神经网络语言模型)
- [1.3.2 NNLM 架构拆解](#1.3.2 NNLM 架构拆解)
- [1.3.3 NNLM 的局限](#1.3.3 NNLM 的局限)
- [1.4 循环神经网络 RNN 与长短时记忆网络 LSTM](#1.4 循环神经网络 RNN 与长短时记忆网络 LSTM)
- [1.5 Transformer 架构解析](#1.5 Transformer 架构解析)
- 二、大语言模型交互
-
- [2.1 提示工程](#2.1 提示工程)
- [2.2 文本分词](#2.2 文本分词)
- [2.3 调用开源大语言模型](#2.3 调用开源大语言模型)
- [2.4 模型的选择](#2.4 模型的选择)
- 三、大语言模型的缩放法则与局限
-
- [3.1 缩放法则](#3.1 缩放法则)
-
- [3.1.1 什么是缩放法则](#3.1.1 什么是缩放法则)
- [3.1.2 涌现](#3.1.2 涌现)
- [3.2 模型幻觉](#3.2 模型幻觉)
-
- [3.2.1 幻觉的三种类型](#3.2.1 幻觉的三种类型)
- [3.2.2 为什么LLM必然会产生幻觉?](#3.2.2 为什么LLM必然会产生幻觉?)
- [3.2.3 两大衍生局限:时效性与偏见](#3.2.3 两大衍生局限:时效性与偏见)
- [3.2.4 提升大语言模型可靠性的技术](#3.2.4 提升大语言模型可靠性的技术)
- 习题
- 总结
前言
一、语言模型与 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(w2∣w1)⋅P(w3∣w1,w2)⋯P(wm∣w1,...,wm−1)
- 这个公式被称为概率的链式法则。
- 然而,直接计算这个公式几乎是不可能的,因为像 P ( w m ∣ w 1 , ⋯ , w m − 1 ) P(w_m∣w_1,\cdots,w_{m−1}) P(wm∣w1,⋯,wm−1) 这样的条件概率太难从语料库中估计了,词序列 w 1 , ⋯ , w m − 1 w_1,\cdots,w_{m−1} w1,⋯,wm−1 可能从未在训练数据中出现过。

图 3.1 马尔可夫假设示意图
-
为了解决这个问题,研究者引入了马尔可夫假设 (Markov Assumption) 。
-
核心思想是:我们不必回溯一个词的全部历史,可以近似地认为,一个词的出现概率只与它前面有限的 n − 1 n−1 n−1 个词有关,基于这个假设建立的语言模型,称之为
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} wi−1 出现后,下一个词是 w i w_i wi 的概率 P ( w i ∣ w i − 1 ) P(w_i∣w_{i−1}) P(wi∣wi−1)。根据最大似然估计,这个概率可以通过简单的计数来估算:
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(wi∣wi−1)=Count(wi−1)Count(wi−1,wi)
- 这里的
Count()函数就代表"计数":- C o u n t ( w i − 1 , w i ) Count(w_{i−1},w_i) Count(wi−1,wi):表示词对 ( w i − 1 , w i ) (w_{i−1},w_i) (wi−1,wi) 在语料库中连续出现的总次数。
- C o u n t ( w i − 1 ) Count(w_{i−1}) Count(wi−1):表示单个词 w i − 1 w_{i−1} wi−1 在语料库中出现的总次数。
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(agent∣datawhale) | "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(learns∣agent) | "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(wi∣wi−1)=Count(wi−1)+VCount(wi−1,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轴(性别倾向)
男性 女性 -
king和queen在Y轴(皇室)上位置相近 -
man和woman在X轴(性别)上有固定偏移 -
从
king到man的向量 ≈ 从queen到woman的向量 -
关键点来了,词向量不是人工设计的,而是在预测下一个词的任务中自动学习出来的------模型为了准确预测,被迫让语义相似的词在向量空间中靠近。
1.3.2 NNLM 架构拆解
NNLM工作流程如下:
text
输入: "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) 作为"记忆笔记":
text
时间步1: 读"虽然" → 笔记 = f("虽然", 初始空白)
时间步2: 读"今天" → 笔记 = f("今天", 上一步笔记)
时间步3: 读"下雨" → 笔记 = f("下雨", 上一步笔记)
...
时间步n: 读"决定" → 笔记 = f("决定", 包含"下雨"信息的笔记) → 预测"出门"
RNN和LSTM完成了NLP的第二次范式革命:
| 范式 | 核心突破 | 代表模型 |
|---|---|---|
| 固定窗口 | 语言 = 局部共现 | N-gram |
| 循环记忆 | 语言 = 时序过程 | RNN → LSTM |
| 全局关联 | 语言 = 关系网络 | Transformer |
1.5 Transformer 架构解析
二、大语言模型交互
2.1 提示工程
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 N∝D,即参数量与数据量应同比例增长。
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的训练目标是 "最大化下一个词的预测概率",而非"保证事实正确性"。
text
训练目标: P("巴黎" | "法国的首都是") → 最大概率词是"巴黎" ✓
但模型不知道"巴黎"是事实,只知道它在训练数据中高频出现
层2:自回归生成的累积误差
-
生成是链式过程 :第 t t t 步依赖前 t − 1 t-1 t−1 步,错误会像滚雪球一样放大。
正确链: "法国" → "首都" → "巴黎" → "埃菲尔铁塔"
幻觉链: "法国" → "首都" → "柏林"(错误)→ "柏林铁塔"(虚构)→ ...
层3:训练数据的噪声与矛盾
- 互联网数据包含大量错误、虚构、矛盾内容(如维基百科编辑战、小说、谣言)。
- 模型学到的是人类常说的话,而非真实世界。
层4:无外部验证机制
-
LLM是封闭系统:生成时无法查询外部知识库验证。
人类:不确定时 → 查维基/问专家 → 验证后再回答
LLM:不确定时 → 仍按概率生成 → "自信地胡说" -
事实上就是模型无法区分"我知道"和"我瞎蒙的"。
3.2.3 两大衍生局限:时效性与偏见
| 局限 | 根源 | 案例 |
|---|---|---|
| 知识冻结 | 模型能力=训练数据截止日 | 问GPT-3.5"2024年奥运会举办地" → 回答"东京"(训练截止2021) |
| 社会偏见 | 训练数据反映人类偏见 | 问"护士的性别" 的话, 高概率生成"女性"(强化性别刻板印象) |
- 本质上 : LLM是人类知识的哈哈镜------它放大了我们的智慧,也放大了我们的错误。**
3.2.4 提升大语言模型可靠性的技术
| 技术 | 原理 | 适用场景 | 效果 |
|---|---|---|---|
| RAG(检索增强生成) | 生成前先检索外部知识库,将结果注入上下文 | 事实密集型任务(客服、医疗) | 幻觉率↓ |
| 工具调用(Tool Use) | 允许模型调用计算器/搜索引擎/代码解释器 | 精确计算、实时信息查询 | 错误率↓ |
| 思维链(CoT) | 强制模型分步推理,暴露中间逻辑 | 复杂推理(数学、逻辑谜题) | 可解释性↑,幻觉率↓ |
习题
- 自然语言处理中,语言模型经历了从统计到神经网络的模型演进。
- 请使用本章提供的迷你语料库(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(agent∣datawhale) | "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(learns∣agent) | "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等
总结
- 大语言模型的缩放法则指导如何造出更强的模型,而幻觉与局限提醒我们再强的模型也有边界。