循环神经网络(RNN)主要用于处理序列数据。它之所以被称为循环神经网络,是因为每个序列的当前输出都与之前的输出相关联。RNN能够记住之前时刻的信息,并将其应用到当前的输出计算中。与卷积神经网络不同,RNN的隐藏层之间的神经元是相互连接的,隐藏层的输入由输入层的输出和上一时刻隐藏层的输出共同组成。尽管RNN在某些方面取得了显著成就,但它也有一些不足之处,比如训练难度大、准确率较低、效率低下、耗时较长等。因此,基于RNN改进的新模型逐渐被开发出来,包括长短时记忆网络(LSTM)、双向RNN、双向LSTM和门控循环单元(GRU)等。这些改进后的RNN模型在图像识别等领域表现出色,并得到了广泛应用。
以LSTM为例,它解决了RNN中存在的梯度消失或梯度爆炸问题,能够更好地学习长期依赖关系。LSTM的核心结构包括三个门控机制:遗忘门、输入门和输出门。遗忘门决定了哪些信息可以通过该单元,通过一个Sigmoid激活函数实现。Sigmoid函数的输入是一个向量,输出是一个介于0到1之间的数值,表示允许各部分信息通过的比例。0表示完全不允许信息通过,1则表示全部信息都可以通过。
输入门负责决定有多少新信息需要加入到单元的状态中,通过一个Tanh层生成一个向量,即作为候选更新内容。
更新单元状态的过程如下:
输出门则决定从单元中输出哪部分信息:
同样,GRU网络模型也解决了RNN存在的梯度消失或梯度爆炸问题,能够学习长期依赖关系,它是LSTM的一种简化版本,结构更加简洁,参数数量较少,训练时间也相对缩短。GRU在网络应用中也非常广泛,特别是在语音识别、图像描述和自然语言处理等领域。