
视频元信息
- 所属课程:吴恩达深度学习专项课程 - 序列模型(Sequence Models)
- 章节:1.6 语言模型和序列生成(Language Model and Sequence Generation)
- 视频主题:使用 RNN 构建语言模型,估计词序列的概率
内容摘要(TL;DR)
本视频讲解语言模型的基本概念及其在 RNN 中的实现方式。语言模型的核心任务是估计一个词序列出现的概率,广泛应用于语音识别和机器翻译。构建流程包括:准备大规模语料库、分词(tokenize)、建立词表、处理未知词(UNK)和句尾标记(EOS),然后用 RNN 逐词预测下一个词,通过 softmax 输出概率分布,最终用交叉熵损失训练模型。
一、什么是语言模型 [00:25]
1.1 从语音识别引入
视频以一个经典例子开场:语音识别系统听到一句发音模糊的话,可能是:
- "The apple and pair salad was delicious"(苹果和梨沙拉很好吃)
- "The apple and pear salad was delicious"
两句话发音完全相同,但人类会判断第二句更合理。语言模型的作用就是告诉系统哪个句子的概率更高。
语言模型给出的概率示例:
- 第一句概率:3.2 × 10⁻¹³
- 第二句概率:5.7 × 10⁻¹⁰
第二句的概率高出约 10³ 倍,因此语音识别系统会选择第二句。
1.2 语言模型的定义
核心定义:语言模型输入一个句子(词序列),输出该句子出现的概率。
- 输入表示:Y₁, Y₂, ..., Y_{T_y}(一个长度为 T_y 的词序列)
- 输出:P(Y₁, Y₂, ..., Y_{T_y}),即这个特定词序列的概率
理解:所谓"概率"的含义是——如果你随机翻开一份报纸、打开一封邮件、浏览一个网页,或听朋友说的下一句话,这句话恰好是某个特定句子的可能性有多大。
1.3 语言模型的应用场景
语言模型是以下两大系统的基础组件:
- 语音识别系统(Speech Recognition):从多个发音相同的候选句子中,选择概率最高的那个
- 机器翻译系统(Machine Translation):确保输出的译文是"像人话"的、概率高的句子
考点: 语言模型的两大核心应用——语音识别和机器翻译,是考试中常考的知识点。
二、如何构建语言模型 [02:49]
2.1 第一步:准备训练集(语料库)
需要一个大范围的英文文本语料库(Corpus)。
- Corpus(语料库):NLP 术语,指一个非常大的文本集合,包含大量英文句子
- 语料库的语言取决于你要构建哪种语言的语言模型
示例句子:"Cats average 15 hours of sleep a day."(猫平均每天睡 15 小时)
2.2 第二步:分词(Tokenization)
分词就是将句子拆解为一个个词元(token),并建立词表(Vocabulary)。
具体步骤:
- 建立词表:收集语料中出现的所有词
- 将每个词映射为 one-hot 向量 或词表中的索引
示例分词结果:
| 位置 | 词元 |
|---|---|
| Y₁ | Cats |
| Y₂ | average |
| Y₃ | 15 |
| Y₄ | hours |
| Y₅ | of |
| Y₆ | sleep |
| Y₇ | a |
| Y₈ | day |
| Y₉ | EOS(句尾标记) |
2.3 第三步:处理句尾标记(EOS Token)
EOS = End of Sentence(句尾标记)
- 作用:显式地让模型知道句子在哪里结束
- 做法:在每个训练句子的末尾追加 EOS token
- 注意:本周的编程练习中不会使用 EOS token,但在某些应用中它非常有用
易错点: EOS token 是可选的处理方式,不是所有语言模型都必须使用。吴恩达特别指出编程练习中不使用它。
2.4 第四步:处理标点符号
- 可以选择忽略标点符号(如句号)
- 也可以将标点符号作为独立的 token 加入词表
- 这取决于具体应用需求
2.5 第五步:处理未知词(UNK Token)
UNK = Unknown Words(未知词标记)
- 问题:如果词表只包含最常见的 10,000 个词,那么像 "maul"(伤害)这样的词可能不在词表中
- 解决方案:将所有不在词表中的词替换为 UNK token
- 效果:模型只建模"未知词"出现的概率,而不区分具体是哪个未知词
考点: UNK 和 EOS 是语言模型中的两个重要特殊 token,需要理解它们的含义和使用场景。
三、构建 RNN 语言模型 [05:55]
3.1 RNN 架构概述
核心思想:将输入 X_t 设为前一个词 Y_{t-1},让 RNN 从左到右逐词预测。
3.2 逐步详解
时间步 1(t=1):
- 输入 X₁ = 全零向量(0 向量)
- 初始激活 A₀ = 全零向量
- 计算激活 A₁
- 输出 Ŷ₁:通过 softmax 预测第一个词的概率分布
- 这是一个 10,000 维的 softmax 输出(假设词表大小为 10,000 + 2 个特殊 token)
- 预测:P(第一个词是什么)
- 本例中正确答案是 "Cats"
时间步 2(t=2):
- 输入 X₂ = Y₁ = "Cats"(告诉模型第一个词实际是 Cats)
- 计算激活 A₂
- 输出 Ŷ₂:预测第二个词的概率分布
- 条件:给定第一个词是 "Cats"
- 本例中正确答案是 "average"
时间步 3(t=3):
- 输入 X₃ = Y₂ = "average"
- 计算激活 A₃
- 输出 Ŷ₃:预测第三个词
- 条件:给定前两个词是 "Cats average"
- 本例中正确答案是 "15"
以此类推...
时间步 9(t=9):
- 输入 X₉ = Y₈ = "day"
- 计算激活 A₉
- 输出 Ŷ₉:预测 EOS token
- 条件:给定前面所有词
3.3 核心机制总结
RNN 每一步都在做:给定前面所有词,预测下一个词的概率分布。
理解:这种"自回归"式的预测方式,让模型学会了语言的局部依赖关系。每一步的输出都是一个完整的词表概率分布。
重点: X_t = Y_{t-1} 是 RNN 语言模型的关键设计——用前一个真实词作为当前步的输入。
四、损失函数与训练 [10:06]
4.1 单步损失
在时间步 t:
- 真实词为 Y_t
- 模型 softmax 预测为 Ŷ_t
- 使用 softmax 损失函数(交叉熵损失):L_t = -Σ Y_t · log(Ŷ_t)
4.2 整体损失
总损失 = 所有时间步损失之和
L = Σ_{t=1}^{T_y} L_t(Ŷ_t, Y_t)
推导:这与标准的多分类交叉熵一致,只是需要在时间维度上累加。训练时通过 BPTT(时间反向传播)更新参数。
4.3 训练后的能力
训练完成后,模型可以:
- 给定任意初始词序列(如 "Cats average 50"),预测下一个词的概率
- 计算整个新句子的概率
4.4 计算句子概率的方法
对于一个新句子 Y₁, Y₂, Y₃:
P(Y₁, Y₂, Y₃) = P(Y₁) × P(Y₂ | Y₁) × P(Y₃ | Y₁, Y₂)
具体来说:
- 第一个 softmax 输出给出 P(Y₁)
- 第二个 softmax 输出给出 P(Y₂ | Y₁)
- 第三个 softmax 输出给出 P(Y₃ | Y₁, Y₂)
- 将这三个概率相乘,即得整个句子的概率
考点: 句子概率 = 各条件概率的乘积。这是语言模型的核心数学表达,也是链式法则的直接应用。
五、关键概念总结与拓展
5.1 基础概念回顾
| 概念 | 含义 |
|---|---|
| 语言模型 | 估计词序列概率的模型 |
| Corpus | 大规模文本语料库 |
| Tokenization | 将句子拆分为词元 |
| Vocabulary | 词表,所有 token 的集合 |
| EOS | 句尾标记,标识句子结束 |
| UNK | 未知词标记,替换词表外的词 |
| Softmax | 输出层,将激活值转为概率分布 |
5.2 【拓展】语言模型的评估指标
视频中未提及,但作为背景补充:
- 困惑度(Perplexity):语言模型最常用的评估指标,值越低表示模型越好
- 困惑度 = 概率的几何平均的倒数,本质上与交叉熵损失密切相关
- 在吴恩达后续课程中会详细讲解
5.3 【拓展】从 RNN 到现代语言模型
理解:本视频讲解的是基于 RNN 的基础语言模型,这是理解现代大语言模型(如 GPT 系列)的基础。
- RNN 语言模型存在长程依赖问题(梯度消失/爆炸)
- 后续发展:LSTM → GRU → Transformer → GPT/BERT
- 但核心思想不变:给定前文,预测下一个词的概率分布
5.4 【拓展】字符级 vs 词级语言模型
视频中讲解的是词级(word-level)语言模型,但实际应用中还有:
- 字符级(character-level):以单个字符为 token,词表更小,但序列更长
- 子词级(subword-level):如 BPE 算法,平衡词表大小和序列长度,是现代主流方案
5.5 容易踩坑的点
易错点 1: X_t = Y_{t-1} 的设计容易混淆——输入是前一个真实词,而非前一个预测词(训练时)。
易错点 2: 句子概率是乘积而非求和,且需要用到链式法则分解。
易错点 3: EOS 和 UNK 是可选设计,不是必须的,取决于具体任务需求。
易错点 4: 编程练习中不使用 EOS token,注意区分理论与实现。
关键标签/关键词
语言模型、RNN、序列生成、NLP、分词、Tokenization、词表、Vocabulary、EOS、UNK、Softmax、交叉熵损失、语音识别、机器翻译、Corpus、语料库、条件概率、链式法则、吴恩达、深度学习、序列模型
生成时间:2026-10-11 00:32:45 生成平台:VideoNote www.xygy.top