RNN变体——LSTM原理及代码实现

上篇文章提到了RNN循环神经网络在处理文本数据时具有优秀的表现,然后RNN面对长距离时存在梯度爆炸、梯度消失的问题。梯度爆炸通常我们可以采用梯度截断的方法来缓解,然而梯度消失问题就需要我们接下来说的RNN变体——LSTM来解决了。
LSTM( Long Short Term Memory)长短期记忆网络,随着句子长度的不断增长,LSTM发挥了比普通RNN更优良的性能。下面将介绍LSTM的原理及paddle框架实现的代码。

LSTM原理

RNN变体——LSTM原理及代码实现_第1张图片
这是LSTM的内部原理图,初学者看上去可能会觉得很抽象,我们把它具体分为几个模块逐一解决。

遗忘门

RNN变体——LSTM原理及代码实现_第2张图片

其计算公式为:在这里插入图片描述
将上一个LSTM单元的输出和当前输入乘以权重Wf加上偏置bf后经过一个sigmoid激活函数。这里可以理解为一个橡皮擦,把不需要记忆的内容过滤掉。

输入门

RNN变体——LSTM原理及代码实现_第3张图片
其计算公式为:

在这里插入图片描述
在这里插入图片描述
将上一个LSTM单元的输出和当前输入乘以权重Wf加上偏置bf后经过一个sigmoid激活函数与上一个LSTM单元的输出和当前输入乘以权重Wf加上偏置bf后经过一个tanh激活函数相乘。这里可以理解为一个铅笔,在细胞状态Ct上写需要记忆的内容。

更新细胞状态

RNN变体——LSTM原理及代码实现_第4张图片
其计算公式为:

在这里插入图片描述
将遗忘门输出内容乘以上一层细胞状态加上输入门的内容。Ct也可以理解成一个日记本,记录时刻的信息。

输出门

RNN变体——LSTM原理及代码实现_第5张图片
其计算公式为:

在这里插入图片描述
在这里插入图片描述
这一层LSTM输出为上一个LSTM单元的输出和当前输入乘以权重Wf加上偏置bf后经过一个sigmoid激活函数与当前细胞状态Ct经过tanh激活函数后相乘。

关于为什么要选择不同的激活函数?

这里我是这样理解的,sigmoid激活函数决定了是否通过,tanh激活函数决定了通过的多少。(个人理解,欢迎礼貌批评)

你可能感兴趣的:(深度学习,rnn,lstm,深度学习)