深度学习基础:RNN与LSTM

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/nxcxl88/article/details/52590500

    这一篇主要是想根据Google的Colah的文章《Understanding LSTM Networks》阐述一下什么是LSTM(Long Short Time Memory)网络。

RNN:Recurrent  or Recursive

    RNN可以指代两种神经网络,Recursive Neural Network 以及Recurrent Neural Network,从英语的字面意思来说,前一种应该被称作递归神经网络,但是现在论文中提到的递归神经网络主要都指的是Recurrent Neural Network。
    Recursive Neural Network是为了解决日常现象中一些递归结构的存在而特别设计的网络,比如在图像处理中一个表示车的图片中可以分为若干块小的零件图片,如窗户,轮子,但是这些代表窗户的图片也可能是飞机甚至是房子的一部分;比如在自然语言处理中出现的名词带的从句中又出现名词的情况。因此,Recursive Neural Network是一种对网络结构的重复,重复的网络权值构成一个树状结构,主要应用是图片分割与注释,在自然语言处理中也有应用。
Recursive Neual Network[1]

而Recurrent Neural Network则更偏重于时序上的处理,因此是一个链式的连接。
Recurrent Neural Network[2]
下面的RNN主要是指Recurrent Neural Network。

RNN的缺陷和LSTM的应用

     如果把RNN展开,可以看到RNN的结构和普通的网络相似,可以将其看作是若干个相同的网络相连,并将信息在网络中进行传递。由于这种信息传递的存在,RNN的就可以根据之前出现的信息对当前的信息进行推断,特别是在语言处理中,RNN就可以用于根据上文预测下一个将要出现的词。但是RNN只能处理一定间隔的信息,如果上文间隔过远,就有可能出现难以联想的情况。比如:
I grew up in France...此处省略100个字....I speak fluent French.
    这种提示信息France距离French就间隔过远,RNN处理起来就比较吃力了。理论上RNN是能够通过一些人为的参数设置来实现这种大间隔的处理的,但是RNN似乎不能够去通过学习实现。《Understanding LSTM Networks》还列举了两篇论文来证明这一点。
     因此,1997年有人就提出了LSTM(Long Short Term Memory Network),这是一种特殊的RNN,按照文章的说法,LSTM生来就是能够长时间记忆的网络,不需要刻意学习。
RNN的展开结构
LSTM的展开结构
    LSTM的展开结构中与RNN的不同主要是存在控制存储状态的结构,其结构构成与作用如下所示。我们先将这个重复结构叫做一个单元,把该单元的一次计算作为一拍,那么这个单元存在三组重要的变量:单元输入、单元输出以及单元状态(Cell State),从直观来说,LSTM的作用是:
1. 根据上一拍单元的输出ht-1以及本拍的输入xt,计算出需要单元状态中需要遗忘的元素,这种控制是通过门(Gate, )实现的;
2. 根据上一拍输出ht-1与本拍输入xt选择需要在单元状态中新记忆的状态;
3. 根据单元状态和本拍输入输出ht。
    通过这样的操作,该单元就将需要记忆的信息通过单元状态的形式记录下来并且在神经元中进行传递,而每一次计算,神经元都可以根据当前的输入对单元状态进行修改。

RNN单元结构

     实际上LSTM有很多的变种。
1. Peephole connections - 中文直译:窥视连接
    原始的RNN的控制门(Gate, )只输入上一拍神经元输出和本拍输入,Peephole connections则将单元状态 引入到输入中。

2. Coupled forget and input gates - 中文直译:耦合遗忘和输入单元
     原始的RNN的遗忘和新记忆的过程是分开的,Coupled forget and input gates则将两个过程进行耦合,即只遗忘那些有新元素来填充的元素。


3. GRU - Gated Recurrent Unit - 中文直译:门控循环单元
    还有一种RNN变种干脆将单元状态去除,直接通过输出存储信息,由于这种结构比LSTM更加简单,因此逐渐变得流行起来。

     《Understanding LSTM Networks》这篇文章还提到,虽然基本每个新的论文都提出不同的LSTM结构,但实际上,这些结构的效果都差不多。一篇论文还测试了10000种RNN不同架构的效果,结果发现对于一些特定任务,有些RNN的效果比LSTM的效果更好。





[1] Socher, Richard; Lin, Cliff; Ng, Andrew Y.; Manning, Christopher D. "Parsing Natural Scenes and Natural Language with Recursive Neural Networks" . The 28th International Conference on Machine Learning (ICML 2011).
[2] Understanding LSTM Networks:http://colah.github.io/posts/2015-08-Understanding-LSTMs/

猜你喜欢

转载自blog.csdn.net/nxcxl88/article/details/52590500