深度学习:手撕 RNN(2)-RNN 的常见模型架构

本文首次发表于知乎,欢迎关注作者。

。有了 这个 RNN 模块后,就像搭积木一样,以 RNN 为基本单元,根据不同的任务或者需求,可以构建不同的模型架构。本节介绍的所有结构,在实际使用时均可以用 RNN 的变体 LSTM,GRU 等作为基本单元,方便起见,本小节我们以 RNN 为基本单元进行说明。我们来认识下 RNN 一些常见的模型架构。

1. bidirectional RNN(双向 RNN)

当我们可以获得一条完整的输入序列时,即每个时刻的输入数据都可以同时获得。我们不仅可以利用 RNN 从左到右的进行计算,同时也可以从右到左进行计算。如图 1-1 所示,用 2 个不同 Cell 分别捕捉来自不同方向的 memory(信息)。

先对图片和公式中的符号集中说明,需要时方便查看:

2. Deep RNN(多层 RNN)

前文我们介绍的 RNN,是数据在时间维度上的变换。不论时间维度多长,只有一个 RNN 模块, 即只有一组待学习参数 (W,U),属于单层 RNN。deep RNN 也叫做多层 RNN,顾名思义它由多个 RNN 级联组成,是输入数据在空间维度上变换。如图 1-2, 这是 L 层的 RNN 架构。每一层是一个单独的 RNN,共有 L 个 RNN。

3. Many to One(多对一)

在 RNN 的结构中,并不是每个时刻都要输出,根据任务需求的不同,我们可以自行决定,什么时候输出。比如我们在做情感分类任务时,一句话有多个文字,但只在最后时刻有个输出,表示 positive 或者 negtive。"多对一"的结构可以完成这个任务,如图 1-3 所示, 有多个输入,最后时刻的隐状态 <math xmlns="http://www.w3.org/1998/Math/MathML"> h T h_T </math>hT,包含了整句话的信息,然后将 <math xmlns="http://www.w3.org/1998/Math/MathML"> h T h_T </math>hT经过变换后输出这句话的情感状态。需要额外注意,图 1-3 只是一个结构示意图,图中蓝框不仅仅可以代表单个 RNN,有时候也可以代表 biRNN 模块或者 DeepRNN 模块。

4. One to Many (一对多)

顾名思义"One to Many"是只有一个时刻的输入,具有多个时刻输出的结构。如图 1-4 所示,比如我们要描绘一张图片的内容时,用一个 CNN 模型将图片映射为一个高维表示,记作 x1 并作为 RNN 的输入,然后不断输出对图片的描述。

5. Many to Many (多对多)

从 Encode 和 Decode 的架构看,"Many to Many"有两种不同的结构。一种是 Encode 和 Decode 分别用不同的模块,即参数不一样;另外一种是 Encode 和 Decode 共用同一个模块,即共用一组参数。如图 1-5 是 Encode 和 Decode 不同模块的结构,常用于翻译任务中。这种结构可以看成是"Manyto One"结构和"One to Many"结构的组合。

如图 1-6 是 Encode 和 Decode 属于相同模块的结构, 常用于"Language Modeling"。

6. 结语

本文以基础的 RNN 模块为基本单元,先介绍双向 RNN 和 DeepRNN 的原理,然后介绍一些应用更加灵活和广泛的架构,如"Many to One","One to Many","Many to Many"。下一节将要从直观上理解 RNN 的两个问题:信息形变和梯度消失/爆炸。文中难免存在理解不正确,或者描述不清的地方。欢迎留言讨论。

7. 团队介绍

「三翼鸟数字化技术平台-智慧设计团队」 依托实体建模技术与人工智能技术打造面向家电的智能设计平台,为海尔特色的成套家电和智慧场景提供可视可触的虚拟现实体验。智慧设计团队提供全链路设计,涵盖概念化设计、深化设计、智能仿真、快速报价、模拟施工、快速出图、交易交付、设备检修等关键环节,为全屋家电设计提供一站式解决方案。

相关推荐
似乎很简单16 小时前
卷积神经网络(CNN)
深度学习·神经网络·cnn
盼小辉丶17 小时前
Transformer实战(18)——微调Transformer语言模型进行回归分析
深度学习·语言模型·回归·transformer
格林威17 小时前
机器视觉检测如何使用360 度全景成像镜头进行AI 瑕疵检测
人工智能·深度学习·数码相机·机器学习·计算机视觉·视觉检测·相机
九章云极AladdinEdu17 小时前
深度学习优化器进化史:从SGD到AdamW的原理与选择
linux·服务器·开发语言·网络·人工智能·深度学习·gpu算力
ACEEE122220 小时前
Stanford CS336 | Assignment 2 - FlashAttention-v2 Pytorch & Triotn实现
人工智能·pytorch·python·深度学习·机器学习·nlp·transformer
NG WING YIN21 小时前
Golang關於信件的
开发语言·深度学习·golang
大千AI助手1 天前
残差:从统计学到深度学习的核心概念
人工智能·深度学习·resnet·统计学·方差分析·残差·残差分析
max5006001 天前
使用OmniAvatar-14B模型实现照片和文字生成视频的完整指南
图像处理·人工智能·深度学习·算法·音视频
技术程序猿华锋1 天前
深度解码OpenAI的2025野心:Codex重生与GPT-5 APIKey获取调用示例
人工智能·vscode·python·gpt·深度学习·编辑器
linjoe991 天前
【Deep Learning】Ubuntu配置深度学习环境
人工智能·深度学习·ubuntu