深度学习第38讲:RNN的 4 种类型

在上一讲中,我们对 RNN 的基本结构和计算机制有了初步的了解。本节笔者将和大家继续学习 RNN 的相关知识,对 RNN 的几种不同的类型结构进行分析。上一讲中我们以 RNN 中最普遍、最常见的结构类型为例进行了说明,即 N VS N 的结构类型。

N VS N

N VS N(图片源自网络)

所谓 N VS N,即 RNN 的输入输出序列是等长的。作为一种经典的 RNN 结构,N VS N 也有着广泛的应用:比如说信息抽取中的命名实体识别,我们需要判断每一个输入单词是否是命名实体的一部分,再比如我们要对视频的每一帧的分类标签进行分类,这也是一个 N VS N 的 RNN 结构。

虽说N VS N 是一种经典的 RNN 结构,但再实际应用中,我们碰到的更多的是输入输出序列不相等的情况。主要分以下三种:N VS 1(多对一)、1 VS N(一对多)和 N VS M(多对多/不等)。我们分别来看这三种结构的 RNN 以及应用方向。

N VS 1

类比于N VS N,N VS 1 要处理的问题是输入为一个序列,但输出却是一个单值的情况。这种情况 RNN 结构应该做怎样的变化呢?很简单,只要将之前每一个 y 输出去掉,统一在最后一个时间步对全部输入进行进行输出变换即可。N VS 1 的结构如下图所示:

N VS 1 (图片选自caicai博客:https://caicai.science/)

由上图可以看到,输入 X 有 5 个时间步的输入,但仅在最后一个隐变量激活时做输出转换为 y。N VS 1 常用来处理序列分类问题,比如文本的情感分类,视频内容分类等等。

1 VS N

如果把 N VS 1 的输入输出对换一下就得到了 1 VS N 的 RNN 结构。即输入为单一值,输出为一个序列。其结构图就是 N VS 1 调换过来,如下图所示:

1 VS N (图片选自caicai博客:https://caicai.science/)

1 VS N 还有一种变体表达方式,即将输入 X 作为每个时间步的输入:

N VS 1变体 (图片选自何之源知乎专栏)

https://zhuanlan.zhihu.com/p/28054589

作为 N VS 1 的对称结构,1 VS N 通常用于给定类别生成一段音乐,或者给定图像生成一段文字等等。

N VS M

RNN 结构的最后一种变体结构,也是最重要的一种是 N VS M 结构,这也是一种多对多的 RNN,但与 N VS N 不同的是,N VS M 输入输出并不相等。这种 N VS M 模型也叫做 seq2seq 模型(序列对序列),N VS M 符合实际序列建模的大多数情况,即很多时候我们的输入输出序列并不等长,比如我们进行汉译英的机器翻译,输入汉语句子和输出英文句子基本不会等长。

对于这种情况,RNN 的做法通常是先将输入序列编码成一个上下文向量 c,如下图所示:

N VS M 编码 (图片选自何之源知乎专栏)

https://zhuanlan.zhihu.com/p/28054589

如上图所示,我们可以通过对最后一个隐变量以 c 进行赋值,然后展开来写。编码完成后我们再用一个 RNN 对 c 的结果进行解码,简而言之就是将 c 作为初始状态的隐变量输入到解码网络,如下图所示:

N VS M 解码 (图片选自何之源知乎专栏)

https://zhuanlan.zhihu.com/p/28054589

N VS M 的 RNN 结构因为对输入输出长度没有要求,因而有着特别广泛的应用,包括:

语音识别

机器翻译

DNA序列分析

文本摘要生成

...

以上便是 RNN 的 4 种基本结构类型,后续笔者将继续对这 4 种结构网络的应用进行深入的学习。

参考资料:

deeplearningai.com

https://zhuanlan.zhihu.com/p/28054589

https://caicai.science/2018/05/24/attention%E6%80%BB%E8%A7%88/

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20181007B0P7KD00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券