1 啥是RNN模型?

以序列数据为输入,通过网络内部的结构设计有效捕捉序列之间的关系特征,一般也以序列形式进行输出。

一般单层神经网络结构:

InputHiddenOutput

RNN单层网络结构:

01-突破序列建模瓶颈:解密RNN为何成为NLP任务的核心引擎_机器翻译

以时间步对RNN进行展开后的单层网络结构:

01-突破序列建模瓶颈:解密RNN为何成为NLP任务的核心引擎_文本分类_02

RNN的循环机制使模型隐层上一时间步产生的结果,能作为当下时间步输入的一部分(当下时间步的输入除了正常的输入外还包括上一步的隐层输出)对当下时间步的输出产生影响。

2 RNN模型的作用

RNN结构能很好利用序列之间的关系,因此针对自然界具有连续性的输入序列,如人类语言、语音等进行很好处理,广泛应用于NLP领域各项任务,如文本分类, 情感分析, 意图识别, 机器翻译等。

以一个用户意图识别的例子进行简单的分析:

01-突破序列建模瓶颈:解密RNN为何成为NLP任务的核心引擎_机器翻译_03

第一步:用户输入"What time is it ?",先要对它进行基本的分词,因为RNN是按序工作,每次只接收一个单词进行处理。

01-突破序列建模瓶颈:解密RNN为何成为NLP任务的核心引擎_机器翻译_04

第二步:先将单词"What"输给RNN,它将产生一个输出O1

01-突破序列建模瓶颈:解密RNN为何成为NLP任务的核心引擎_文本分类_05

第三步:继续将单词"time"输给RNN,但此时RNN不仅利用"time"产生输出O2,还会用来自上一层隐层输出O1作为输入信息:

01-突破序列建模瓶颈:解密RNN为何成为NLP任务的核心引擎_文本分类_06

第四步:重复直到处理完所有单词:

01-突破序列建模瓶颈:解密RNN为何成为NLP任务的核心引擎_文本分类_07

第五步:最后,将最终的隐层输出O5进行处理来解析用户意图:

01-突破序列建模瓶颈:解密RNN为何成为NLP任务的核心引擎_机器翻译_08

3 RNN模型分类

两个角度对RNN模型分类:

3.1 输入和输出的结构

① N vs N - RNN

RNN最基础的结构形式,最大特点是输入和输出序列等长。由于这限制,使其适用范围较小,可用于生成等长度的合辙诗句。

y₁      y₂      y₃      y₄                      ↑       ↑       ↑       ↑                      │       │       │       │        ┌───┴───┐ ┌───┴───┐ ┌───┴───┐ ┌───┴───┐ ┌───┴───┐        │   h0  │→│   h₁  │→│   h₂  │→│   h₃  │→│   h₄  │        └───┬───┘ └───┬───┘ └───┬───┘ └───┬───┘ └───┬───┘                      ↑       ↑       ↑       ↑                      │       │       │       │                      x₁      x₂      x₃      x₄

② N vs 1 - RNN

有时要处理的问题输入是一个序列,而要求输出是一个单独的值而非序列,咋建模?

在最后一个隐层输出h上进行线性变换即可。大部分情况下,为了更好的明确结果,还要用sigmoid或softmax进行处理. 这种结构经常被应用在文本分类问题上.

③ 1 vs N - RNN

如果输入不是序列而输出为序列的情况怎么处理呢?我们最常采用的一种方式就是使该输入作用于每次的输出之上. 这种结构可用于将图片生成文字任务等。

④ N vs M - RNN

这是一种不限输入输出长度的RNN结构, 它由编码器和解码器两部分组成, 两者的内部结构都是某类RNN, 它也被称为seq2seq架构. 输入数据首先通过编码器, 最终输出一个隐含变量c, 之后最常用的做法是使用这个隐含变量c作用在解码器进行解码的每一步上, 以保证输入信息被有效利用。

3.2 RNN的内部构造

  • 传统RNN
  • LSTM
  • Bi-LSTM
  • GRU
  • Bi-GRU

seq2seq架构最早被提出应用于机器翻译, 因为其输入输出不受限制,如今也是应用最广的RNN模型结构。在机器翻译, 阅读理解, 文本摘要等众多领域都进行了非常多的应用实践。