LSTM和GRU

1、Simple RNN和Standard RNN

    RNN的实现方式是将前一状态的期望输出通过加权求和的方式加入到当前时刻的期望输出中。

    y(t)=f(X(t)⋅W+y(t−1)⋅V+b)
    它就是无隐藏层的循环神经网络,起名叫“simple RNN”,因为只记住前一时刻的状态,当然这在处理长序列时,效果较差。

    Standard RNN增加隐藏层用于记忆之前所有时刻的输出,从而使神经元有了记忆。

2、RNN的局限

    它内部的操作很少,但在适当的情形下(如短序列)运作的很好。 RNN 使用的计算资源比它的演化变体 LSTM 和 GRU 要少得多。

    但是在反向传播期间,RNN 会面临梯度消失的问题因此具有短时记忆。原因是,离当前时间越久的状态,在经过不断的tanh连乘之后,其所携带的信息会越来越少。

    LSTM 或 GRU 可以学习只保留相关信息来进行预测,并忘记不相关的数据。

3、LSTM

对于普通RNN:

c(t) = g_{forget}\otimes  c(t-1)+ g_{in} \otimes \hat  {c} (t)                       (1)

\hat{c} (t) = f(W\cdot x(t) + V\cdot y(t-1))                     (2)

y(t) = g_{out}\otimes   f(c(t))                                               (3)

g_{in} (t) = sigmoid(W\cdot x(t) + V\cdot y(t-1) + U\cdot c(t-1))          (4)

g_{forget} (t) = sigmoid(W\cdot x(t) + V\cdot y(t-1) + U\cdot c(t-1))    (5)

g_{out} (t) = sigmoid(W\cdot x(t) + V\cdot y(t-1) + U\cdot c(t))                (6)

引入短时记忆/隐藏层

直接用隐藏层单元h代替最终输出y,可得:

c(t) = g_{forget}\otimes  c(t-1)+ g_{in} \otimes \hat  {c} (t)

\hat{c} (t) = f(W\cdot x(t) + V\cdot h(t-1))

h(t) = g_{out}\otimes   f(c(t))

y(t) = h(t)

g_{in} (t) = sigmoid(W\cdot x(t) + V\cdot h(t-1) + U\cdot c(t-1))

g_{forget} (t) = sigmoid(W\cdot x(t) + V\cdot h(t-1) + U\cdot c(t-1))

