深度学习(十):循环神经网络

卷积神经网络可以有效地处理空间信息, 循环神经网络就是专门为更好地处理序列信息而生,如时间等。循环神经网络通过引入状态变量存储过去的信息和当前的输入,从而可以确定当前的输出。

一,什么是循环神经网络

循环神经网络(Recurrent Neural Network, RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络。
它不仅考虑前一时刻的输入,而且赋予了网络对前面的内容的一种记忆功能.

之前的神经网络中隐藏层节点之间是没有连接的,RNN里面是有的,网络会对前面的信息进行记忆并应用于当前输出的计算中,隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出

代表性的RNN有:

  • 基本RNN:循环网络的基本构成
  • LSTM:突破性进展的长短期记忆网络
  • GRU:新式的Cell模块单元
  • NTM:更大记忆体模型的探索

二,基本RNN

首先看一下简单的循环神经网络,由输入层、一个隐藏层和一个输出层组成

和之前的全连接神经网络不同的是,在隐藏层中,有用隐藏层的输出作为下一次隐藏层的输入。权重矩阵 W就是隐藏层上一次的值作为这一次的输入的权重。这个就是实现时间记忆功能的方法。

把这个图具体一下

t-1时刻的输出是影响着t时刻的输出的,画成标准的RNN结构图如下:

可以看出来,输入和输出序列必须是等长的

三,RNN变体

因为标准RNN的限制,经常会有要求输入和输出不是同样数量的情况

3.1 N VS 1

要求输入一个序列,输出是一个单独的值,在最后进行输出变换即可

通常用来处理序列分类问题。如输入一段文字判别它所属的类别,输入一个句子判断其情感倾向,输入一段视频并判断它的类别等等。

3.2 1 VS N

输入一个单独的值,输出是一个序列

可以处理从图像生成文字,从类别生成语音或音乐等

3.3 N VS M

输入输出都是序列,但不等长。这种结构又叫Encoder-Decoder模型,也可以称之为Seq2Seq模型

有一个过程向量c,常用的求取方式有以下3种

得到c之后,就用另一个RNN网络对其进行解码

常常应用在机器翻译、文本摘要、阅读理解、语音识别

3.4 Attention机制

在Encoder-Decoder结构中,Encoder把所有的输入序列都编码成一个统一的语义特征c再解码,因此, c中必须包含原始序列中的所有信息,它的长度就成了限制模型性能的瓶颈。

Attention机制通过在每个时间输入不同的c来解决这个问题

每一个 c 会自动去选取与当前所要输出的 y 最合适的上下文信息。具体来说,我们用 a_{ij} 衡量 Encoder 中第 j 阶段的 h_j 和解码时第 i 阶段的相关性,最终 Decoder 中第 i 阶段的输入的上下文信息 c_i 就来自于所有 h_ja_{ij} 的加权和。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容