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

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

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

一、概念及应用场景

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

二、为什么要用RNN?

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

三、RNN基本原理及结构

    首先对于一个简单的循环神经网络如下所示,它由输入层、隐藏层以及输出层组成。
Alt
    由上图我们可以看到,RNN与传统神经网络有很大的不同,它的隐藏层神经单元A不仅与输入和输出有关,而且自身也存在回路,说明上一个时刻的网络状态信息会对下一时刻的网络状态产生影响。将上图展开,得到如下图所示:
Alt
    其动态图如下图:
Alt
    其数学表达式为:
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
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Alt
    上图依然是一个RNN神经网络的时序展开模型,中间t时刻的网络模型揭示了RNN的结构。可以看到,原始的RNN网络的内部结构非常简单。神经元A在t时刻的状态仅仅是t-1时刻神经元状态与t时刻网络输入的双曲正切函数的值,这个值不仅仅作为该时刻网络的输出,也作为该时刻网络的状态被传入到下一个时刻的网络状态中,这个过程叫做RNN的正向传播(forward propagation)。注:双曲正切函数的解析式如下:
Alt
    双曲正切函数的图像如下所示:
Alt
    这里就带来一个问题:为什么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

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
LSTM循环神经网络(Long Short-Term Memory Recurrent Neural Network)是一种特殊的循环神经网络结构,用于处理时间序列数据。LSTM网络通过引入记忆单元和门控机制,解决了传统循环神经网络中的梯度消失和梯度爆炸问题,并且具有更强的记忆能力。 LSTM网络的核心是记忆单元,记忆单元可以记住和遗忘信息。每个记忆单元由一个细胞状态(cell state)和三个门控单元(输入门、遗忘门和输出门)组成。输入门决定了何时更新细胞状态,遗忘门决定了何时忘记过去的信息,输出门决定了何时输出当前的信息。这些门控单元通过对输入数据的加权求和和激活函数的处理来控制信息的流动。 LSTM网络的另一个重要特点是它可以处理双向序列。这是通过将两个LSTM网络堆叠起来实现的,一个网络从前向后处理输入序列,另一个网络从后向前处理输入序列。这种双向结构可以更好地捕捉序列中的前后依赖关系。 因此,LSTM循环神经网络是一种具有长期记忆能力和门控机制的网络结构,适用于处理时间序列数据,并且可以通过堆叠和双向结构增强其性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [深度学习笔记 9 循环神经网络RNN、LSTM)](https://blog.csdn.net/qq_41134483/article/details/127415813)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值