深度学习

自然语言处理—GRU

2021-01-09  本文已影响0人  zidea

GRU

GRU 动机

大家可以关注我在西瓜视频 zidea 的账号,图标与本人简书图标一致,来收看相关视频

因为在循环神经网络中存在循环结构,所以反向传播计算中,梯度很容易出现梯度弥散和梯度爆炸的情况,可以梯度裁剪可以防止梯度爆炸,对于梯度弥散我们可以采用几种措施

策略 增加数据量 改变神经网络结构

改变神经网络结构

之前我们介绍的 LSTM 就是为了解决梯度消失问题而提出的门控循环神经网络(gated recurrent networks)的一种,今天我们将介绍除了 LSTM 以外,另一种门控循环神经网络 GRU。

059.jpg

GRU 结构相对于 LSTM 要简单一些。GRU 是在 2014 年由 Cho、van Merrienboer、Bahdanau 和 Bengio 提出的。

GRU 首秀

如何实现门控机制

门控

其实门控机制是 GRU 特点,那么又是如何实现门控机制的呢? 其实这个并不难,是否还记得在 logistic 回归的 sigmoid 函数,这个函数性质就是将线性输出实数域压缩到 0 到 1 之间数值,所以我们通过用 sigmoid 函数包裹输入的线性变换和上一个隐含状态就实现一个门控

gru_002.png

重置门和更新门

在 GRU 结构中主要有两个门分别是重置门和更新门,下图就是GRU 的结构

gru_001.png

\begin{aligned} R_t = \sigma(X_tW_{xr} + H_{t-1}W_{hr} + b_r)\\ Z_t = \sigma(X_tW_{xz} + H_{t-1}W_{hz} + b_z)\\ \end{aligned}

R_t重置门(reset gate),Z_t更新门(update gate)
X_t 表示在 t 时刻的输入
H_{t-1} 表示上一个时刻隐含状态

通过输入和上一个时刻隐含状态来控制重置门,是否将候选隐含状态中信息抛弃来实现遗忘作用,更新门用来控制是否将当前输入以及上一时刻隐含状态信息更新到候选隐含状态

\tilde{H}_t = \tanh (X_tW_{xh} + R_t \odot H_{t-1}W_{hh} + b_h)

011.png

这里选择 tanh 将输出压缩到 -1 和 1 之间好处也是便于计算

为什么 GRU 会有效

效率

我们是通过抛弃一些信息来进行语义分析或者一些语言任务,一些信息对于当前任务可能用处不大,大家可以看下面图,我们模型通过序列,来理解作者的意图,抓住主要含义

005.png

我们人类阅读上面话,会保留能够反应作者主要意图的词语或者句子,其他词语可能对我们理解作者意图帮助并不大,所以可以将这些信息量不大词是可以抛弃的。正是因为这一点我们才可以通过门控对记忆不同时刻进行重置和更新

006.png
上一篇下一篇

猜你喜欢

热点阅读