在上一讲中,我们对 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/
领取专属 10元无门槛券
私享最新 技术干货