zoukankan      html  css  js  c++  java
  • 动手学深度学习 | 门控制循环单元(GRU)| 56

    门控制循环单元 GRU

    首先这个GRU是最近几年才提出来的,它是在LSTM之后才提出来的,之所以先讲GRU是因为它相对比较简单一些。LSTM相对复杂,但是其实二者的表现效果差不多,所以实际使用哪个都是可以的。

    GRU最主要是知道什么叫做“门控”。

    我们之前说过,RNN是处理不了太长的序列的,是因为把所有的信息都放在隐藏状态中,当时间一长,隐藏状态中就累计了太多东西了,对于比较前的信息就不好抽取了。

    • 不是每个观察都是同等重要

    其实观察一个序列,并不是每个观察值都是同等重要的,第一次出现的猫很重要,但是之后出现的猫就那么重要了,第一次出现的老鼠也很重要。

    序列的话,重要的其实就是那几个关键词,关键句子。

    • 想只记住相关的观察需要

      但是之前RNN并没有机制说要特别关心什么,特别不关心什么。GRU通过门机制,可以控制记住什么,忘记什么。当然后面讲的注意力机制会更加的刻画去关注哪一块,不关注哪一块。

      • 能关注的机制(更新门)

      更新门,这一个数据比较重要,我需要尽量的用它去更新我的隐藏状态,就是把这个信息尽量的放在隐藏状态中,这样就可以交给后面。

      • 能遗忘的机制(重置门)

      遗忘门/重置门,要么说输入不重要,或者说隐藏状态中可以忘记一些东西

    门这个东西这里通过公式和图来给大家解释一下。

    (R_t,Z_t)都是可以认为是长度和(H)一样的一个权重。

    和之前的RNN相比,GRU这里有多学了几个权重(W_{xr},W_{hr},W_{xz},W_{hz})

    (sigma)是是sigmoid,用于讲输出收放到([0,1])

    门其实是一个电路中的概念,就是控制这个电流能不能从这里过去,当然这是“软”的,因为范围控制在([0,1])之间。

    可以看最后的更新门Z,如果Z趋向全1,那么就和原始的RNN没有什么区别,因为(H_t approx H_{t-1}),也就是选择要记住什么新东西,也没有要忘记什么旧东西。

    代码

    QA

    1. GRU网络中,R_t和Z_t的网络结构是一样的,为什么就可以自动把R_t选成Reset gate,Z_t选成Update gate?

    是的,它们的网络结构是一样的,但是它的参数是可以学习的。

    我们这里这样写公式,就是希望它们可以像这样去学习参数。但是模型究竟是不是这么学的呢?这个是不知道的,如果要验证的话,可以进行参数结果的可视化。

    1. 为什么GRU激活函数使用tanh呢?用relu或其他的激活函数可以吗?

    应该是没有问题的,可以尝试一下。

    这是使用tanh作为激活函数是因为那个时候relu激活函数还没有出来。

  • 相关阅读:
    中产阶级_百度百科
    第二天--设置一个数据模型
    请大家支持珊瑚虫~~请大家帮帮soff~~
    Linux Socket学习(十二)
    Debian下调整时间
    Emacs 牵手 scim
    Linux Socket学习(十三)
    mplayer解码
    创建第一个Symfony工程
    页面的基本创建
  • 原文地址:https://www.cnblogs.com/Rowry/p/15375292.html
Copyright © 2011-2022 走看看