美文网首页
LSTM基本原理

LSTM基本原理

作者: 金色暗影 | 来源:发表于2017-05-25 20:22 被阅读0次

LSTM基本原理

感觉RNN比CNN会难理解一点,刚开始对RNN并不是很理解,直到看了大神的这篇文章才感觉理解了一些,写个总结。

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

三个门

原始输入循环体的是当前输入x_t和上前一步的输出h_{t-1},以及上一步的状态C_{t-1},

x_th_{t-1}先遇到遗忘门(forget gate)

f_{t}=sigmoid(W_f[h_{t-1},x_t]+b_f)

经过遗忘门的函数之后产生一个0到1之间的输出f_t,代表遗忘多少之前的状态C_{t-1},当f_t为0时代表全部遗忘,1代表完全保持。

另外一条路线上,x_th_{t-1}又会遇见输入门(input gate),输入门会决定记忆哪些值:

i_t=sigmoid(W_i[h_{t-1},x_t]+b+i)

另外同时经过tanh函数会产生一个新的状态C'_t

C'_t=tanh(W_C[h_{t-1},x_t]+b_C)

这个时候,由C_{t-1},f_t,C'_t,i_t就可以决定循环体的当前状态C_t了:

C_t=f_t*C_{t-1}+i_t*C'_t

有了当前的状态,自然就可以去输出门(output gate)了:

o_t=sigmoid(W_o[h_{t-1},x_t]+b_o)

h_t=o_t*tanh(C_t)

总结:从上面的公式,我们容易发现,每个门的形态是一样的,都是通过sigmoid函数作用于当前的输入x_t和前一时刻的输出h_{t-1}产生一个0到1的数值,以此来决定通过多少信息。

循环体内部结构

先抛开这几个门,最简单的循环体内部就是一个全连接的神经网络,真实输出可能会再追加一个全连接的神经网络。

我们在用TensorFlow创建RNN模型的时候要设置hidden_size是真实输出的网络的输出神经元个数。

输入的数据是上一时刻的输出h_{t-1}加上当前时刻的输入x_t,如果是0时刻的话根据自己的设定填充。

比如当前输入神经元是x个上一状态的输入神经元是h个,那么合在一起的输入神经元就是(x+h)个,因为内部输出要作用于下一个循环体因此内部输出神经元也是h个,于是循环体内部就是(h+x)*h个权重和h个偏置,内部的输出再外接一个hidden_size个输出神经元的全连接层便产生了真实输出。

相关文章

  • LSTM基本原理

    LSTM基本原理 感觉RNN比CNN会难理解一点,刚开始对RNN并不是很理解,直到看了大神的这篇文章才感觉理解了一...

  • 2018-02-10

    记录一下对RNN,LSTM,GRU基本原理(正向过程以及简单的反向过程)的个人理解----------------...

  • pytorch1.0 搭建LSTM网络

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

  • keras lstm 杂记

    1、例子 情感分析 情感分析(苏剑林) lstm多曲线预测 lstm多曲线预测(原文) 2、lstm参数 lstm...

  • 详解 LSTM

    今天的内容有: LSTM 思路 LSTM 的前向计算 LSTM 的反向传播 关于调参 LSTM 长短时记忆网络(L...

  • LSTM Custom

    def InitLSTM(self,LSTM,Name,InputSize) LSTM.Forget_Wight...

  • keras lstm return sequence参数理解

    使用keras构建多层lstm网络时,除了最后一层lstm,中间过程的lstm中的return sequence参...

  • LSTM

    Chris Olah's LSTM postEdwin Chen's LSTM postAndrej Karpat...

  • lstm理解

    本文是自己对于lstm的理解的总结,但是最好的文章帮助理解lstm一定是这篇Understanding LSTM ...

  • Tensorflow神经网络之LSTM

    LSTM 简介 公式 LSTM LSTM作为门控循环神经网络因此我们从门控单元切入理解。主要包括: 输入门:It ...

网友评论

      本文标题:LSTM基本原理

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