当前位置:   article > 正文

GRU(Gated recurrent unit)结构介绍_gru结构

gru结构

GRU结构概述

GRU(Gated recurrent unit)是RNN中的一种门机制单元,与LSTM类似,GRU有一个遗忘门(forget gate),但其没有输出门(output gate)。GRU在音乐模型、语音信号模型和NLP模型中的性能与LSTM类似,而且在一些小样本数据集表现出更有的性能。

GRU结构

GRU的结构如下图所示:

Image from [38]. The GRU model combines the "forget" gate and "input"... |  Download Scientific Diagram

它只有两个门,对应输出更新门(update gate)向量:\textbf{z}_t重置门(reset gate)向量:\textbf{r}_t更新门负责控制上一时刻状态信息\textbf{h}_{t-1}对当前时刻状态的影响,更新门的值越大说明上一时刻的状态信息\textbf{h}_{t-1}带入越多。而重置门负责控制忽略前一时刻的状态信息\textbf{h}_{t-1}的程度,重置门的值越小说明忽略的越多。注意前两个,更新门和重置门的表达式,[,]表示两个向量连接,\cdot表示矩阵相乘,\sigma表示sigmoid函数。

接下来,“重置”之后的重置门向量\textbf{r}_t 与前一时刻状态\textbf{h}_{t-1}卷积 \textbf{r}_t * \textbf{h}_{t-1},再将\textbf{r}_t * \textbf{h}_{t-1}与输入\textbf{x}_t进行拼接,再通过激活函数tanh来将数据放缩到-1~1的范围内。这里包含了输入数据\textbf{x}_t,并且将上一时刻状态的卷积结果添加到当前的隐藏状态,通过此方法来记忆当前时刻的状态。

最后一个步骤是更新记忆阶段,此阶段同时进遗忘和记忆两个步骤,使用同一个门控\textbf{z}_t同时进行遗忘和选择记忆(LSTM是多个门控制) 

(\textbf{1} -\textbf{z}_t)*\textbf{h}_{t-1}:对隐藏的原状态,选择性地遗忘。 

\textbf{z}_t*{\widetilde{\textbf{h}}}_{t}:对当前节点信息,进行选择性的记忆。

GRU单元的tensorflow 实现 

  1. def gru(inputs, state, params):
  2. W_xz, W_hz, b_z, W_xr, W_hr, b_r, W_xh, W_hh, b_h, W_hq, b_q = params
  3. H, = state
  4. outputs = []
  5. for X in inputs:
  6. X=tf.reshape(X,[-1,W_xh.shape[0]])
  7. Z = tf.sigmoid(tf.matmul(X, W_xz) + tf.matmul(H, W_hz) + b_z)
  8. R = tf.sigmoid(tf.matmul(X, W_xr) + tf.matmul(H, W_hr) + b_r)
  9. H_tilda = tf.tanh(tf.matmul(X, W_xh) + tf.matmul(R * H, W_hh) + b_h)
  10. H = Z * H + (1 - Z) * H_tilda
  11. Y = tf.matmul(H, W_hq) + b_q
  12. outputs.append(Y)
  13. return outputs, (H,)

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/449867
推荐阅读
相关标签
  

闽ICP备14008679号