GRU和LSTM结构对比

1 RNNs

1.1 优点

  • 能够学习序列信息,比如:文本,视频等这些有序列信息的数据
  • 降低了整体的模型参数,因为所有steps都共享相同的参数
  • 在NLP领域有着很广泛的应用

1.2 模型结构

将RNN模型展开形式类似于DNN模型,只是在每个输入step都共享相同的参数变量,如下图所示:
在这里插入图片描述

1.2.1 Elman和Jordan网络

在1990年,由Jefrey Elman提出的网络是最早的简单的循环神经网络,以及后面Jordan提出的循环网络。
Elman网络计算公式如下:
h t = σ h ( W h x t + U h h t − 1 + b h ) h_t = \sigma_h(W_hx_t + U_hh_{t-1} + b_h) ht=σh(Whxt+Uhht1+bh)
y t = σ y ( W y h t + b y ) y_t = \sigma_y(W_yh_t + b_y) yt=σy(Wyht+by)
Jordan网络计算公式如下:
h t = σ h ( W h x t + U h y t − 1 + b h ) h_t = \sigma_h(W_hx_t + U_hy_{t-1} + b_h) ht=σh(Whxt+Uhyt1+bh)
y t = σ y ( W y h t + b y ) y_t = \sigma_y(W_yh_t+b_y) yt=σy(Wyht+by)
其中 x t x_t xt是输入向量, h t h_t ht是hidden layer向量, y t y_t yt是输出向量, W , U , b W, U, b W,U,b是模型参数, σ h \sigma_h σh σ y \sigma_y σy是激活函数。在step t t t h t h_t ht计算包含两个输入,一个是 t t t步的 x t x_t xt,一个就是上一时刻的隐层状态 h t − 1 h_{t-1} ht1

1.2.2 LSTMs

通过门机制去控制信息的接收和释放,和上面提到的普通的RNN模型结构的主要区别是加了几个门机制用来控制 x x x的输入和上一时刻hidden状态的输入。计算步骤如下:

  • step 1: 计算输入门,用来控制当前 x t x_t xt的输入信息量
    i ( t ) = σ ( W ( i ) x ( t ) + U ( i ) h ( t − 1 ) + b i ) i^{(t)}=\sigma(W^{(i)}x^{(t)} + U^{(i)}h^{(t-1)}+b_i) i(t)=σ(W(i)x(t)+U(i)h(t1)+bi)
  • step 2: 计算遗忘门,用来控制上一时刻 h t − 1 h_{t-1} ht1输入信息量
    f ( t ) = σ ( W ( f ) x ( t ) + U ( f ) h ( t − 1 ) + b f ) f^{(t)}=\sigma(W^{(f)}x^{(t)} + U^{(f)}h^{(t-1)}+b_f) f(t)=σ(W(f)x(t)+U(f)h(t1)+bf)
  • step 3: 计算输出门,用来控制当前时刻的输出信息量
    o ( t ) = σ ( W ( o ) x ( t ) + U ( o ) h ( t − 1 ) + b o ) o^{(t)}=\sigma(W^{(o)}x^{(t)} + U^{(o)}h^{(t-1)}+b_o) o(t)=σ(W(o)x(t)+U(o)h(t1)+bo)
  • step 4: 计算memory cell状态值
    c ^ ( t ) = t a n h ( W ( c ) x ( t ) + U ( c ) h ( t − 1 ) + b c ) \hat{c}^{(t)} = tanh(W^{(c)}x^{(t)} + U^{(c)}h^{(t-1)}+b_c) c^(t)=tanh(W(c)x(t)+U(c)h(t1)+bc)
  • step 5: 用遗忘门和输入门更新最终的memory cell状态
    c ( t ) = f ( t ) ⋅ c ( t − 1 ) + i ( t ) ⋅ c ^ ( t ) c^{(t)} = f^{(t)} \cdot {c}^{(t-1)} + i^{(t)} \cdot \hat{c}^{(t)} c(t)=f(t)c(t1)+i(t)c^(t)
  • step 6: 用输出门控制最终的hidden state状态值
    h ( t ) = o ( t ) ⋅ t a n h ( c ( t ) ) h^{(t)} = o^{(t)} \cdot tanh(c^{(t)}) h(t)=o(t)tanh(c(t))

图形表示如下:
在这里插入图片描述
在计算输入门,遗忘门,输出门,cell状态时,输入都是 x ( t ) x^{(t)} x(t) h ( t − 1 ) h^{(t-1)} h(t1),各自有对应的参数矩阵是 U U U W W W,其中 U U U W W W可以合并为一个大的矩阵参数,所以整体来说,模型需要学习的参数就是在计算输入门,遗忘门,输出门,cell状态时总共需要学习更新的的4个大的矩阵参数。

1.2.3 GRUs

LSTM确实有效,但是感觉有点复杂,所以后来又发明了GRU结构。LSTM和GRU是目前为止用的最广泛的两种门机制RNN结构。而GRU的计算公式如下:

  • step 1: 计算重置门
    r t = σ ( W r x t + U r h t − 1 + b r ) r_t = \sigma(W_rx_t+U_rh_{t-1} + b_r) rt=σ(Wrxt+Urht1+br)
  • step 2: 计算更新门
    u t = σ ( W u x t + U u h t − 1 + b u ) u_t = \sigma(W_ux_t + U_uh_{t-1} +b_u) ut=σ(Wuxt+Uuht1+bu)
  • step 3: 更新中间状态
    h t ^ = t a n h ( W x t + U ( r t ⋅ h t − 1 ) + b ) \hat{h_t} = tanh(Wx_t+U(r_t \cdot h_{t-1}) + b) ht^=tanh(Wxt+U(rtht1)+b)
  • step 4: 计算最终hidden state状态计算
    h t = u t ⋅ h t ^ + ( 1 − u t ) ⋅ h t − 1 h_t = u_t \cdot \hat{h_t} + (1-u_t) \cdot h_{t-1} ht=utht^+(1ut)ht1
    从上面公式我们可以看出,GRU结构相比LSTM,由三个门合并到了两个门:重置门 r r r,更新门 u u u,相对应的也减少了一个矩阵参数。再加上还有一个矩阵参数更新 h ^ \hat{h} h^,所以由LSTM的4个矩阵参数降低到了三个矩阵参数,计算量比LSTM降低,而相关的试验和研究证明其中的效果整体和LSTM持平。

猜你喜欢

转载自blog.csdn.net/BGoodHabit/article/details/109569346