Coursera 笔记

Module 01 · Recurrent Neural Networks

Different Types of RNNsRNN 的不同类型

Coursera ↗

在之前的学习中,我们探讨了 RNN 架构,其中 输入序列 TxT_x 和 输出序列 TyT_y 的长度相等。然而,在实际应用中,TxT_x 和 TyT_y 的长度不一定相等。在本视频中,我们将讨论更丰富的 RNN 架构,并通过一些实际例子,展示如何修改基础 RNN 架构来处理不同的任务。

1.RNN 架构的不同类型

首先,回顾之前我们提到过的 RNN 架构,其中输入序列和输出序列的长度是相同的。这种架构我们称为 Many-to-Many(多对多)架构。

1.1Many-to-Many 架构

假设我们有一个输入序列 x1,x2,…,xTxx_1, x_2, \dots, x_{T_x},并且每个时间步都会产生一个输出 y^1,y^2,…,y^Ty\hat{y}_1, \hat{y}_2, \dots, \hat{y}_{T_y},其中 Tx=TyT_x = T_y,这正是我们之前讨论的架构。

例如,我们可以通过 RNN 来进行 命名实体识别(NER),其中输入和输出的序列长度相同。


2.多种不同的 RNN 架构

除了 Many-to-Many 架构之外,RNN 还可以根据任务需求,扩展为其他类型的架构。以下是几种常见的 RNN 架构:

2.1Many-to-One 架构

任务:情感分类(Sentiment Classification)

在情感分类任务中,输入 x 是一段文本(如电影评论),而输出 y 是一个单一的情感评分(如 1 到 5 的星级评分,或者是 0 表示负面评论,1 表示正面评论)。

RNN 架构:

  • 输入序列:x1,x2,…x_1, x_2, \dots(逐个输入每个单词)
  • 输出:在最后一个时间步(输入完整个句子)时输出情感评分。

这种结构被称为 Many-to-One 架构,即输入多个元素(单词),但只输出一个结果(情感评分)。

简化的 RNN 架构示意图:

输入序列: "This movie is terrible"
  ↓
RNN(逐字处理)
  ↓
输出:1(负面情感)

2.2One-to-One 架构

这种架构是最基本的 神经网络架构,即输入一个数据 x,然后输出一个结果 y。这并不需要使用 RNN,通常在 普通神经网络(MLP) 中就可以实现。

  • 输入:x
  • 输出:y

这种架构通常用于一些简单的任务,如 单一分类任务。

2.3One-to-Many 架构

任务:音乐生成(Music Generation)

在音乐生成任务中,输入可能是一个整数,表示所需的音乐类型或某个音符,而输出则是一个音符序列,生成的每个音符都作为输出。

RNN 架构:

  • 输入:一个标量(如表示音乐风格的数字,或音乐的第一个音符)。
  • 输出:逐个生成音符,直到完成整首曲子。

这种架构被称为 One-to-Many 架构,即输入一个元素,生成多个输出。


3.Many-to-Many 架构的变种

有些应用场景中,输入和输出序列的长度可能不同。例如,在 机器翻译 中,输入一个法语句子,输出一个英语翻译句子,这两个句子的长度往往不相同。

3.1机器翻译的 RNN 架构

在机器翻译任务中,输入的句子(如法语)长度 TxT_x 和输出的翻译句子(如英语)长度 TyT_y 可能不同。

RNN 架构:

  • 输入部分:读取输入句子(如法语)。
  • 输出部分:将输入句子翻译成目标语言(如英语)。

这种架构包含两个部分:

  • 编码器(Encoder):读取并处理输入句子。
  • 解码器(Decoder):根据编码器的输出生成翻译。

3.2Many-to-Many 架构的改进

这种架构是 Many-to-Many 的一个变种,适用于 输入输出长度不同 的任务,如机器翻译。通过 编码器-解码器(Encoder-Decoder) 模型,可以有效地将输入序列映射到输出序列。

机器翻译示意图:

输入:法语句子(Tx)
  ↓
编码器(Encoder)
  ↓
输出:英语翻译(Ty)


总结:RNN 架构的多样性

到目前为止,我们介绍了 四种主要的 RNN 架构,分别是:

架构类型 描述 应用示例
One-to-One 输入单个数据,输出单个结果 标准神经网络
Many-to-One 输入多个数据,输出单个结果 情感分类(Sentiment Classification)
One-to-Many 输入单个数据,输出多个结果 音乐生成(Music Generation)
Many-to-Many 输入多个数据,输出多个结果(输入输出长度相同) 命名实体识别(NER)
Many-to-Many 输入多个数据,输出多个结果(输入输出长度不同,如机器翻译) 机器翻译(Machine Translation)

未来方向:序列生成与注意力机制

虽然我们已经掌握了 RNN 的多种架构,接下来的内容将深入探讨 序列生成(Sequence Generation) 的细节,这包括使用 注意力机制(Attention Mechanism) 来改进模型。我们将在下一期视频中详细讨论这些内容。

通过本视频,您已经理解了不同类型的 RNN 架构,并能够根据任务需求选择合适的架构。在接下来的练习中,您将有机会实现一个 语言模型(Language Model),并生成一些有趣的文本序列。 🎉

让我们继续前往下一期视频,深入了解序列生成的更多细节!