RNN循环神经网络&LSTM长短期记忆网络&GRU

个人学习使用,内容来源于网络,侵权删

1. 基本原理

传统网络的结构:

RNN的结构:

使用场景:

  • 语音识别,要按顺序处理每一帧的声音信息,有些结果需要根据上下文进行识别;

  • 自然语言处理,要依次读取各个单词,识别某段文字的语义

这些场景都有一个特点,就是都与时间序列有关,且输入的序列数据长度是不固定的。
这就需要有一种能力更强的模型:该模型具有一定的记忆能力,能够按时序依次处理任意长度的信息。这个模型就是循环神经网络(RNN)。

2. RNN模型展开

\(W\)不变,是每个时间点之间的权重矩阵,RNN之所以可以解决序列问题,是因为它可以记住每一时刻的信息,每一时刻的隐藏层不仅由该时刻的输入层决定,还由上一时刻的隐藏层决定,公式如下,其中\(O_t\)代表t时刻的输出, \(S_t\)代表t时刻的隐藏层的值:

\[O_t=g(V\cdot S_t) \]

\[S_t=f(U\cdot X_t+W\cdot S_{t-1}) \]

以上式子忽略了偏置项,\(f,g\)为激活函数。\(S_t\)的值不仅仅取决于\(X_t\)还取决于\(S_{t-1}\),在整个训练过程中,每一时刻所用的都是同样的\(W\)

3. LSTM模型
LSTM是RNN的变种,RNN每一个处理单元如下,

而LSTM则是如下,

LSTM计算过程如下,

其中,

\[Z=tanh(W[x_t,h_{t-1}]) \]

\[Z^i=\sigma(W_i[x_t,h_{t-1}]) \]

\[Z^f=\sigma(W_f[x_t,h_{t-1}]) \]

\[Z^o=\sigma(W_o[x_t,h_{t-1}]) \]

以上同样忽略了偏置项。

总体过程如上,\(i_t,f_t,o_t\)分别对应\(Z^i,Z^f,Z^o\),如上图所示,LSTM提供门控机制,这三个参数为三个门通过\(\sigma\)激活函数映射到\(0\sim1\)之间,然后决定之前内容\(C_{t-1}\)与如今内容\(\widetilde C_t\)之间的比例,以此达到长期记忆的目的。

4. GRU模型

GRU输入输出的结构与普通的RNN相似,其中的内部思想与LSTM相似。

与LSTM相比,GRU内部少了一个”门控“,参数比LSTM少,但是却也能够达到与LSTM相当的功能。考虑到硬件的计算能力和时间成本,因而很多时候我们也就会选择更加”实用“的GRU。

参考来源:
大话循环神经网络
史上最详细循环神经网络讲解
Understanding LSTM Networks
深度学习知识点全面总结
人人都能看懂的GRU

posted on 2024-02-27 21:21  zhou-snaker  阅读(11)  评论(0编辑  收藏  举报