Coursera 笔记

Module 01 · Recurrent Neural Networks

Language Model and Sequence Generation语言模型与序列生成

Coursera ↗

语言建模是自然语言处理(NLP)中的基础任务之一,也是 RNN(递归神经网络)表现非常出色的任务。在本视频中,我们将探讨如何利用 RNN 来构建一个语言模型,并最终通过一个有趣的编程练习,帮助你使用该模型生成类似莎士比亚的文本以及其他类型的文本。🎉

让我们开始吧!🚀


1.什么是语言模型?

语言模型的作用是预测某个句子的概率。比如,如果你正在构建一个 语音识别系统,并且你听到一句话:“苹果和梨沙拉很好吃”
你可能会疑惑,我是说 apple and pair salad 还是 apple and pear salad? 🤷‍♀️

虽然这两个句子发音相同,但我们通常会认为 "apple and pear salad" 更有可能。其实,正是 语言模型 帮助语音识别系统做出了正确的判断。通过语言模型,系统会计算这两个句子出现的概率。

语言模型的工作原理:

  • 它会评估一个句子在语言中的合理性。
  • 比如,它可以预测 "apple and pear salad" 的概率远高于 "apple and pair salad"。

2.语言模型的应用

2.1语音识别与机器翻译

语言模型不仅用于语音识别系统,还广泛应用于 机器翻译,它能确保翻译系统输出的句子是有可能出现的。

例如,在机器翻译中,系统会根据 输入句子 和上下文,输出一个可能性最大的翻译结果。

2.2语言模型的核心功能

语言模型的主要任务是,给定一个句子,它要告诉你这个句子出现的概率。这些概率可以用来帮助预测在自然语言中,某个句子出现的可能性。


3.如何构建语言模型?

3.1训练数据与词汇表

要构建一个语言模型,你首先需要一个 大型语料库,比如英语文本或你要处理的任何其他语言的文本。这个语料库包含大量的句子。接着,你需要:

  • 对句子进行 分词,并将每个词映射到 词汇表 中。
  • 词汇表 是所有可能单词的集合。你可以将这些单词映射到 一热向量(one-hot vector)或者 索引 上。

例如,我们有句子:

"Cats average 15 hours of sleep a day" 🐱

  1. 首先,将句子进行分词,构建词汇表。
  2. 然后,将句子中的每个词转换为词汇表中的索引或 一热编码。

额外标记:EOS

为了帮助模型识别句子的结束,你可以添加一个 EOS(End Of Sentence)标记,表示句子的结束。


3.2处理未登录词:UNK

在你的训练集中,如果有一些词不在词汇表中,怎么办?例如,如果词汇表中只有 10,000 个常见单词,而 “Mau”(一种猫的品种)不在其中,你可以将这些未登录词替换为一个 UNK(未知词)标记。


4.RNN 架构与语言建模

接下来,让我们构建一个 RNN 来建模这些单词序列的概率。我们使用之前的句子 “Cats average 15 hours of sleep a day” 作为示例。

4.1RNN 输入与激活

  • 在时间步 0,模型的输入是一个 零向量,激活 a_1 将被计算出来。
  • 随后,Softmax 层将输出一个 预测,计算句子中第一个词出现的概率。

Softmax 输出

在 Softmax 层中,模型会计算所有词汇表中每个单词出现的概率,判断哪些单词更可能是下一个单词。

  • 比如,模型会计算 “a”,“cats” 或 “Aaron” 等词的概率。
  • 这个过程是逐步进行的,在每一个时间步,RNN 会根据已经输入的单词,预测下一个最可能的单词。

4.2训练过程与损失函数

  • 在训练过程中,我们使用 Softmax 损失函数 来计算每个时间步预测的误差。
  • 损失函数定义为:

其中,T 是句子的总长度。

通过在大规模训练集上的训练,RNN 能够根据已知单词序列预测下一个单词的概率。


5.语言模型的应用:生成文本

训练好的语言模型不仅可以用来预测句子的下一个单词,还能用来 生成新的文本!在下一期视频中,我们将探讨如何从模型中 采样生成文本。

通过 RNN 和训练得到的语言模型,你可以生成类似 莎士比亚 风格的文本,或者其他类型的有趣文本。


总结:构建语言模型的步骤

步骤 描述
准备训练数据 获取大量文本数据,构建词汇表并进行分词
处理未登录词 使用 UNK 标记替换训练数据中未出现在词汇表的词
构建 RNN 模型 使用 RNN 来预测单词序列,逐个预测每个单词的概率
训练与损失函数 使用 Softmax 损失 函数进行训练,最小化预测误差
文本生成 基于训练好的模型,生成新的文本内容(如莎士比亚风格的文本)

通过本视频,你已经了解了如何使用 RNN 构建一个语言模型,并掌握了模型的基本结构和训练方法。接下来,在实际练习中,你将亲手实现这个模型,并通过 RNN 生成一些有趣的文本!🎉

不要担心如果这些概念还显得有些抽象,你将会在接下来的练习中实践这些技术。我们在下个视频中将讨论如何从语言模型中 采样 文本。📜

期待与您一起进一步探索这个令人兴奋的主题!