RNN

最近真是心态炸了,标题都写错了.

前言

在之前已经复习过了CNN的主要内容, CNN在处理图像与文本的任务上有非常好的表现, 可以认为CNN侧重于构造单个结构性样本的相邻区域之间的组合特征, 这里有一个很重要的词就是单个样本,那么对于某些样本之间存在关联的数据,如何去挖掘前后样本的关联?
比较常见的有时间序列分析以及隐马尔科夫模型等方法.

  • 时间序列分析
    其中时间序列分析常见于计量经济学领域,该技术有以下三个基本特点:
    (1)假设事物发展趋势会延伸到未来;
    (2)预测所依据的数据具有不规则性;
    (3)不考虑事物发展之间的因果关系。
    基本的思想是,某一时刻的输出等于前面若干时刻输出的线性组合, 常用的算法包括:ARMA, ARIMA等.
  • 隐马尔科夫模型(HMM)
    一种用于标注问题的统计学模型, 模型假设序列满足马尔科夫性,也就是每个状态的转移只依赖于之前的n个状态. 这里夹带一点个人的理解.
    HMM与时间序列分析都假设当前时刻的输出依赖于前面若干时刻输出, 而不同有以下几点:
    a.时间序列分析不考虑事物发展的因果关系,而HMM反之
    b.时间序列分析针对连续与离散的输出结果, 而HMM针对的是离散的输出,也就是输出的状态有固定的集合.
    HMM常用于ASR, NLP, 基因序列分析等领域, 一个最常见的应用就是分词算法.
  • Why RNN
    那么为什么要搞出一个RNN? 其实也就是为了让神经网络能处理序列输入数据, 能够在模型中学习上下文信息. 假设我们构建一个简单的对话机器人(Chat Bot), 在下面的对话场景中, 如果不带上下文信息的话, 机器人无法知道对方是想询问天津明天的天气; 但是如果机器人的分类器算法有能力学习上下文信息, 这种意图就可以很轻松地识别出来.


    RNN_第1张图片
    上下文对话

基本原理

在已知神经网络ANN的基本结构以及BP算法的前提条件下.
最基本的RNN原理就是一句话, 某一时刻的隐藏层输出作为下一时刻输入的一部分, 这样就做到了上下文信息的传递, 从图上可以非常清楚地看到RNN的基本结构.

RNN_第2张图片
RNN结构

如图可以得到任意时刻的输出为:

其中F为输出层函数, 暂时忽略隐藏层的激活函数,到这里为止,也就是朴素的RNN的前向传导算法.
这里关于BP算法的推导过程就忽略了把.

若干变种

从架构设计到应用开发,关于 RNN 的文献已经有大量的论文发表, 比较重要的研究成果如下图.


RNN_第3张图片
RNN研究历史

这里我挑选几种最常见的变种进行回顾.

LSTM

LSTM全称是Long Short Term Memory, 长短期记忆网络.对于普通的RNN, 由于在传播过程中的信息丢失, 对于较长序列,在序列尾部就将头部信息基本上抛弃了, 基于这个问题, LSTM 在1997年由“Hochreiter & Schmidhuber”提出,目前已经成为 RNN 中的标准形式,用来解决上面提到的 RNN 模型存在“长期依赖”的问题。废话少说先上图


RNN_第4张图片
LSTM结构图

LSTM通过三种"门"结构来控制不同时刻的状态以及输出,当我第一次看到上面这个图以及门结构的时候,我觉得他跟我本科学的电气里的某类原件有点像, 比如说下面这个IGBT管子.


RNN_第5张图片
IGBT

这个管子的原理我已经忘的一干二净了,不知道LSTM跟这些个玩意是不是有一定联系.不过简单地来说, 这种管子里都有类似于二极管的导电特性,就是下面这个图.这个图形的大致内容是,当电压低于VBR时完全不导电,在VR到VF之间时缓慢上升,电压超过VF时电流迅速增大,就像没有电阻一样.
RNN_第6张图片
sigmoid函数

这个图形的性质其实是有点像sigmoid函数的, 而LSTM中的门其实都是通过sigmoid去实现的,所以门的特性也表现为高通低阻, 也就是超过某一数值时保留上文信息,而低于某一数值时就丢弃.这块只是个人的一些理解,有点扯远了,希望有谁懂的话指出一下.

RNN_第7张图片
发光二极管特性
  1. 遗忘门
    shit,点了保存又没保存,重来了.
    遗忘门的作用是决定上一时刻的信息C在当前时刻是否保留,而LSTM之所以叫长短期记忆网络,是因为,在下面的图里,C代表了长期记忆,而上一时刻的隐藏层信息h代表短期记忆.
    从图中可以看出来,相对于朴素的RNN, LSTM多了一个状态C. 这个隐藏状态通常成为细胞状态(Cell State).


    RNN_第8张图片
    遗忘门

    此处当前时刻的输入x_t的作用是根据输入的新信息决定忘记哪些历史信息.

  2. 输入门
    作用是处理当前时刻的输入信息,确定哪些信息会被保存到细胞状态中.输入门通常包含两部分,其中sigmoid决定更新哪些信息, tanh输出更新信息的值,二者结合更新到细胞状态里.结构图如下:


    RNN_第9张图片
    输入门
  3. 输出门
    输出门的作用是在计算完细胞状态后,进行结果的输出,子结构如下


    RNN_第10张图片
    输出门

    从图中可以看出,隐藏状态 ht 的更新由两部分组成,输出门依然是由历史信息 ht-1 和新的信息 xt 来决定的.

GRU

GRU即Gated Recurrent Unit,是针对LSTM的一种变种,主要在于简化了模型,原本的三个门变成了两个门,即更新门与重置门.其中更新门用于控制上一时刻状态信息带入当前时刻的比例,重置门用于控制忽略上一时刻的状态信息的程度.


RNN_第11张图片
GRU结构

从图中容易看到,GRU将LSTM中的细胞状态与隐藏层信息合成了一个单一的隐藏层输出.

Bi-LSTM

全称是Bi-directional LSTM,也就是双向LSTM网络, 其特点就是将前向与后向的LSTM相结合,那么既能考虑上文信息,又能考虑下文信息, 这就是它相对于LSTM的优势所在.
双向卷积神经网络的隐藏层要保存两个值, A 参与正向计算, A' 参与反向计算。如图


RNN_第12张图片
Bi-LSTM

干脆再偷一下计算过程把.


Bi-LSTM计算

在某些需要考虑上下文信息的任务中, Bi-LSTM 的表现要比LSTM好,比如情感分析与实体抽取,但是代价就是其计算复杂度明显要比LSTM还高.

此外还有一些其他的变种,例如GRU的变种SRU, BRNN等, 平时用不上就忽略了.
之前写的没保存上,任性点不写了.

参考文献

[1]黄成甲.数据分析之时间序列分析[EB/OL].https://www.jianshu.com/p/ff6abad2514f,2018-09-03.
[2]机器之心.从90年代的SRNN开始,纵览循环神经网络27年的研究进展[EB/OL].https://zhuanlan.zhihu.com/p/32668465,2018-01-05.
[3]不会停的蜗牛.双向 LSTM[EB/OL].https://www.jianshu.com/p/471bdbd0170d,2017-08-11.
[4]lreaderl.GRU与LSTM总结[EB/OL].https://blog.csdn.net/lreaderl/article/details/78022724,2017-09-18.
[5]李航.统计学习方法[M].清华大学出版社,2012.

你可能感兴趣的:(RNN)