zoukankan      html  css  js  c++  java
  • RNN,GRU,LSTM

    2019-08-29 17:17:15

    问题描述:比较RNN,GRU,LSTM。

    问题求解:

    • 循环神经网络 RNN

    传统的RNN是维护了一个隐变量 ht 用来保存序列信息,ht 基于 xt 和 ht-1 来计算 ht 。

    ht = g( Wi xt + Ui ht-1 + b)

    y= g( Wht + b)

    • 门控循环神经网络 GRU

     

    门控循环神经网络(Gated Recurrent Unit,GRU)中引入了门控机制。

    Update:Γ= g( Wu xt + Uu ht-1 + b)

    ht~ = g( Wc xt + Uht-1 + b)    -Candidate

    ht = Γu * ht~ + Γf * ht-1

    【注】实际使用中还会加入重置门,可以看成计算了 ht-1 和 xt 之间的相关性

    Γr = g( Wr xt + Ur ht-1 + b)

    ht~ = g( Wc xt + Γr Uht-1 + b)

    • 长短期记忆网络 LSTM

    长短期记忆网络(Long Short Term Memory,LSTM)是循环神经网络的最知名和成功的扩展。由于循环神经网络有梯度消失和梯度爆炸的问题,学习能力有限,在实际的任务中往往不达预期。LSTM可以对有价值的信息进行长期记忆,从而减小循环神经网络的学习难度,因此在语音识别,NER,语言建模等问题中有着广泛的应用。

    与传统的循环神经网络对比,LSTM仍然是基于xt 和 ht-1 来计算 ht ,只不过对计算的内部流程进行更加精心的设计。

    LSTM中引入了cell memory称为 c,ht 由 cell memory生成。

    LSTM在前向传播的时候不仅传递 ht ,而且还传递 cell memory,cell memory实际形成了一个信息的流通的highway。

    LSTM中加入了三个门更新门(也有称为输入门) Γu,遗忘门 Γf,输出门 Γo。这里的门的概念可以理解为相关性,本质是三个权重。

    Update:Γ= g( Wu xt + Uu ht-1 + b)

    Forget:Γ= g( Wf xt + Uht-1 + b)

    Output:Γo= g( Wo xt + Uht-1 + b)

    这三个门都是作用在cell memory上的,那么cell memory怎么计算呢?

    ct~ = g( Wc xt + Uht-1 + b)

    ctΓuct~Γfct-1

    计算完成 c后,就可以根据输出门来求 h了。

    ht = Γo * ct

  • 相关阅读:
    了解Android_09之GridView(网格视图)
    了解Android_08之ListView(列表视图)
    了解Android_07之ImageView与使用glide第三方库加载网络图片
    了解Android_06之CheckBox
    了解Android_05之RadioButton
    了解Android_04之EditText标签
    了解Android_03之Button标签
    了解Android_02之TextView标签
    了解Android_01之HelloWorld
    02_vue本地应用(v-text,v-html,v-on,v-show,v-if,v-bind,v-for,v-model)
  • 原文地址:https://www.cnblogs.com/hyserendipity/p/11430868.html
Copyright © 2011-2022 走看看