第 1 章 语言模型是什么
本章目标:建立对语言模型(Language Model)的直觉认知,理解其数学本质,并明确本项目选择字级别建模的原因。
1.1 什么是语言模型
你每天使用的输入法在你打出"春眠不"之后会自动推荐"觉晓";搜索引擎在你输入一半关键词时就能猜到你的意图;ChatGPT 能流畅地回答各种问题——这些背后都有同一个核心组件:语言模型。
语言模型(Language Model,LM)的任务很简单:给一段文字打一个"合理度"分数,即估计这段文字出现的概率。
- "床前明月光" → 概率高(合理)
- "光月明前床" → 概率低(不合理)
- "zxqk 前明月" → 概率极低(几乎不可能)
有了这个能力,模型就可以在多个候选续写中选出最合理的那个,从而实现文字补全、生成等功能。
1.2 条件概率与链式法则
一段文字
写成紧凑形式:
这个公式是所有语言模型的数学基础,无论是最古老的 N-gram 还是最新的大语言模型,都在估计这个条件概率。
直觉理解:给定"春眠不",下一个字是"觉"的概率远高于"猫"。语言模型就是在学习这类条件概率。
1.3 从 N-gram 到神经语言模型
N-gram 模型
最早的语言模型用统计方法来估计条件概率。N-gram 模型做了一个简化假设:当前字只依赖前
例如,二元模型(Bigram)认为每个字只取决于前一个字:
N-gram 的缺陷:
- 长距离依赖:诗的第三行可能与第一行押韵,N-gram 无法捕捉跨越多字的关联
- 数据稀疏:N 越大,需要见过的 N-gram 组合越多,训练数据永远不够
神经语言模型
神经网络语言模型用一个可学习的函数来估计条件概率,不受 N 的限制,能通过向量表示捕捉更长距离的依赖关系。本项目使用的 RNN 就是神经语言模型的一种经典形式。
1.4 字级别 vs. 词级别
语言模型可以在不同粒度上建模:
| 粒度 | 示例("春眠不觉晓") | 优点 | 缺点 |
|---|---|---|---|
| 字级别 | ['春','眠','不','觉','晓'] | 词表小且固定,无需分词 | 需要更长序列才能表达语义 |
| 词级别 | ['春眠','不觉','晓'] | 每个单元语义更完整 | 需要分词,词表大,OOV 问题严重 |
本项目选择字级别建模,原因如下:
- 古诗以单字为基本创作单位,字本身就承载完整语义("春"、"月"、"山")
- 整个语料库只有 2439 个不重复的字,词表极小,嵌入层参数量可控
- 不需要引入分词工具,流程简洁,适合教学
小结
- 语言模型 = 估计文本序列的概率分布
- 链式法则将联合概率分解为逐字的条件概率乘积
- 神经语言模型通过可学习的函数拟合条件概率,克服了 N-gram 的局限
- 本项目在字级别建模,词表只有 2439 个字
下一章将介绍如何把这 2439 个字表示成神经网络能处理的向量。