跳到主要内容

语言模型基础

本节定位

“语言模型”这个词后面会反复出现。
如果前面没有把最基本的直觉建立起来,后面学大模型时就很容易只剩流行词。

这节课的目标是先讲清一件事:

语言模型本质上是在预测:给定前面的文本,后面最可能出现什么。

它表面上像一个简单任务,但后面很多能力都从这里长出来。

学习目标

  • 理解语言模型最基本的任务目标
  • 理解 n-gram 语言模型和现代神经语言模型之间的连续性
  • 通过可运行示例建立“预测下一个 token”的直觉
  • 理解为什么语言模型会成为后面大模型的共同基础

一、语言模型到底在学什么?

1.1 最基本的形式

一句话讲,就是:

  • 给定前文,预测下一个 token

例如:

  • “我 爱” -> 下一个词可能是 AIPython

1.2 为什么这个任务看起来简单却很强?

因为要做好这件事,模型必须逐渐学会:

  • 词法搭配
  • 语法结构
  • 常见语义关系
  • 一些世界知识

也就是说,
“预测下一个 token”虽然目标简单,
但背后会逼着模型学很多语言规律。

1.3 一个类比

语言模型像在玩“接龙”,
但这不是随便接,而是要接得:

  • 像人类语言
  • 像当前语境
  • 像合理延续

二、先从 n-gram 直觉开始

2.1 什么是 n-gram 语言模型?

它可以先理解成:

  • 只看前面很短的一小段历史
  • 用统计频次预测后面会出现什么

例如 bigram:

  • 只看前 1 个词

trigram:

  • 只看前 2 个词

2.2 这种方法有什么好处?

  • 直观
  • 可解释
  • 容易上手

2.3 它的局限也很明显

  • 看不到长距离依赖
  • 很容易稀疏
  • 泛化能力弱

但它非常适合帮助新人建立语言模型的第一层直觉。


三、先跑一个 bigram 示例

from collections import defaultdict, Counter

corpus = [
"我 爱 AI",
"我 爱 Python",
"你 爱 NLP",
]

stats = defaultdict(Counter)

for sent in corpus:
toks = sent.split()
for a, b in zip(toks[:-1], toks[1:]):
stats[a][b] += 1

print(dict(stats))

3.1 这段代码最重要的价值是什么?

它把语言模型最底层的逻辑掀开来看:

  • 看到一个词后
  • 下一个词在训练语料里出现过多少次

3.2 为什么这已经像一个“语言模型”了?

因为它已经在做:

  • 条件概率估计

例如看到:

后面接:

  • AI
  • Python
  • NLP

各自概率不同。


四、怎么从统计模型走到神经语言模型?

4.1 核心任务没变

虽然模型架构后面变得越来越复杂,
但一个重要事实是:

  • 目标函数常常还是“预测下一个 token”

4.2 变的是表示和泛化方式

神经语言模型不再只是查频次表,
而是会:

  • 用向量表示 token
  • 用神经网络建模上下文

这样它就能:

  • 看更长的历史
  • 学到更抽象的模式
  • 对没见过的组合有更强泛化

4.3 一个简化的“预测分布”例子

import math

scores = {
"AI": 2.0,
"Python": 1.5,
"NLP": 0.8,
}


def softmax(score_dict):
exps = {k: math.exp(v) for k, v in score_dict.items()}
total = sum(exps.values())
return {k: round(v / total, 4) for k, v in exps.items()}


print(softmax(scores))

这不是完整神经网络,
但它已经在表达一件关键事:

  • 模型不是只输出一个词
  • 而是在输出一个“下一词概率分布”

五、为什么语言模型会成为大模型的共同底座?

5.1 因为这个目标足够通用

无论后面你是做:

  • 对话
  • 写作
  • 代码生成
  • 摘要

很多能力都能从“语言延续能力”里长出来。

5.2 因为它很适合大规模自监督学习

你不需要人工标注“下一个词是什么”,
文本本身就天然带这个标签。

这使得:

  • 海量文本
  • 自监督训练

可以自然结合起来。

5.3 这也是为什么后面会走向 GPT 这条线

因为自回归语言建模:

  • 简洁
  • 统一
  • 可扩展

这条路线后来成了大语言模型的重要主线之一。


六、最容易踩的坑

6.1 误区一:语言模型只是“会接下一个词”

这个说法表面上对,
但低估了这个任务能逼模型学到的东西。

6.2 误区二:n-gram 没用,所以没必要学

n-gram 很有用,
因为它让你第一次真正看到语言模型在做什么。

6.3 误区三:只要会生成,就等于理解了语言

生成能力强不等于完全理解。
这也是后面为什么还要看推理、对齐和工具调用。


小结

这节最重要的是建立一个很稳定的判断:

语言模型最基础的任务,就是在给定前文时预测下一个 token;而正是这个看似简单的目标,构成了后面大模型很多能力的底座。

只要这条主线清楚了,
你后面再看 GPT、预训练和生成模型时,就会自然很多。


练习

  1. 自己再加几句语料,看看 stats 会怎么变。
  2. 为什么说 bigram 虽然简单,但已经抓到了语言模型的核心?
  3. 用自己的话解释:语言模型为什么天然适合大规模自监督训练?
  4. 想一想:为什么“会接下一个词”这件事,最后能长出对话和写作能力?