https://www.jianshu.com/p/95d5c461924c
假设现在有个更为复杂的任务,考虑到下面这句话“I grew up in France… I speak fluent French.”,现在需要语言模型通过现有以前的文字信息预测该句话的最后一个字。通过以前文字语境可以预测出最后一个字是某种语言,但是要猜测出French,要根据之前的France语境。这样的任务,不同之前,因为这次的有用信息与需要进行处理信息的地方之间的距离较远,这样容易导致RNNs不能学习到有用的信息,最终推导的任务可能失败。
LSTM结构
- 标准RNN结构:
- 标准LSTM结构:
LSTMs也具有这种链式结构,但是它的重复单元不同于标准RNN网络里的单元只有一个网络层,它的内部有四个网络层。
image.png图中黄色表示激活函数(sigma / tanh)操作,粉色圆圈表示操作(乘法或者加法),单箭头表示数据流向,箭头合并表示向量的合并操作,箭头分叉表示向量的拷贝操作。
LSTMs的核心思想
LSTMs的核心是细胞状态(控制信息不是数据),用贯穿细胞的水平线表示。
细胞状态像传送带一样。它贯穿整个细胞却只有很少的分支,这样能保证信息不变的流过整个RNNs。细胞状态如下图所示:
image.pngLSTM网络能通过一种被称为门的结构对细胞状态进行删除或者添加信息。
门能够有选择性的决定让哪些信息通过。其实门的结构很简单,就是一个sigmoid层和一个点乘操作的组合。如下图所示:
image.png因为sigmoid层的输出是0-1的值,这代表有多少信息能够流过sigmoid层。0表示都不能通过,1表示都能通过。
LSTM的三个控制细胞状态的门:
前面提到LSTM由三个门来控制细胞状态,这三个门分别称为忘记门、输入门和输出门。下面一个一个的来讲述。
LSTM的第一步就是决定细胞状态需要丢弃哪些信息。这部分操作是通过一个称为忘记门的sigmoid单元来处理的。它通过查看和信息来输出一个0-1之间的向量,该向量里面的0-1值表示细胞状态中的哪些信息保留或丢弃多少。0表示不保留,1表示都保留。忘记门如下图所示(生成的权重系数)
忘记门.png下一步是决定给细胞状态添加哪些新的信息。这一步又分为两个步骤,首先,利用和通过一个称为输入门的操作来决定更新哪些信息。然后利用和通过一个tanh层得到新的候选细胞信息,这些信息可能会被更新到细胞信息中。这两步描述如下图所示。(生成新还有权重系数)
输入门.png下面将更新旧的细胞信息,变为新的细胞信息。更新的规则就是通过忘记门选择忘记旧细胞信息的一部分,通过输入门选择添加候选细胞信息的一部分得到新的细胞信息。更新操作如下图所示。(合成新)
image.png更新完细胞状态后需要根据输入的和来判断输出细胞的哪些状态特征,这里需要将输入经过一个称为输出门的sigmoid层得到判断条件,然后将细胞状态经过tanh层得到一个-1~1之间值的向量,该向量与输出门得到的判断条件相乘就得到了最终该RNN单元的输出。(由生成新)
输出门.pngLSTM变种:
- peephole connections结构的作用是允许各个门结构能够看到细胞信息,具体如下图所示。
上图描绘的是所有门都能看到细胞信息,还有一些变式是在其中的某些门引入细胞信息。
还有一种变式是在忘记门与输入门之间引入一个耦合。不同于之前的LSTM结构,忘记门和输入门是独立的,这个变式是在忘记门删除历史信息的位置加入新的信息,在加入新信息的位置删除旧信息。该结构如下图所示
image.png- 门循环单元(GRU)。它将忘记门和输入门合并成一个新的门,称为更新门,这个门用于综合控制细胞的读和写,这样可以简化LSTM的参数,此外它还将细胞状态和隐藏层进行合并。总体而言,它是一个比LSTM更加简化的结构,在训练上更加容易(参数少)。GRU还有一个门称为重置门。如下图所示:
- Deep RNN,在RNN中,比较缺乏CNN中的层次化的结构,为了解决这个问题,它将多个RNN累积在一起,形成一种层次化的结构,并且不同层之间也存在网络连接,这样的好处在于每一层都可以代表一个信息抽象,另外它会吸收computation network的优势——同时兼容RNN和CNN。这种网络结构在机器翻译、对话等领域都有很好的应用。
网友评论