RNN和LSTM

RNN是一种能处理序列数据的神经网络,通过隐藏层的循环连接实现记忆功能,但存在梯度消失问题。LSTM作为RNN的改进模型,通过门控机制有效解决了长期依赖问题,常用于需要长时间记忆的任务。LSTM包含遗忘门、输入门、候选值和输出门,分别负责信息的选择性保留和传递。

rnn 循环神经网络,(Recurrent Neural Network)

循环神经网络的主要用途是处理和预测序列数据。在全连接神经网络或者卷积神经网络中,都素hi从输入层到隐藏层再到输出层的,层与层之间都的全连接的,但每层之间的结点是无连接的。这就导致当前神经元没有前一个的记忆。而RNN的隐藏层之间的结点是有连接的,RNN的当前隐藏的输入包含输入层的输出和上一个隐藏层的输出。下图是一个单独的循环神经网络结构:

图中可以看到,循环神经网络的主体结构A的输入除了来自输入层Xt,还有一个循环的边来提供当前时刻的状态。在每一个时刻,循环神经网络的模块A会读取t时刻的输入Xt,并输出一个值ht。同时A的状态会从当前步传递到下一步。因此,循环神经网络理论上可以被看作是同一神经网络结构被无限复制的结果。但出于优化的考虑,目前循环神经网络无法做到真正的无限循环,所以现实中一般会将循环体展开,于是可以得到下图所展示的结构。

循环神经网络可以被看做是同一神经网络结构在时间序列上被复制多次的结果,这个被复制多次的结构被称之为循环体。如何设计循环体的网络结构是循环神经网络解决实际问题的关键。和卷积神经网络过滤器中参数是共享的类似,在循环神经网络中,循环体网络结构中的参数在不同时刻也是共享的。

RNN循环神经网络的优缺点

优点:具有记忆功能,可以处理和预测时间序列的数据

缺点:由于这样的循环体的复制有一个问题就是,下一时刻只是受到了上一时刻输出的影响,而实际上下一时刻的结果在处理自然语言的时候往往需要结合上文中很多时刻值的影响,这就是RNNs最大的不足。另外,虽然RNN程序好写,训练却是非常困难,而且网络是根据输入而展开的,输入越多展开越长,就月有可能回导致梯度消失(gradient vanish)和梯度爆炸(gradient explode)。梯度爆炸可以通过Gradient Clipping的方法解决,但是梯度消失暂时还没有办法解决。所以循环神经网络对长短期记忆的要求依然没有达到。

LSTM-RNNs 的改进模型

Long Short Term网络,又被称作LSTM,是一种RNN特殊的类型,可以学习长期依赖信息。LSTM由Hochreiter & Schmidhuber (1997)提出,并在近期被Alex Graves 进行了改良和推广。在很多问题上,LSTM都取得了相当巨大的成功,并得到了广泛的使用。

LSTM通过刻意的设计来避免长期依赖问题。记住长期的信息在实践中是LSTM的默认行为,而非需要付出很大代价才可以获得的能力。所有RNNs都具有一种重复神经网络模块的链式形式。在标准的RNNs中,这个重复模块只有一个非常简单的结构,例如一个tanh层。

LSTM的结构模型是这个样的,在图中每一条黑线传输着一个向量,从一个节点的输出到其它节点的输入。粉色代表的着诸如向量的和的操作,而黄色的矩阵就是学习到的神经网络层。合在一起的线表示向量的连接,分开的表示内容被复制,然后分发到不同的位置。

LSTM的关键就是细胞的状态,在图上方贯穿而行的类似于传送带,细胞的状态在整个传送带上向下运行,下面只有少量的线性交互,因此信息能够在上面流通,且比较容易保持不变。因此通过这个传送带,可以实现长时间的记忆功能。

LSTM最独到的设计就是使用被称作“门”的结构,在细胞状态上增加或者除去信息。门是一种让信息选择式通过的方法,它们包含一个激活函数为sigmoid的神经网络层和一个pointwise乘法操作。

sigmoid层输出0到1之间的数值,描述每个部分有多少量可以通过,0表示不允许任何信息通过,1表示允许任何信息通过。LSTM拥有三个门来保护和控制细胞的状态。

第一个门被称为忘记门,此门会读取xt和ht-1的信息然后决定传送什么信息,丢弃什么信息,输出一个0-1之间的数字给Ct-10。在这个问题中,细胞状态可能包含当前主语的性别,因此正确的代词可以被选择出来。当看到新的主语时,旧的主语就希望被完全舍弃。

此门所表达的含义表达式为:

下一步确定什么样的信息被放到细胞状态中去,这里包含两个部分,第一个部分为sigmoid层,被称为“输入门层”,它决定什么信息将会被更新,第二个是tanh层创建的一个新的候选值向量。它会被加入到细胞状态中,然后用这两个信息来更新细胞状态。在语言模型的例子中就是增加新的主语的性别到细胞状态中,来替代旧时需要忘记的主语的性别。其流程如下图所示:

 

此处门的表达式为:

之后就是根据上面的两个值去更新旧细胞的状态,当然上面两个值是需要根据决定更新每个状态的程度进行变化,在语言模型的例子中,就是实际根据前面确定的目标,丢弃旧代词的性别信息并添加新的信息的地方。

 

更新旧细胞状态的表达式为:

最终,需要确定输出什么值,这个输出将会基于细胞的状态,但是也是一个过滤后的版本。首先使用一个sigmoid层来确定细胞状态的哪个部分将输出出去,接着,把细胞状态通过激活函数tanh进行处理,使得得到一个-1到1之间的值,并将它和sigmoid门的输出相乘,最后就仅会输出确定输出的那部分,如下图所示。在语言模型的例子中,因为看到了一个代词,可能需要输出一个与一个动词相关的信息。例如,在知道输出是单数还是复数的时候,也就知道了动词是否需要进行词性变化。

 

其输出状态的表达式为:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值