循环神经网络(RNN)笔记总结
一、概念及应用场景
循环神经网络(RNN)是一类以序列数据为输入,在序列的演进方向进行递归且所有节点(循环单元)按链式连接的递归神经网络。就像卷积神经网络(CNN)是专门用于处理网格化数据(如图像)的神经网络,循环神经网络是专门用于处理序列的神经网络。
常见的循环神经网络包括双向循环神经网络(Bi-RNN)以及长短期记忆网络(LSTM),之后会对LSTM进行详细的介绍,见主页其它博客内容。
在计算机视觉的相关领域内,循环神经网络也应用广泛。例如在字符识别中,有研究使用卷积神经网络对包含字符的图像进行特征提取,并将特征输入LSTM进行序列标注;对基于视频的计算机视觉问题,例如动作识别(action recognition)中,RNN可以使用卷积神经网络逐帧提取的图像特征进行学习。
二、为什么要用RNN?
在传统的神经网络中,输入数据之间通常是分离的,它只能单独的去处理一个个的输入,前后输入之间并没有相关性,但是在实际应用中,某些任务需要能够处理序列的信息,而且前后输入存在一定的联系。比如说对于自然语言处理的相关任务,对于“夏天的树叶很绿”这句话来说,前一个单词对于后面单词的预测有很大的影响,“夏天的树叶很 * ”,有了这些信息,就可以很容易的预测出最后一个词“绿”的词性。而对计算机视觉领域的动作识别任务,视频流前后动作也具有很大的相关性,不能单独取处理每一帧,而要分析这些帧连起来的整个序列。所以为了解决上述种种问题,能够更好的处理序列信息,RNN由此诞生并被广泛使用。
三、RNN基本原理及结构
首先对于一个简单的循环神经网络如下所示,它由输入层、隐藏层以及输出层组成。
由上图我们可以看到,RNN与传统神经网络有很大的不同,它的隐藏层神经单元A不仅与输入和输出有关,而且自身也存在回路,说明上一个时刻的网络状态信息会对下一时刻的网络状态产生影响。将上图展开,得到如下图所示:
其动态图如下图:
其数学表达式为:
h t = ϕ ( W x h x t + W