循环神经网络

作者: 四碗饭儿 | 来源:发表于2017-04-25 21:08 被阅读47次

    本文介绍RNNs及一种广泛应用的RNNs——LSTM。

    Motivations

    人类的思维并非每时每刻都从0开始,我们需要基于之前的理解来构造当前的理解——人类的思维具有时间上的延续性。

    传统神经网络似乎无法处理这种时间上的延续性。RNN(Recurrent Neural Networks)正是为了解决这个问题。为了让信息可以在网络中具有时间上的延续性,RNN中设计有循环。

    为了理解RNN中的循环,我们首先需要了解神经网络中循环的两种等价表示方式

    • 如上图左,循环形式(roll)
    • 如上图右,展开形式(unroll)
      注意到RNN可以表示成一个个模块重复级联,每个重复模块的结构相同, 这体现了权重共享的理念。重复模块的设计影响网络整体的性能。每个重复模块称为Cell

    LSTM

    前文提及RNN的设计是为了使用以前某个时间点

    的信息来服务当前时间点 的任务。当二者相近时,RNNs容易联系两个时间点的信息。但是当二者离得较远时,RNNs变得难以联系两个时间点的信息——这就是所谓的Long Term Dependency问题。

    LSTM(Long Short Term Memory)是一种特殊的RNN,它可以克服Long Term Dependency。普通RNN中的重复模块结构简单,例如下图(仅有一个非线性激活函数tanh)

    LSTM的重复模块则较为复杂——有四层网络(下图黄色框),层间的连接较为特殊。

    LSTM的重要组成部分包括:

    • Chain:LSTM中的一个个重复模块将整个网络串成一条链
    • Cell State(上图中最顶端的水平线):流过整条链,只有些许线性变换,这就允许信息保真地流经整条链。
    • Gates(上图中的乘法单元和黄色框的组合):用于控制Cell State中信息的移除和添加,相当于逻辑电路中的与门。例如,sigmoid层与乘法组合成的Gates,Sigmoid层输出范围[0,1],输出为0时则信息不通过,输出为1时则信息完全通过。

    基于上述的组成部分,LSTM网络的构建可采用如下步骤

    1 决定LSTM要丢弃哪些信息,这部分任务由遗忘门forget gate layer完成。
    如上图所示,遗忘门查看 的值,对于 中的每一个数,遗忘门输出[0,1]之间的取值。
    2 决定LSTM要存储哪些新的信息,这部分任务由输入门(input gate layer)和双曲正切层(tanh)完成
    输入门决定更新哪些值 ,双曲正切层则创建一个候选向量 ,二者相乘再加上上一步遗忘门的输出
    3 决定输出,基于Cell State的过滤,这部分由输出门(output gate)和双曲正切层(tanh)完成
    输出门决定输出Cell State的哪些值,另一方面Cell State经过双曲正切层输出[-1,1]之间的取值。二者相乘即决定输出Cell State的哪些部分为

    Variants on LSTMs

    LSTM存在许多变种,例如

    • 让Gate可以使用Cell State的值
    • 让遗忘和记忆彼此相关
    • Gated Recurrent Unit将遗忘门与输入门整合成一个更新门Update Gate,比LSTM模型的结构简单

    大多数LSTM的变种效果都差不多,有些在特别的任务上有较好的表现。

    Reference

    http://colah.github.io/posts/2015-08-Understanding-LSTMs/

    相关文章

      网友评论

        本文标题:循环神经网络

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