g_{out} (t) = sigmoid(W\cdot x(t) + V\cdot h(t-1) + U\cdot c(t))


    LSTM 有三种类型的门结构:遗忘门、输入门和输出门。

    遗忘门:

    随着输入值不断叠加到隐藏函数中,c值很快会变得非常大,这时输出结果经过sigmoid或tanh激活函数之后,输出就会完全饱和,造成梯度为0。遗忘门的功能是决定应丢弃或保留哪些信息。

    

    来自前一个隐藏状态的信息和当前输入的信息同时传递到 sigmoid 函数中去,输出值介于 0 和 1 之间,越接近 0 意味着越应该丢弃,越接近 1 意味着越应该保留。

    输入门:


    输入门用于更新细胞状态。首先将前一层隐藏状态的信息和当前输入的信息传递到 sigmoid 函数中去。将值调整到 0~1 之间来决定要更新哪些信息。0 表示不重要,1 表示重要。

    其次还要将前一层隐藏状态的信息和当前输入的信息传递到 tanh 函数中去,创造一个新的侯选值向量。最后将 sigmoid 的输出值与 tanh 的输出值相乘,sigmoid 的输出值将决定 tanh 的输出值中哪些信息是重要且需要保留下来的。

    由于输入门只会在必要的时候开启,因此大部分情况下公式【1】可以看成C(t)=C(t-1),也就是我们最理想的状态。由此加性操作带来的梯度爆炸也大大减轻啦,梯度消失更更更轻了。


    细胞状态:

    下一步,就是计算细胞状态。首先前一层的细胞状态与遗忘向量逐点相乘。如果它乘以接近 0 的值,意味着在新的细胞状态中,这些信息是需要丢弃掉的。然后再将该值与输入门的输出值逐点相加,将神经网络发现的新信息更新到细胞状态中去。至此,就得到了更新后的细胞状态。

    输出门:

    输出门用来确定下一个隐藏状态的值,隐藏状态包含了先前输入的信息。首先,我们将前一个隐藏状态和当前输入传递到 sigmoid 函数中,然后将新得到的细胞状态传递给 tanh 函数。

    最后将 tanh 的输出与 sigmoid 的输出相乘,以确定隐藏状态应携带的信息。再将隐藏状态作为当前细胞的输出,把新的细胞状态和新的隐藏状态传递到下一个时间步长中去。

    归纳来说:遗忘门确定前一个步长中哪些相关的信息需要被保留;输入门确定当前输入中哪些信息是重要的,需要被添加的;输出门确定下一个隐藏状态应该是什么。

    显然,由于h随时都可以被输出门截断,所以我们可以很感性的把h理解为短时记忆单元。

    而从数学上看的话,更是短时记忆了,因为梯度流经h的时候,经历的是h(t)->c(t)->h(t-1)的连环相乘的路径(在输入输出门关闭前),显然如前边的数学证明中所述,这样会发生梯度爆炸和消失,而梯度消失的时候就意味着记忆消失了,即h为短时记忆单元。

    同样的思路可以再证明一下,由于梯度只从c走的时候,存在一条无连环相乘的路径,可以避免梯度消失。又有遗忘门避免激活函数和梯度饱和,因此c为长时记忆单元。

网络前馈的过程:

新时刻t刚刚到来的时候,

1、首先长时记忆单元c(t-1)通过遗忘门g_forget去遗忘一些信息。

2、其中g_forget受当前时刻的外部输入x(t)、上一时刻的输出(短时记忆)h(t-1)、上一时刻的长时记忆c(t-1)的控制。

3、然后由当前时刻外部输入x(t)和上一时刻的短时记忆h(t-1)计算出当前时刻的新信息\hat{c} (t)

4、然后由输入门g_in控制,将当前时刻的部分新信息\hat{c} (t)写入长时记忆单元,产生新的长时记忆c(t)。

5、其中g_in受x(t)、h(t-1)、c(t-1)的控制。

6、激活长时记忆单元c(t),准备上天(输出)。

7、然后由输出门g_out把控,将至目前积累下来的记忆c(t)选出部分相关的记忆生成这一时刻我们关注的记忆h(t),再把这部分记忆进行输出y(t)。

8、其中输出门g_out受x(t)、h(t-1)和当前时刻的长时记忆c(t)的控制。

4、GRU

    知道了 LSTM 的工作原理之后,来了解一下 GRU。GRU 是新一代的循环神经网络,与 LSTM 非常相似。与 LSTM 相比,GRU 去除掉了细胞状态,使用隐藏状态来进行信息的传递。它只包含两个门:更新门和重置门。


更新门

更新门的作用类似于 LSTM 中的遗忘门和输入门。它决定了要忘记哪些信息以及哪些新信息需要被添加。

重置门

重置门用于决定遗忘先前信息的程度。

这就是 GRU。GRU 的张量运算较少,因此它比 LSTM 的训练更快一下。很难去判定这两者到底谁更好,研究人员通常会两者都试一下,然后选择最合适的。


原文链接:

https://mp.weixin.qq.com/s/aV9Rj-CnJZRXRm0rDOK6gg

https://zhuanlan.zhihu.com/p/30465140

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,052评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,267评论 3 397
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,518评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,457评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,474评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,143评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,728评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,650评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,184评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,269评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,415评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,083评论 5 348
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,775评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,257评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,389评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,777评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,419评论 2 359