传统神经网络存在的问题?
无法训练出具有顺序的数据。模型搭建时没有考虑数据上下之间的关系。
RNN神经网络
RNN(Recurrent Neural Network,循环神经网络)是一种专门用于处理序列数据的神经网络。在处理序列输入时具有记忆性,可以保留之前输入的信息并继续作为后续输入的一部分进行计算。
RNN的工作原理
隐藏状态更新
输出计算
RNN特点:引入了隐状态h(hidden state)的概念,隐状态h可以对序列形的数据提取特征,接着再转换为输出。
将初始隐藏状态 h0 与参数矩阵 W 相乘,将第一个词向量 x1 与参数矩阵U 相乘,两个结果相加,并加上偏置 b。重复上述步骤,将 h1 与 W 相乘,将 x2 与 U相乘,相加后加上偏置 b,再通过激活函数 f得到 h2。
将隐藏状态 ht与一个参数矩阵 V 相乘,然后加上一个偏置 c
在计算时,每一步使用的参数U、W、b都是一样的,也就是说每个步骤的参数都是共享的,
RNN结构中输入是x1, x2, .....xn,输出为y1, y2, ...yn,也就是说,输入和输出序列必须要是等长的
RNN的局限:
记忆能力有限, 梯度消失和梯度爆炸,难以捕捉到长期依赖关系
原因是:梯度会随着时间的推移不断下降减少,而当梯度值变得非常小时,就不会继续学习。