循环神经网络(一)---

        卷积神经网络相当于人类的视觉,但是它并没有记忆能力,所以它只能处理一种特定的视觉任务,没办法根据以前的记忆来处理新的任务。那么记忆力对于网络而言到底是不是必要的呢?很显然在某些问题上是必要的,比如在一场电影中推断下一个时间点的场景,这个时候仅依赖于现在的场景并不够,需要依赖于前面发生的情节。对于这样一些不仅依赖于当前情况,还依赖于过去情况的问题,传统的神经网络结构无法很好地处理,所以基于记忆的网络模型是必不可少的。

        循环神经网络的提出便是基于记忆模型的想法,期望网络能够记住前面出现的特征,并依据特征推断后面的结果,而且整体的网络结构不断循环,因此得名循环神经网络。

问题介绍

        前面介绍过多层全连接网络和卷积神经网络,可以发现这些网络不需要记忆的特性也能处理对应的任务,下面举一个具体的例子引出循环神经网络。

        首先我们来看看下面这两句话,如图5.1与图5.2所示。

        第一句话表达到达北京的意思,第二句话表达离开北京的意思。对于这样一个任务,如果网络只输入 “beijing” 这个词而没有记忆的特性,那么对于这两句话,网络会输出相同的结果。但是如果网络能够记忆 “beijing” 前面的词,它就会预测出不同的结果,所以说神经网络需要记忆的特性。

循环神经网络的基本结构

        循环神经网络的基本结构特别简单,就是将网络的输出保存在一个记忆单元中,这个记忆单元和下一次的输入一起进入神经网络中。使用一个简单的两层网络作为示范,在它的基础上扩充为循环神经网络的结构,用图 5.3简单的表示。

        可以看到网络在输入的时候会联合记忆单元一起作为输入,网络不仅输出结果,还会将结果保存到记忆单元中,图 5.3就是一个最简单的循环神经网络在一次输入时的结构示意图。

        从上面的原理中可以发现,输入序列的顺序改变,会改变网络的输出结果,这是因为记忆单元的存在,使得两个序列在顺序改变之后记忆单元中的元素也改变了,所以会影响最终的输出结果。

        图 5.3是序列中一个数据点传入网络的示意图,那么整个序列如何传入网络呢?

        将序列中的每个数据点依次传入网络即可,如图 5.4所示。

        无论序列有多长,都能不断输入网络,最终得到结果。可能看到这里,读者会有一些疑问,图 5.4中每一个网络是不是都是独立的权重?对于这个问题,先考虑一下如果是不同的序列,那么图 5.4中格子的数目就是不同的,对于一个网络结构,不太可能出现这种参数数目变化的情况。

        事实上,这里再次使用了参数共享的概念,也就是说虽然上面有三个格子,其实它们都是同一个格子,而网络的输出依赖于输入和记忆单元,可以用图 5.5表示。

        如图5.5所示,左边就是循环神经网络实际的网络流,右边是将其展开的结果,可以看到网络中具有循环结构,这也是循环神经网络名字的由来。同时根据循环神经网络的结构也可以看出它在处理序列类型的数据上具有天然的优势,因为网络本身就是一个序列结构,这也是所有循环神经网络最本质的结构。

         循环神经网络也可以有很深的网络层结构,如图5.6所示。

        可以看到网络是单方向的,这代表网络只能知道单侧的信息,有的时候序列的信息不只是单边有用,双边的信息对预测结果也很重要,比如语音信号,这时候就需要看到两侧信息的循环神经网络结构。这并不需要用两个循环神经网络分别从左右两边开始读取序列输入,使用一个双向的循环神经网络就能完成这个任务,如图5.7所示。

        使用双向循环神经网络,网络会先从序列的正方向读取数据,再从反方向读取数据,最后将网络输出的两种结果合在一起形成网络的最终输出结果。

存在的问题

        根据前面介绍的内容可以了解到循环神经网络具有特别好的记忆特性,能够将记忆内容应用到当前情景下,但是随后人们发现网络的记忆能力并没有想象中那么有效。

        记忆最大的问题在于它有遗忘性,我们总是更加清楚地记得最近发生的事情而遗忘很久之前发生的事情,循环神经网络同样有这样的问题。如果一项任务需要依赖近期的信息来预测结果,循环神经网络往往具有比较好的表现,比如给出下面一句话“我住在中国,我会讲中文”,使用循环神经网络就能够依据前面内容中的“中国”来预测后面的“中文”。循环神经网络能够很好地解决这种短时依赖的问题,如图5.8所示。

        但是对于长时依赖的问题,循环神经网络的表现就不再那么尽如人意。比如将上一个问题中的这句话拆开,在一篇文章的开头写上“我住在中国”,希望循环神经网络在文章的末尾能够预测“我会讲中文”,这时网络就没办法很好地预测这个结果,因为记忆的信息和预测位置之间的跨度太大,网络往往不能记忆这么长时间的信息,而目随着时间跨度越来越大,循环神经网络也越来越难以学习这些信息,如图5.9所示。

        这些问题导致循环神经网络在实际应用上一直没办法取得很好的效果,但是这些问题能不能解决呢?从理论上说,循环神经网络是完全能够解决这种长时依赖问题的可以针对具体的问题,人为挑选一些特定的参数来解决,但这并不具有普适性,因为循环神经网络没有办法自己决定该挑选哪些参数。1994年 Bengio 甚至发表论文论述长时依赖问题的原因以及为什么它难以解决。

        早期循环神经网络的发展存在长时依赖问题,后来依据循环神经网络的基本结构,有人提出了一些特定的变式,这些变式解决了长时依赖的问题,并在此后循环神经网络的应用中成为主流,下面就来介绍目前循环神经网络最为流行的两种结构:LSTM和GRU。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值