深度学习

2020机器学习循环神经网(3)

2020-02-09  本文已影响0人  zidea
machine_learning.jpg

GRU

GRU(Gate Recurrent Unit)是循环神经网络(Recurrent Neural Network, RNN)的一种。和LSTM(Long-Short Term Memory)一样,也是为了解决长期记忆和反向传播中的梯度等问题而提出来的。

GRULSTM 在很多情况下实际表现上相差不大,那么为什么我们要使用GRU(2014年提出)而不是相对经受了更多考验的 LSTM(1997提出),因为GRU 参数。

gru.png

h_t = Z_t \cdot h_{t-1} + (1 -Z_t) \cdot \widetilde{h_t}
这里通过Z_t 来控制当前隐含状态是来自上一个时刻隐含状态,还是来自当前候选隐含状态。当Z_t = 1就会一直保留一些之前隐含状态。

lstm_gates.png

所有门控都是有上一个时刻和当前输入所决定的这个很好理解
然后我们候选状态在 LSTM 中是什么样子的。
\widetilde{C_t} = \tanh(X_tW_{xc} + H_{t-1}W_{hc} + b_c)
我们看这里候选状态与之前 GRU 的状态不太一样没有任何控制,而是原始的 RNN 神经单元差不多。

C_t = F_t \cdot C_{t-1} + I_t \cdot \widetilde{C_t}
C_t 记忆希望是 GRU 没有,C_t 不断记忆处理信息,如果我们想要忘记过去的信息,这时候只要将 F_t 设置为 0 那么之前保存信息就会丢失。这里想一想,在序列中有<eos>来表示断句,而且句子之间没有什么联系,在<eos>后面第一个词就是下一句首,之前句子所有信息对下一句第一个词是没有任何意义,所有我们可以通过遗忘门将之前信息进行清空。

最后就是输出门,用输出门来控制
H_t = O_t \cdot \tanh (C_t)

最后希望大家关注我们微信公众号


wechat.jpeg
上一篇 下一篇

猜你喜欢

热点阅读