RNN与LSTM

来源:互联网 发布:淘宝网男徒步凉鞋 编辑:程序博客网 时间:2024/05/29 10:14

为什么有了神经网络还会有RNN,这是因为传统神经网络没有考虑每次输入之间的相关性以及输出之间的相关性,它只对每次输入进行同样的运算并得到结果,没有考虑到连续的输入之间本身存在一种相关性,也就是说每次输入都是独立的。基于每次输入都是独立的假设,每次输出都只与当前输入有关,不能从之前的输入以及输出中得到有效的信息,这在许多情况下不是我们所期望的。RNN就是注意到了这种相关性并利用了这种相关性。RNN在许多任务上都取得了很好的效果,最出名的就是自然语言处理。

RNN称为循环神经网络,与传统的神经网络不同的是多了循环二字。循环的意义是指上一时刻的隐层状态s(t-1)可以作为当前时刻的输入,与当前时刻的输入一起决定当前时刻的状态s(t)。注意,这里可以循环的是每一时刻的隐层状态s,而并非输出o,而且循环的作用对象也是s,也就是说这种循环是隐层状态s的循环。

RNN结构展开(参考链接1):

RNN structure

传统RNN结构主要包括input(x)、hidden state(s)以及output(o)。
以t时刻为例:
x(t) 为t时刻的输入,如果没有循环结构的话,x(t) 将直接通过函数U得到t时刻的隐层状态s(t),但是有了循环结构后x(t) 仅作为s(t)的一部分输入。
s(t-1) 为t-1时刻的隐层状态,作为s(t)的另一部分输入,通过函数W作用与s(t)。这样s(t)就有了两个输入,相较于传统神经网络仅仅是计算s(t) 时多了一个输入。
o(t) 为t时刻的输出,是s(t)通过函数V得到的。由此可知,通过对s进行循环,就可以间接对o产生影响。

对RNN结构的几点解释:
1. 你可以把s(t)看作网络的memory,理论上它能够得到t时刻以前的所有信息(但实际并不可以),o则是基于s进行运算得到的。
2. 与传统神经网络不同的是,RNN 在每个时刻t的参数U、W、V都是一样的。这表明对于同一个任务,我们在每个时刻都是用同样的参数,不同的仅仅只有输入,这样大大减少了网络的参数。
3. 上面每个时刻都对应一个输出,但是在实际应用中并非需要输出每个值,依据具体的情况而定。

**注意:**RNN中最重要的是hidden state,所以我们对s进行循环,s是每个时刻的memory,存储的是每个时刻的较为原始的输出(相较于o,s 更为原始),存储了更多原始的信息。之所以不对o进行循环是因为o已经做了V变换,使得下一时刻难以从中取得较多的有用信息。另一方面就是并不是每个时刻都会有输出o。

从上面可以知道,RNN相对于传统神经网络,利用了输入之间的相关性,但是传统的RNN不能有效的利用相距较远的输入之间的关系。所以在此基础之上提出了RNN的增强版LSTM,LSTM通过对隐层state的更新策略的改变使得隐层可以存储更久之前的信息。说白了LSTM没有改变RNN的基本框架,仅仅是对隐层state的更新做了改变。

为了给出RNN和LSTM的对比,以下给出两种网络结构(参考链接2):
RNN结构:
RNN structure
由上图可知对于每个时刻,RNN的 hidden state均是使用了相同的方法更新。

LSTM结构:
LSTM structure
由上图可知对于每个时刻,LSTM的hidden state均是使用了更为复杂方法更新。

LSTM hidden state update:
LSTM hidden state update
上图中,x表示输入,C表示hidden state,h表示输出。
C的更新分为了多个步骤,以下依次介绍:

  1. 选择从C(t-1)中丢弃的信息:
    该步骤是将C(t-1)中对当前没有用的信息进行剔除,节省memory的空间,存储新的有用的信息。具体的是通过当前输入与上一时刻的输出并且通过σ函数的作用来选择需要剔除的信息。选择后与C(t-1)乘法运算,剔除不必要的信息。
  2. 选择添加到C(t)中的信息:
    该步骤是向C(t)中添加新的信息,主要包括两个步骤:
    a) 通过σ函数选择需要被更新的值;
    b) 通过tanh函数生成新值,用于更新;
    生成后与C(t-1)进行加法运算得到新的C(t);
  3. 计算当前输出:
    当前的输出是根据更新后的C(t)和h(t-1)以及x(t)的共同作用得到。
    注意:这里的σ函数的输出值在0~1之间,均适用于选择作用,比如选择提出的信息,需要更新的信息,需要输出的信息。tanh函数输出值在-1~1之间,用于生成新的值。具体细节可以参照参考链接2。

与传统的RNN相比,LSTM的hidden state的更新多了提出无用信息和添加有用信息两个过程,使得有用的信息能够长时间传递下去,并且能够得到新的有用信息。同时也用到了上一时刻的输出信息h(t-1),上一时刻的输出对信息的剔除、添加以及输出h(t)均有影响。

原创粉丝点击