LSTMs和递归神经网络的初学者指南

本文是读A Beginner's Guide to LSTMs and Recurrent Neural Networks的个人摘要。

递归网络 Recurrent nets

递归网络是一种人工神经网络,用于识别数据序列中的模式,如文本、基因组、手写、口语或来自传感器、股票市场和政府机构的数字时间序列数据。这些算法考虑了时间和序列,它们都有时间维度。
引申阅读: attention mechanism, memory networks

RNN

前馈网络

在RNN前,已经有前馈神经网络了:通过有监督的学习,输出将是一个标签,一个应用于输入的名称。也就是说,他们将原始数据映射到类别,识别可能会发出信号的模式,例如,输入图像应该被标记为“猫”或“大象”。

训练过的前馈网络可以接受任意随机的数据集,但是没有时间顺序的概念,比如数据集第一张照片为猫,并不会影响它对第二张照片的分类结果。

递归网络

在早些时候由Elman提出的simple recurrentmoxing, BTSXVPE为输入,context units则代表了前一时刻的输出。hidden units则用来储存这种跨越多个时间步骤的时间序列信息。 下面的过程可以用公式表为:
\[ h_{t} = \varnothing (W_{X_{t}} + Uh_{t-1}) \]

时间步长t处的隐藏状态是h_t。它是输入在同一时间步骤的函数。x_t,由权矩阵修改W(就像我们使用的前馈网)添加到前一个时间步骤的隐藏状态。h_t-1乘以它自己的隐藏状态到隐藏状态矩阵。U,也称为转移矩阵,类似于马尔可夫链。权重矩阵是一种滤波器,它决定了对当前输入和过去隐藏状态的重视程度。它们产生的错误将通过反向传播返回,并用于调整其权重,直到误差不能降低。

BPTT

记住,递归网的目的是准确地分类顺序输入。我们依靠误差和梯度下降的反向传播来做到这一点。

前向网络中的反向传播通过每个隐层的输出、权值和输入从最终误差向后移动,通过计算它们的偏导数,为误差的一部分分配权重责任-∂E/∂w或它们之间的变化率之间的关系。这些导数然后被我们的学习规则,梯度下降,调整权向上或向下,任何方向减少误差。

递归网络依赖于反向传播的扩展,称为逆传时间,或BPTT.在这种情况下,时间只是简单地用一个定义明确的、有序的计算序列来表示,这些计算将一个时间步骤连接到另一个时间步骤,这是所有反向传播都需要工作的。

神经网络,无论是递归的还是非递归的,都是简单的嵌套复合函数,如f(g(h(x)))。添加时间元素只扩展了用链式规则计算导数的函数序列。

truncated BPTT

截断BPTT是完全BPTT的近似,这是长序列的首选,因为完整BPTT的每个参数更新的前向/后向代价在许多时间步骤中变得非常高。缺点是,由于截断,梯度只能返回到目前为止,因此网络无法学习与完整BPTT一样长的依赖关系

LSTMS 和 GRUS

梯度消失和梯度爆炸

由于深层神经网络的层数和时间步长通过乘法相互关联,导数容易消失或爆炸。梯度爆炸通过截断(truncated BPTT ?)或压缩可以解决。梯度消失则比较困难了,因此LSTM应运而生。

LSTM

LSTM 引入了门控单元,信息可以存储在单元格中、写入单元格或从单元格中读取,就像计算机内存中的数据一样。单元格通过打开和关闭的门来决定存储什么,以及何时允许读取、写入和擦除。

从底部开始,三重箭头显示信息在多个点流入单元格的位置。现在的输入和过去的单元状态的组合不仅提供给单元本身,还提供给它的三个门中的每一个,这将决定如何处理输入。

黑点是门本身,它们分别决定是否让新的输入进入,擦除当前的单元状态,以及/或让该状态在当前的时间步骤中影响网络的输出。S_c是内存单元格的当前状态,并且g_y_in是它的当前输入。请记住,每个门都可以打开或关闭,它们将在每一步重新组合它们的开放和关闭状态。单元格可以忘记其状态,也可以不;可以被写入,也可以不;可以在每个时间步骤中读取,也可以在每个时间步骤中读取,这些流在这里表示。

simple rnn 与 LSTM处理流程的对比

GRUS

门控递归单元(GRU)基本上是没有输出门的LSTM,因此,在每个时间步骤中,它都会将内容从其存储单元完全写入到较大的网中。

猜你喜欢

转载自www.cnblogs.com/linyihai/p/10660623.html