LSTM从入门到精通(形象的图解,详细的代码和注释,完美的数学推导过程)
先附上这篇文章的一个思维导图
-
什么是RNN
按照八股文来说:RNN实际上就是一个带有
记忆的时间序列的预测模型
RNN的细胞结构图如下:
softmax激活函数只是我举的一个例子,实际上得到y也可以通过其他的激活函数得到
其中a代表t-1时刻隐藏状态,a代表经过X这一t时刻的输入之后,得到的新的隐藏状态。公式主要是a = tanh(Waa * a + Wax * X + b1) ;大白话解释一下就是,X是今天的吊针,a是昨天的发烧度数39,经过今天这一针之后,a变成38度。这里的记忆体现在今天的38度是在前一天的基础上,通过打吊针来达到第二天的降温状态。
1.1 RNN的应用
由于RNN的记忆性,我们最容易想到的就是RNN在自然语言处理方面的应用,譬如下面这张图,提前预测出下一个字。
除此之外,RNN的应用还包括下面的方向:
-
语言模型:RNN被广泛应用于语言模型的建模中,例如自然语言处理、机器翻译、语音识别等领域。
-
时间序列预测:RNN可以用于时间序列预测,例如股票价格预测、气象预测、心电图信号预测等。
-
生成模型:RNN可以用于生成模型,例如文本生成、音乐生成、艺术创作等。
-
强化学习:RNN可以用于强化学习中,例如在游戏、机器人控制和决策制定等领域。
1.2 RNN的缺陷
想必大家一定听说过LSTM,没错,就是由于RNN的尿性,所以才出现LSTM这一更精妙的时间序列预测模型的设计。但是我们知己知彼才能百战百胜,因此我还是决定详细分析一下RNN的缺陷,看过一些资料,但是只是肤浅的提到了梯度消失和梯度爆炸,没有实际的数学推导,这可不是一个求学之人应该有的态度!
主要的缺陷是两个:
-
长期依赖问题导致的梯度消失:众所周知RNN模型是一个具有记忆的模型,每一次的预测都和当前输入以及之前的状态有关,但是我们试想,如果我们的句子很长,他在第1000个记忆细胞还能记住并很好的利用第1个细胞的记忆状态吗?答案显然是否定的
-
梯度爆炸

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/fbd6dc5804.html
