循环神经网络主要通过将网络的输出保存在一个记忆单元中,这个记忆单元和下一次的输入一起进入神经网络来实现记忆功能。其基本结构如下图所示:
RNN基本结构
这里的基本结构可以循环展开,每个循环部门的相同组建之间实现参数共享。
RNN主要应用在序列信息中,如语音理解,机器翻译,文本生成等。RNN与CNN结合也可以实现无标注图像的内容描述和理解。如下图:
RNN 与CNN 结合做图像内容理解
RNN网络存在记忆遗忘的问题,对于短期内的预测较好,尝试长的预测则不好,同时存在梯度消失和梯度爆炸的问题。由于U、V、W这些参数的共享,对参数的更新需要考虑所有时刻的损失。同时某一时刻的损失对某一参数的梯度是沿着事件序列的反方向传播的。如下图所示
RNN某一时刻梯度反向传播过程
RNN的这种训练方法又叫BPTT算法
为了解决RNN的长时间依赖问题,出现了LSTM和GRU