1. 认识RNN模型

1.1 什么是RNN模型

RNN中文称作循环神经网络, 是一种专门用于处理序列数据的神经网络架构. 一般以序列数据为输出, 通过神经网络内部的结构设计有效捕捉序列之间的关系特征, 一般也是以序列形式进行输出. 它的特点是能够捕捉序列数据中的事件依赖关系, 广泛应用于自然语言处理, 事件序列预测, 语音识别等领域.

1.1.1 核心概念

  1. 序列数据: 指的是数据项之间存在顺序关系的数据.
  2. 循环连接: RNN的核心在于其循环连接, 它允许信息在网络内部循环流动, 这使得网络可以保留过去的信息, 并将其用于处理当前的输入.
  3. 隐藏状态: RNN在每个时间步都会维护一个隐藏状态, 这个隐藏状态包含了过去的信息. 它可以被认为是网络的’记忆’.
  4. 时间步: 指的是序列数据中的每个元素, 例如文本中的一个单词, 语音中的一个音频帧.
  5. 工作原理:
    • 输入: RNN接收一个序列数据作为输入, 每次输入序列中的一个元素(时间步).
    • 隐藏状态更新: 对于每个时间步, RNN根据当前的输入和上一个时间步的隐藏状态计算出新的隐藏状态. 这个计算通常使用激活函数(tanh或ReLU)
    • 输出: RNN根据当前的隐藏状态计算出当前的输出.
    • 循环: 上述过程会在序列的每个事件步重复进行, 知道序列结束.

1.1.2 RNN神经网络结构

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

1.1.3 计算方法

在这里插入图片描述

1.2 RNN模型的数据处理过程

RNN的主要作用是处理序列数据, 并捕获数据中的时间依赖关系.

1.3 RNN模型的分类

1.3.1 N vs N-RNN

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

应用场景:
- 词性标注: 为每个单词标注词性.
- 输入: [‘I’, ‘love’, ‘programming’]
- 输出: [‘PRON’, ‘VERB’, ‘NOUN’]
- 时间序列预测: 预测每个时间步的值.
- 输入: [t1, t2, t3, t4]
- 输出: [t2, t3, t4, t5]
-
结构示意图:
在这里插入图片描述

1.3.2 N vs 1-RNN

有时候我们要处理的问题输入是一个序列, 而要求输出是一个单独的值而不是序列, 应该怎样建模呢? 我们只要在最后一个隐藏层输出h上进行线性变换就可以了, 大部分情况下, 为了更好的明确结果, 还要使用sigmoid或者softmax进行处理.

应用场景:
- 情感分析: 根据一段文本判断情感倾向.
- 输入: [‘I’, ‘love’, ‘programming’]
- 输出: ‘Positive’
- 文本分类: 将一段文本分类到某个类别.
- 输入: [‘The’, ‘movie’, ‘was’, ‘great’]
- 输出: ‘Positive Review’
-
结构示意图:
在这里插入图片描述

1.3.3 1 vs N-RNN

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

应用场景:
- 文本生成: 根据一个初始词生成一段文本.
- 输入: ‘I’
- 输出: [“I”, “love”, “programming”]
- 图像描述生成: 根据一张图像生成描述文本.
- 输入: 图像特征
- 输出: [“A”, “dog”, “is”, “running”]
-
结构示意图:
在这里插入图片描述

1.3.4 N vs M-RNN

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

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

应用场景:
- 机器翻译: 将一种语言的句子翻译成另一种语言.
- 输入: [‘I’, ‘love’, ‘programming’]
- 输出: [‘我’, ‘喜欢’, ‘编程’]
- 文本摘要: 将文本压缩为短文本.
- 输入: [“The”, “quick”, “brown”, “fox”, …]
- 输入: [“Quick”, “fox”, “story”]

结构示意图:
在这里插入图片描述
对比:
在这里插入图片描述

1. 4 小结

  • 按照输入和输出的结构进行分类:
    • N vs N-RNN
    • N vs 1-RNN
    • 1 vs N-RNN
    • N vs M-RNN
  • 按照RNN的内部构造进行分类:
    • 传统RNN
    • LSTM
    • Bi-LSTM
    • GRU
    • Bi-GRU
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