LSTM

头像
zhkai
    阅读 3 分钟

    LSTM即Long Short Term Memory networks,是一种特殊的RNN网络,可以学习长周期的依赖。一个包含单tanh层的标准RNN网络如下:

    The repeating module in a standard RNN contains a single layer

    LSTM也有一个类似结构的链条,但却有四层

    The repeating module in an LSTM contains four interacting layers

    示例

    LSTM核心理念

    LSTMs的关键是cell state,即下图中的水平线。

    clipboard.png

    信息可以很方便地不做改变地在这条线上流动,当然也可以在这些旁路作用下改变状态。门是一种选择性地让信息通过的方法,由一个sigmoid层和一个点乘操作组成。

    clipboard.png

    sigmoid层输出的是一个0到1的数字,表示的是每个内容通过的概率。0即所有都不通过,1即所有都通过。

    LSTM逐步讲解

    C1
    LSTM的第一步就是决定从cell state中抛出什么信息,这个决定由一个叫forget gate layer的sigmoid层做出,它根据 ht-1xt 为cell state Ct-1 中的每个数输出一个介于0到1的数。1代表全通过,0代表全不通过。

    以根据前面的词语判断下一个词为例。在这个问题中,cell state可能包含当前对象的性别,所以正确的代词才能够被使用(he, she之类的)。当我们见到一个新对象时,老对象就应该被忘记。

    clipboard.png

    第二步是决定我们想在cell state中存储什么新信息。这包含两个方面,一是称为input gate layer的sigmoid层决定了我们要更新哪些值。二是tanh层产生了一个候选值向量clipboard.png,它被添加到state中。下一步中,我们将结合这两方面,向state中写入更新。

    在这个语言模型例子中,我们想向cell state中添加新对象的性别,以替换我们想忘记的老对象的性别。

    clipboard.png

    现在是时候把老的cell state Ct-1 更新成新的cell state Ct ,之前的步骤已经决定了要做什么,我们只需要去实行。

    ft 去乘老状态,忽略掉我们之前决定忽略的东西。然后加上 it * clipboard.png。这就是新的候选值,按我们想要更新状态值的意愿大小去缩放。

    在这个语言模型中,这里就是我们要扔掉旧对象性别信息,添加新信息的地方。

    clipboard.png

    最后,我们要决定打算输出什么信息。这个输出要基于我们的cell state,但是会是一个过滤后的版本。首先,我们要运行一个决定输出哪部分cell state的sigmoid层。然后,我们让cell state通过tanh层(让值变为-1和1之间),并且让它与sigmoid门相乘。这样我们就可以输出我们想输出的那部分。

    对于这个语言模型,既然它看见了一个对象,它或许想要输出关于动词的信息。以防那就是接下来的东西。例如,它或许要输出这个对象是单数还是复数。

    clipboard.png

    Long Short Term Memory的变异

    以上描述的都是一个正常的LSTM,但并不是所有LSTMs都是像上面那样的。事实上,看起来几乎所有包含LSTMs的论文都用的是略有不同的版本。差异很小,但还是有必要提几个。

    一个流行的LSTM异型添加了peephole connections,这意味着sigmoid门输入考虑到了cell state。

    clipboard.png

    上图对所有门添加了窥视孔(peephole),但很多论文只是添加了一部分。

    另一个异型使用了耦合遗忘和输入门。不同于独立地决定去遗忘什么、添加什么,我们同时做 这些决定。只在打算输入信息时遗忘,只在遗忘老信息时向状态中输入新信息。

    clipboard.png

    另一个戏剧性的LSTM异型是GRU(Gated Recurrent Unit)。它将遗忘和输入门合并称为一个单独的update gate。它也合并了cell state和hidden state,并且做了一些其他的改变,创造了比标准LSTM更简单的模型,正在变得越来越流行。

    clipboard.png

    这只是一部分,其实还有很多。Greff, et al. (2015)对流行的异型做了比较,发现基本都差不多。Jozefowicz, et al. (2015)测试了超过一万种RNN网络,发现在特定任务上有些做的更好。

    附录

    tanh

    双曲函数中的一个,tanh()为双曲正切。定义域:R,值域:(-1,1)。y=tanh x是一个奇函数,其函数图像为过原点并且穿越Ⅰ、Ⅲ象限的严格单调递增曲线,其图像被限制在两水平渐近线y=1和y=-1之间。

    clipboard.png


    翻译自:http://colah.github.io/posts/...


    zhkai
    36 声望1 粉丝