Coursera 笔记

Module 01 · Recurrent Neural Networks

Sampling Novel Sequences采样生成新序列

Coursera ↗

在训练好 RNN 语言模型 后,我们可以通过 采样(Sampling) 来生成新的句子或文本,从而直观感受模型学到了什么。本视频将详细讲解如何从训练好的语言模型中采样新句子,并探索 词级别(Word-Level) 和 字符级别(Character-Level) 语言模型的差异与应用。


1.从语言模型中采样文本

1.1模型的工作原理

语言模型的目标是为某个句子分配一个概率,例如:

通过从这个分布中 采样(Sampling),我们可以生成符合模型理解的句子。


1.2采样过程

步骤 1生成第一个单词

  • 输入 初始状态 x_1 = 0, a_0 = 0,通过 Softmax 输出第一个单词的概率分布。
  • 根据该分布随机采样一个单词 y_1:
    • 使用函数如 np.random.choice 从概率分布中选择一个单词。

步骤 2生成后续单词

  • 将采样到的 y_1 作为输入 x_2,通过 Softmax 输出下一个单词 y_2 的概率分布。
  • 按照概率分布继续采样。

步骤 3结束条件

  • 如果词汇表中包含 EOS(End of Sentence) 标记,则当生成 EOS 时停止采样。
  • 如果没有 EOS 标记,可以预定义句子长度(例如 20 或 100 个单词)。

步骤 4处理未知单词

  • 如果采样到 UNK(未知词),可以:
    • 丢弃该结果并重新采样。
    • 或保留它,视任务需求而定。


1.3采样示例

假设句子以“the”开始:

  1. 第 1 步:模型预测第一个单词是“the”,然后采样。
  2. 第 2 步:输入“the”,预测下一个单词可能是“cat”、“dog”等,继续采样。
  3. 重复以上步骤,直到生成完整句子或达到预定义长度。

2.字符级别 vs. 词级别语言模型

除了 词级别(Word-Level) 模型,还有 字符级别(Character-Level) 模型,其单位是字符而非单词。

2.1字符级别模型的特点

  • 词汇表(Vocabulary): 包含字母(a-z)、数字(0-9)、空格和标点符号。
    • 示例:句子 “Cats average 15 hours” 被分解为
  • 优点:
    • 无需处理未登录词(No Unknown Words):即使单词 “Mau” 未在训练集中,模型仍然可以为其分配概率。
    • 更灵活,适用于小型专用词汇。
  • 缺点:
    • 序列更长:一个句子的字符数远多于单词数,导致训练复杂度增加。
    • 长距离依赖建模较差:难以捕捉句子中远距离词汇之间的关系。

2.2词级别模型的特点

  • 更擅长捕捉 长距离依赖。
  • 适合绝大多数 NLP 应用。
  • 可能遇到未登录词问题,但通过 UNK 标记可以缓解。

2.3字符级与词级模型的对比

特性 字符级别模型 词级别模型
粒度 字符(a-z,标点,数字等) 单词
词汇表大小 小(例如 50-100 个字符) 较大(例如 10,000+ 单词)
未登录词处理 无需特殊处理 需要 UNK 标记
长距离依赖 表现较差 表现较好
计算复杂性 更高(序列更长) 较低
适用场景 小型词汇任务,专用文本 常规 NLP 应用

3.采样文本的实际效果

以下是基于训练数据生成的示例文本:

3.1新闻文本生成

生成文本:
“Concussion epidemic to be examined.”
看起来像新闻标题,但语法可能不完全正确。

3.2莎士比亚风格文本

生成文本:
“The mortal moon hath her eclipse in love. And subject of this thou art another this fold.”

这些示例展示了模型如何根据训练数据生成具有特定风格的文本。


总结与展望

通过本视频,我们学习了如何从语言模型中采样句子,并理解了词级别和字符级别模型的优缺点:

内容 描述
采样文本 使用 Softmax 概率分布逐步采样生成句子
词级别模型 适合大多数 NLP 应用,处理长距离依赖,可能需要处理未登录词问题
字符级别模型 更灵活,无未登录词问题,但训练更复杂,难以建模长距离依赖

接下来,我们将探讨 训练 RNN 的挑战,例如 梯度消失问题(Vanishing Gradients),并介绍更强大的模型,如 GRU 和 LSTM。这些技术将帮助我们克服训练中的困难,构建更强大的序列模型。

让我们继续探索吧! 🚀