美文网首页
搭积木之LSTM的实现

搭积木之LSTM的实现

作者: 板凳徐 | 来源:发表于2017-04-17 18:00 被阅读0次

背景

原生的循环神经网络即RNN(Recurrent Neural Network)网络在训练过程中容易出现梯度消失和梯度爆炸的问题,导致的结果是模型很难学习到长期的信息,对此,Sepp Hochreiter和Jurgen Schmidhuber在1997年提出了长短期记忆即LSTM(Long Short Term Memory)模型,该模型的特殊之处在于循环单元的精密设计,相比于RNN网络结构,LSTM网络结构中的一个重复单元包含着三个Gate(input、forget、output)和一个Cell(Memory Cell)组成。

结构图

具体的LSTM网络结构中重复单元结构如下图所示:

LSTM网络结构中的重复单元

从上图可以看出,该单元包括四个输入,一个输出,而具体的计算过程如下图所示:

LSTM网络结构中重复单元计算图

计算公式

LSTM网络结构的计算过程和BP神经网络下面给出每个Gate和Cell的计算公式,其中,三个Gate对应的计算公式如下:

三个Gate计算公式

输入变换公式如下:

输入变换公式

Memory Cell更新公式如下:

Memory Cell更新公式

实现

上面就是LSTM重复单元前向计算的过程,那么现在根据公式一步一步实现前向计算过程,具体过程如下(python):

首先,我们定义一个LSTM类,并随机初始化连接上述Gate和Memory Cell之间的权值和偏置:

LSTM类

其中,initialize函数的实现利用了numpy库中的random函数:

initialize函数

initSequence函数的实现过程:

initSequence函数

下面给出LSTM类中前向计算过程函数forward的实现过程,按照公式的每一步一一实现:

forward函数

上面的公式只是描述了前向计算过程,并没有给出反向计算梯度的过程,下面直接给出反向计算函数backward的实现过程:

backward函数

上面几个函数中的sigmoid函数、sigmoid_grad函数、tanh函数、tanh_grad函数、ones函数和zeros函数的实现过程:

总结

上面从模型提出的背景到模型结构,再到前向计算公式的展开,最后给出实现过程,希望能从原理理解到动手实现这一步骤给出较为清晰的过程,记录下来帮助自己和他人能够深刻的掌握这一经典神经网络,在后续记录中,会结合具体的应用场景来理解LSTM的价值。

相关文章

  • 搭积木之LSTM的实现

    背景 原生的循环神经网络即RNN(Recurrent Neural Network)网络在训练过程中容易出现梯度消...

  • pytorch1.0 搭建LSTM网络

    torch.nn包下实现了LSTM函数,实现LSTM层。多个LSTMcell组合起来是LSTM。 LSTM自动实现...

  • Tensorflow[基础篇]——LSTM的理解与实现

    前言 本文参考了tensorflow github里面的实现的lstm的教程代码6_lstm.ipynb。因为这代...

  • [tf]LSTM

    创建一个简单的LSTM 在tensorflow中通过一句简单的命令就可以实现一个完整的LSTM结构。 将LSTM中...

  • lstm示例

    tensorflow下用LSTM网络进行时间序列预测 用LSTM做时间序列预测的思路,tensorflow代码实现...

  • 形象深刻理解lstm

    LSTM 长短时记忆网络(Long Short Term Memory Network, LSTM),是一种改进之...

  • Bi-LSTM with Attention (PyTorch

    这里用Bi-LSTM + Attention机制实现一个简单的句子分类任务。 先导包 定义Bi-LSTM(Atte...

  • 循环神经网络pytorch实现

    RNN pytorch 实现 LSTM 输入门: 遗忘门: 输出门: pytorch 实现 GRU 更新门: 候选...

  • (八)sequence to sequence —4

    实现双向的dynamic_lstm+beam_search 基于tensorflow1.4 Seq2seq的实现 ...

  • LSTM

    2018-12-06来看看udacity的深度学习课的lstm实现代码 RNN和LSTM 假设你有一个事件序列,这...

网友评论

      本文标题:搭积木之LSTM的实现

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