zoukankan      html  css  js  c++  java
  • 长短时记忆网络

    标准RNN可以处理短期依赖,难以处理长期依赖,例如 I grew up in France...........I speak fluent _____.空格处显然应该填法语,但是标准RNN中,输入x4对Ot的影响可能微乎其微,而LSTM(Long Short-Term Memory),即长短时记忆网络,是RNN的扩展,其会通过特殊的结构设计来增加长期记忆问题。

    LSTM的结构如下图,比标准RNN多出了一部分C,为长期状态,体现为向量:

    忘记门确定接收哪些长期信息,遗忘哪些长期信息;

    输入门控制如何利用当前的信息来更新长期状态;

    输出门控制如何使用长期状态来更新当前隐藏层的输出ht;

    以下左图为乘法门,为了让信息选择性的通过,sigmoid层的输出矩阵中每隔元素的范围是[0,1],输入如果乘以0,则不输出;如果乘以1则输出。右图为加法门,在输入1的基础上加上输入2的信息进行更新。因此,在LSTM中,忘记门和输出门要用到乘法门,输入门要用到加法门。

     图中保存和流动的就是长期状态信息,以下是LSTM的详细计算过程。

    (1)忘记信息:从长期状态中丢弃某些信息

     

     忘记信息是通过对上一时刻的长期状态Ct-1乘以一个忘记门ft来实现的,ft矩阵中每一个元素都是通过sigmoid函数映射到0,1之间的,如果Ct-1中的某个元素乘以ft中的1,表示该元素的取值完全保留,相反如果乘以0则表示完全忘记。忘记门的输入为ht-1和xt的拼接。

    (2)新记忆信息:将新信息存放在长期状态中

     更新长期状态是由三个部分完成的,首先利用一个双曲正切层创建一个新的候选值向量,然后利用sigmoid层即输入门 it 控制候选值向量哪些元素需要更新以及更新的幅度。最后新的输入信息被加入到长期状态中。

    (3)计算输出信息

     首先,利用ht-1和xt的拼接,并通过sigmoid函数来确定将输出哪些信息,即得到输出门ot。然后将长期状态通过双曲正切层进行处理,将其与经过输出门过滤后的结果进行进行相乘。得到要输出的信息ht。ht就是我们最终要得到的,可以通过sigmoid进行处理或者当做下一次的输入,以上就是LSTM的主要框架。

    附:1> 双曲正切函数tanh,形式如下:

     定义域为R,值域为(-1,1),在x=0时函数值也为0,所以函数过原点。

     2> sigmoid函数,形式如下:

     

     当x=0时函数过(0,0.5)

     结语:保持学习,持续热爱。

  • 相关阅读:
    roundabout插件使用(3d旋转轮播图)兼容IE8
    css实现定高的元素在不定高的容器中水平垂直居中(兼容IE8及以上)
    jq点击小图 弹出大图(更新版)
    pc端页面在移动端显示问题
    swiper横向轮播--3d
    swiper横向轮播(兼容IE8)
    windows 7安装apache
    从SDP中至少要看到那些东西?
    FS拓展设置
    Freeswitch 入门
  • 原文地址:https://www.cnblogs.com/xyzluck/p/12118024.html
Copyright © 2011-2022 走看看