美文网首页深度学习
2020机器学习循环神经网(3)

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

作者: zidea | 来源:发表于2020-02-09 20:51 被阅读0次
    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
    • 重置门
      重置门有助于捕捉短期的依赖关系
      R_t = \sigma(X_tW_{xr} + H_{t-1}W_{hr} + b_r)
    • 更新门
      有助于捕捉长期的依赖关系
      Z_t = \sigma(X_tW_{xr} + H_{t-1}W_{hr} + b_r)
      重置门用于控制是否清空(格式化)存储单元,而更新门是将数据更新到存储单元。
      \widetilde{h}_t = tahn(X_tW_{xh} + R_t \cdot h_{t-1}W_{hh} + b_h)
      这里我们重点地来说明几件事
    • \widetilde{h}_t 是候选状态
    • R_t \cdot h_{t-1}W_{hh} 这里R_th_{t-1}W_{hh} 是按元素相乘,也就是如果R_t 是 0 就表示h_{t-1}W_{hh} 每一个元素都是乘以 0 得到 0 ,那么也就是R_t 来控制是否将上一个状态h_{t-1}更新到当前 h_t

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

    lstm_gates.png
    • 输入门
      I_t = \sigma(X_tW_{xi} + H_{t-1}W_{hi} + b_i)
    • 遗忘门
      F_t = \sigma(X_tW_{xf} + H_{t-1}W_{hf} + b_f)
    • 输出门
      I_t = \sigma(X_tW_{xo} + H_{t-1}W_{ho} + b_o)

    所有门控都是有上一个时刻和当前输入所决定的这个很好理解
    然后我们候选状态在 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

    相关文章

      网友评论

        本文标题:2020机器学习循环神经网(3)

        本文链接:https://www.haomeiwen.com/subject/gvzixhtx.html