循环神经网络(RNN)笔记总结

循环神经网络(RNN)笔记总结

-------本文仅为学习笔记,不做任何商业用途-------

一、概念及应用场景

    循环神经网络(RNN)是一类以序列数据为输入,在序列的演进方向进行递归且所有节点(循环单元)按链式连接的递归神经网络。就像卷积神经网络(CNN)是专门用于处理网格化数据(如图像)的神经网络,循环神经网络是专门用于处理序列的神经网络。
    常见的循环神经网络包括双向循环神经网络(Bi-RNN)以及长短期记忆网络(LSTM),之后会对LSTM进行详细的介绍,见主页其它博客内容。
    在计算机视觉的相关领域内,循环神经网络也应用广泛。例如在字符识别中,有研究使用卷积神经网络对包含字符的图像进行特征提取,并将特征输入LSTM进行序列标注;对基于视频的计算机视觉问题,例如动作识别(action recognition)中,RNN可以使用卷积神经网络逐帧提取的图像特征进行学习。

二、为什么要用RNN?

    在传统的神经网络中,输入数据之间通常是分离的,它只能单独的去处理一个个的输入,前后输入之间并没有相关性,但是在实际应用中,某些任务需要能够处理序列的信息,而且前后输入存在一定的联系。比如说对于自然语言处理的相关任务,对于“夏天的树叶很绿”这句话来说,前一个单词对于后面单词的预测有很大的影响,“夏天的树叶很 * ”,有了这些信息,就可以很容易的预测出最后一个词“绿”的词性。而对计算机视觉领域的动作识别任务,视频流前后动作也具有很大的相关性,不能单独取处理每一帧,而要分析这些帧连起来的整个序列。所以为了解决上述种种问题,能够更好的处理序列信息,RNN由此诞生并被广泛使用。

三、RNN基本原理及结构

    首先对于一个简单的循环神经网络如下所示,它由输入层、隐藏层以及输出层组成。
循环神经网络(RNN)笔记总结_第1张图片
    由上图我们可以看到,RNN与传统神经网络有很大的不同,它的隐藏层神经单元A不仅与输入和输出有关,而且自身也存在回路,说明上一个时刻的网络状态信息会对下一时刻的网络状态产生影响。将上图展开,得到如下图所示:
循环神经网络(RNN)笔记总结_第2张图片
    其动态图如下图:
循环神经网络(RNN)笔记总结_第3张图片
    其数学表达式为:
h t = ϕ ( W x h x t + W h h h t − 1 + b ) h_t= \phi(W_{xh}x_t+W_{hh}h_{t-1}+b) ht=ϕ(Wxhxt+Whhht1+b)
    这里的 W x h W_{xh} Wxh为输入层与隐藏层之间的权重, W h h W_{hh} Whh为隐藏层与输出层之间的权重, ϕ \phi ϕ为激活函数。值得注意的是,所有时刻的权重矩阵都是共享的。

    为什么参数是共享的呢?

    这是由于在神经元A中的运算和变量在不同时刻是相同的,因此循环神经网络理论上可以看作是同一神经网络被无限复制的结果,极大的降低了计算量。循环神经网络在不同的位置共享参数,从而使有限的参数处理任意长度的序列。如果我们在每个时间点都有一个单独的参数,我们不但不能泛化到训练时没有见过序列长度,也不能再时间上共享不同序列长度和不同位置的统计强度。

    关于激活函数的选取:

    此部分引用博客:
    作者:光的文明
    链接:https://www.jianshu.com/p/87aa03352eb9
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
循环神经网络(RNN)笔记总结_第4张图片
    上图依然是一个RNN神经网络的时序展开模型,中间t时刻的网络模型揭示了RNN的结构。可以看到,原始的RNN网络的内部结构非常简单。神经元A在t时刻的状态仅仅是t-1时刻神经元状态与t时刻网络输入的双曲正切函数的值,这个值不仅仅作为该时刻网络的输出,也作为该时刻网络的状态被传入到下一个时刻的网络状态中,这个过程叫做RNN的正向传播(forward propagation)。注:双曲正切函数的解析式如下:
Alt
    双曲正切函数的图像如下所示:
循环神经网络(RNN)笔记总结_第5张图片
    这里就带来一个问题:为什么RNN网络的激活函数要选用双曲正切而不是sigmod呢?(RNN的激活函数除了双曲正切,RELU函数也用的非常多)原因在于RNN网络在求解时涉及时间序列上的大量求导运算,使用sigmod函数容易出现梯度消失,且sigmod的导数形式较为复杂。事实上,即使使用双曲正切函数,传统的RNN网络依然存在梯度消失问题,无法“记忆”长时间序列上的信息,这个bug直到LSTM上引入了单元状态后才算较好地解决。

四、RNN的特点

    优点:模型具备记忆性,可以对具有相关性的序列数据进行处理;
    缺点:不能记忆太前或太后的内容,因为存在梯度爆炸或梯度消失。

五、总结

    通过学习了RNN的相关知识,这里简要的总结RNN的基本原理结构,清晰的阐述了RNN产生的原因以及其使用场景。尽管RNN可以解决序列数据问题,但由于其记忆有限,存在梯度爆炸等问题,故产生了LSTM模型,将在之后进行详细介绍。而在计算机视觉领域,尤其是动作识别中,利用LSTM考虑从视频光流信息应用的十分广泛。

Reference

[1]https://baike.baidu.com/item/%E5%BE%AA%E7%8E%AF%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/23199490?fr=aladdin
[2]https://zhuanlan.zhihu.com/p/30844905
[3]https://www.jianshu.com/p/87aa03352eb9
[4]https://zhuanlan.zhihu.com/p/24720659
[5]https://www.orchome.com/1541

你可能感兴趣的:(RNN,神经网络,卷积)