从RNN到LSTM--公式描述

好久没写博客了,近几天重新看LSTM,发现有很多细节之前没有理解到位,并且至今有一些疑惑。接下来从RNN谈起,利用公式描述,并结合tensorflow函数说明两个容易混淆的细节。之后讲解LSTM,主要参考自大神Alex Graves论文《supervised sequence labelling with recurrent neural networks》,同时加上自己的理解,如果不对,请大家指出,在此先行谢过!

首先,说一下自己的疑惑!目前几乎所有的博客、教程,在讲解LSTM时,几乎都是以一个block里仅有一个memory cell进行讲解,但是实际情况是一个block里有可以有多个memory cell,在LSTM发明者 Hochreiter & Schmidhuber,1997的论文中,明确指出了一个block里可以有多个cell。我的问题是:

1、对于一个block里有多个memory cell的情况,假设有一个block里有两个memory cell,那么这两个cell是如何连接的?是共用三个门吗?如果是,若采用全零初始化,那岂不是两个cell的值会一直相同?还是各自有自己的门?如果是各自有各自的门,岂不是可以看作多个block,一个block内,仅有一个memory cell?

希望大神看到后可以帮我解答一下,谢谢!

1、RNN

1.1 公式

经典RNN也就是Vanilla RNN,如下图1所示:

图1

 

循环神经网络的独特之处在于隐层,它是与上一时刻自连接的,也就是隐层对应的权值矩阵一定是方阵。将图1简化为图2。

图2

用公式表达为:

a_t = Ux_t+Wh_{t-1}                        (1)

h_t=f(a_t)f为激活函数              (2)

o_t = g(Vh_t)                                     (3)

以图1为例,x_t表示在t时刻神经网络的输入,x_t的shape为3\times 1h_t的shape为4\times 1o_t的shape为2\times 1,U的shape为4\times 3,W的shape为4\times 4,一定是方阵,V 的shape为2\times 4

1.2 tensorflow代码易混点

在tf中,经常会遇到RNN输出tuple,例如

(outputs,state)=tf.nn.static_rnn(cell,inouts)

在这里,outputs为每个时间步的输出,是一个长度为T的list;state是最后一个时间步的状态。

那么,outputs[-1]与state相同吗?对于上述经典RNN来说是相同的,用博客《如何简单的理解LSTM——其实没有那么复杂》中的图表示,如图3所示。

图3

从图中可以看出,state就是outputs[-1]的复制,图3中的h对应式(2)中的h。但是,这个结论对于LSTM却不适用,接下来会进行讲解。

2、 LSTM

2.1  LSTM发展历程

简要说明一下,最初LSTM《Hochreiter S, Schmidhuber J. Long Short-Term Memory[J]. Neural Computation, 1997, 9(8):1735-1780.》是没有遗忘门的,后来2000年Gers改进,增加了遗忘门,之后又增加了peephole连接。peephole连接是将t-1时刻未激活的memory cell状态,送到 t 时刻,作为输入门与输出门的输入,也就是下图4-5中绿线表示。

2.2 公式

公式部分主要参考Alex Graves论文《supervised sequence labelling with recurrent neural networks》33 34 37 38页。

接下来以输入层4个节点,输出层为2个block,每个block有1个memory cell为例进行说明。

图4

 

图5

 

图6

 

 

图7

图4-图7给出了LSTM前向过程的公式表达(图片右边)以及示意图,以及各个权值矩阵的shape。

2.2 tensorflow代码易混点

在1.2中讲到,对于LSTM来说,outputs[-1]与state是不同的,原因在于outputs里是隐层输出,而state是cell状态,用上图公式里的符号表示为outputs是b^{t}的集合,而state是最后一个时刻的s_c。对应博客《如何简单的理解LSTM——其实没有那么复杂》中的图表示,如图8、9所示。图8、9中的C_t对应图6中的S^{t},图8、9中的h_t对于图7中的b^{t},这里S^{t}b^{t}是由标量S_c^{t}b_c^{t}构成的向量,是细胞状态与隐层输出。

图8
图9

参考:

https://www.cnblogs.com/ooon/p/5594438.html

https://zybuluo.com/hanbingtao/note/581764

https://www.jianshu.com/p/4b4701beba92 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章