理论参考链接:Understanding LSTM Networks:简明易懂,网友翻译版
LSTM最关键的就是实现cell state的传输,而gate的存在决定传输过程中,以前的cell state信息多少需要抛弃,多少输入信息需要加入新的cell state,多少信息需要输出。(所以有forget, input, output三个gate)
- 忘记多少cell state:forget gate 观察上一个时刻的hidden state和此刻的输入x,决定需要忘记上一个时刻的cell state多少信息(0表示全忘记,1表示全记住)
- 增加多少输入信息:input gate观察上一个时刻的hidden state和此刻的输入x,决定需要将多少信息增加到此刻的cell state
- 候选cell state:观察输入的上一个时刻的hidden state和此刻的输入x,用tanh激励函数转换
- 如何更新cell state:将forget gate乘以上一刻的cell state,将input gate乘以此刻的候选cell state,得到新的cell state
- 输出多少cell state:output gate观察上一个时刻的hidden state和此刻的输入x,决定需要将多少cell state输出
- 输出信息:将forget gate乘以此刻的tanh(cell state)
input的大小是
1∗x,hidden state和cell state的大小是1∗d, weight matrix的大小是Rn+d∗Rd, 其中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
Visualizing and Understanding Recurrent Networks
LSTM理论学习
最新推荐文章于 2022-07-08 20:51:14 发布