RNN和LSTM的理解
CNN模型比较适合计算机视觉,他只有相邻的层之间才会有联系,但是对于一句话来说,前后之间是有一定的联系的,比如英语中一些词的单复数和主语有很大的关系,我们在判断时候就需要看一下前面的词,但是CNN模型只能看到上一层,再往前是看不到的,因此在自然语言处理中,CNN模型是不合适的,而RNN模型的输出是受之前输入的值的影响的,因此他在判断一个词时就能够去结合前面输入的词进行判断,适合自然语言处理。
RNN的结构以及计算公式如下图所示
在计算每一次的输出状态时,都会考虑本次的输入以及之前的状态。但是在反向传播的过程中,进行求导时出现的公式是:
公式中的累乘项有Ws这个参数,随着向前传播就会出现很多的Ws的n次方,这时就会出现梯度消失和梯度爆炸的问题。LSTM就是对RNN的进一步改进,解决了梯度消失的问题。
LSTM模型的讲解见博客 https://blog.csdn.net/ch18328071580/article/details/96500490
首先是模型的遗忘门,函数的参数是当前状态的输入和上一时刻的隐藏状态,激活函数是sigmoid函数,得到的输出代表遗忘上一层隐藏细胞状态的概率。之后是模型的输入门,他由两部分组成,第一个是sigmoid函数,另一个是tanh函数。然后去更新记忆细胞的状态,因为当前记忆细胞只记录了上一时刻的内容,我们要让记忆细胞进行更新,让他也记住这一时刻的内容。最后是输出门,由两部分组成,第一部分由上一时刻的隐藏状态和当前的输入经过sigmoid激活函数获得,第二部分由更新过的记忆细胞状态经过tanh激活函数得到。最后就是更新当前时刻预测输出。
在LSTM中有记忆细胞,是对前面信息的一个存储,LSTM中记忆细胞的更新公式为:
遗忘门主要是计算出遗忘上一层隐藏细胞状态的概率。记忆细胞将之前输入的信息与本次输入的信息进行了结合,最后使细胞的状态进行了更新。
输出门计算公式:
输出门最终输出了这一层的结果,他是本次记忆细胞和本次输入信息还有上一层输出的一个结合。
LSTM的反向求导公式: