05 不同类型的循环神经网络(Different types of RNNs)
05 不同类型的循环神经网络(Different types of RNNs)
这份笔记总结了吴恩达深度学习课程中关于不同类型的循环神经网络(RNN)结构的核心内容。根据输入序列长度($T_x$)与输出序列长度($T_y$)的关系,RNN 可以分为以下五种主要架构:
1. 一对一 (One-to-One)
- 结构特点:输入数量等于输出数量,且通常为单个值($T_x = 1, T_y = 1$)。
- 描述:这是最标准的传统神经网络结构,不涉及序列处理。
- 示意图逻辑:$x \rightarrow \text{NN} \rightarrow y$
- 应用:传统的图像分类(非序列)、简单的回归问题等(在 RNN 课程背景下主要作为对比基准)。
2. 一对多 (One-to-Many)
- 结构特点:单个输入对应一个序列输出($T_x = 1, T_y > 1$)。
工作流程:
- 输入一个初始向量 $x^{\langle 1 \rangle}$(可以是表示音乐类型的整数,或者是空向量 $\vec{0}$)。
- RNN 生成第一个输出 $y^{\langle 1 \rangle}$。
- 后续步骤通常没有外部输入,或者将上一步的输出 $y^{\langle t-1 \rangle}$ 作为下一步的输入(自回归生成)。
- 持续生成直到序列结束。
数学表达概念:
\[a^{\langle t \rangle} = g(W_{aa}a^{\langle t-1 \rangle} + W_{ay}y^{\langle t-1 \rangle} + b_a)\] \[y^{\langle t \rangle} = g(W_{ya}a^{\langle t \rangle} + b_y)\](注:初始时刻 $t=1$ 时,**$y^{\langle 0 \rangle}$ 或 $x^{\langle 1 \rangle}$ 为启动信号)
典型应用:
- 音乐生成:输入一个音符或类型,生成一段旋律。
- 文本生成:输入一个起始词,生成整句话。
3. 多对一 (Many-to-One)
- 结构特点:一个序列输入对应单个输出($T_x > 1, T_y = 1$)。
工作流程:
- RNN 依次读入整个输入序列 $x^{\langle 1 \rangle}, x^{\langle 2 \rangle}, \dots, x^{\langle T_x \rangle}$。
- 中间时间步不产生最终输出,只更新隐藏状态。
- 仅在最后一个时间步 $T_x$ 产生输出 $\hat{y}$。
典型应用:
- 情感分类:输入一段电影评论(序列),输出一个评分(1-5星)或情感标签(正面/负面)。
- 图像描述生成中的分类部分(虽然通常是多对多,但核心分类是多对一)。
4. 多对多 (Many-to-Many) - 同步型
- 结构特点:输入序列长度等于输出序列长度($T_x = T_y$)。
工作流程:
- 在每个时间步 $t$,都有对应的输入 $x^{\langle t \rangle}$ 和输出 $y^{\langle t \rangle}$。
- 输入和输出在时间上是一一对应的。
典型应用:
- 命名实体识别 (NER) :输入句子中的每个单词,输出该单词是否属于某个实体(如人名、地名)。例如:输入 “John Smith works at Google”,输出 “B-PER, I-PER, O, O, B-ORG”。
5. 多对多 (Many-to-Many) - 异步型 (Encoder-Decoder)
- 结构特点:输入序列长度不等于输出序列长度($T_x \neq T_y$)。
结构组成:
- 编码器 (Encoder) :读取完整的输入序列 $x^{\langle 1 \rangle}, \dots, x^{\langle T_x \rangle}$,将其压缩为一个上下文向量(通常取最后一步的隐藏状态)。
- 解码器 (Decoder) :基于编码器的状态,开始生成输出序列 $y^{\langle 1 \rangle}, \dots, y^{\langle T_y \rangle}$。
- 工作流程:先完全读完输入,再开始生成输出。
典型应用:
- 机器翻译:输入法语句子(长度 $T_x$),翻译成英语句子(长度 $T_y$),两者单词数量通常不同。
- 问答系统。
总结对比表
| 结构类型 | 输入长度 ($T_x$) | 输出长度 ($T_y$) | 典型应用场景 |
|---|---|---|---|
| 一对一 | 1 | 1 | 标准神经网络 (Standard NN) |
| 一对多 | 1 | $>1$ | 音乐生成、文本生成 |
| 多对一 | $>1$ | 1 | 情感分析、电影评分 |
| 多对多 (同步) | $T_x$ | $T_y = T_x$ | 命名实体识别 (NER) |
| 多对多 (异步) | $T_x$ | $T_y \neq T_x$ | 机器翻译 (Encoder-Decoder) |
补充说明
- 序列生成细节:在“一对多”和异步“多对多”的解码阶段,通常会将上一时刻的输出 $\hat{y}^{\langle t-1 \rangle}$ 反馈作为下一时刻的输入,这种技术称为自回归 (Autoregressive) 。
- 注意力机制 (Attention) :笔记提到还有一种更高级的结构基于“注意力机制”,将在课程后续章节(第四周)详细讲解,它能解决长序列中信息丢失的问题,是目前机器翻译等领域的主流架构。
这些基本模块可以通过组合构建出各种复杂的深度学习模型,以处理不同类型的序列数据任务。
本文由作者按照 CC BY 4.0 进行授权