参考资料:#
翻译的比较一般,建议看原文….比如cell还是不要翻译成【细胞】比较好吧…让人以为和生物学的【细胞】有什么关系呢orz
说下我自己的理解:
LSTM是一种特殊的RNN,所谓RNN,也就是循环神经网络,对之前的信息存在“记忆”,可以解决带有时序性的问题。
所谓时序性的问题,简单理解就是,当前的结果依赖于之前的信息。
比如“我来自内蒙古,我能讲一口流利的____” 横线处大概率填写“蒙语”,这是因为前面的信息“内蒙古”
LSTM的全称是long short term memory, LSTM默认就可以记住长期信息,从而实现信息的持久化。
LSTM的本质是一种构造法,通过特定的设计完成信息的持久化。
LSTM有如下结构:
1、cell单元#
最基本的单元,从上一个时间节点到当前时间节点是线性控制的。LSTM能够通过门结构增加或者减少信息。
门结构上有sigmoid层(输出 0 到 1)作用,信息通过乘上一个 0 到 1 的系数来决定能够通过多少信息。
2、forget门#
forget门决定有多少历史信息能够通过,这一层通过 \( h_{t-1} \) 和 \( x_t \) 决定,作用到 \( C_{t-1} \) 上:
$$ f_t = \sigma(W_f x_t + U_f h_{t-1} + b_f) \in [0, 1] $$3、input门和新的cell#
input门是一个sigmoid层决定需要更新多少信息,新的cell是一个tanh层决定要添加多少信息进入记忆单元cell:
$$ i_t = \sigma(W_i x_t + U_i h_{t-1} + b_i) $$$$ \tilde{C}_t = \tanh(W_c x_t + U_c h_{t-1} + b_c) $$4、更新记忆单元#
forget门作用在 \( C_{t-1} \) 上,input门和新的候选状态结合加入组合成新的记忆单元:
$$ C_t = f_t \odot C_{t-1} + i_t \odot \tilde{C}_t $$5、output门#
添加sigmoid的output门决定cell单元的信息有多少输出,而cell上套一个tanh使输出在 -1 到 1 之间:
$$ o_t = \sigma(W_o x_t + U_o h_{t-1} + b_o) $$$$ h_t = o_t \odot \tanh(C_t) $$