LSTM理论学习

来源:互联网 发布:第四方支付钱包源码 编辑:程序博客网 时间:2024/05/17 08:38
  • 理论参考链接:Understanding LSTM Networks:简明易懂,网友翻译版

    LSTM最关键的就是实现cell state的传输,而gate的存在决定传输过程中,以前的cell state信息多少需要抛弃,多少输入信息需要加入新的cell state,多少信息需要输出。(所以有forget, input, output三个gate)

    1. 忘记多少cell state:forget gate 观察上一个时刻的hidden state和此刻的输入x,决定需要忘记上一个时刻的cell state多少信息(0表示全忘记,1表示全记住)
    2. 增加多少输入信息:input gate观察上一个时刻的hidden state和此刻的输入x,决定需要将多少信息增加到此刻的cell state
    3. 候选cell state:观察输入的上一个时刻的hidden state和此刻的输入x,用tanh激励函数转换
    4. 如何更新cell state:将forget gate乘以上一刻的cell state,将input gate乘以此刻的候选cell state,得到新的cell state
    5. 输出多少cell state:output gate观察上一个时刻的hidden state和此刻的输入x,决定需要将多少cell state输出
    6. 输出信息:将forget gate乘以此刻的tanh(cell state)

    input的大小是

    1x
    ,hidden state和cell state的大小是
    1d
    , weight matrix的大小是
    Rn+dRd
    , 其中d就是num_lstm_units。

    ​ 关于以上size的参考stackoverflow 、quora Dan Elton的回答。

    LSTM的参数数量,参考stackoverflow:4d*(n+d),d是num_lstm_units,n是input的维度。

  • 讲述LSTM的Forward和Backward的过程:Arun 的github博客

  • 一百多行代码用python实现Lstm的8位加法器,每行代码都有详细讲解,并辅以gif:https://iamtrask.github.io/2015/11/15/anyone-can-code-lstm/

  • 一百多行实现原始的RNN 网络,用于处理character-level language来自karpathy github: min-char-cnn

  • LSTM的python实现讲解

  • tensorflow RNN cell的源码

  • Visualizing and Understanding Recurrent Networks

原创粉丝点击