【学习杂记之深度学习】循环神经网络介绍

循环神经网络(RNN)是一种具有记忆功能的神经网络,适用于处理序列数据。通过引入额外信息,RNN可以在输入相同的条件下产生不同输出。然而,RNN在长时依赖问题上表现不佳,容易出现遗忘现象,导致处理长序列时效果下降。为了解决这一问题,后续发展出了LSTM和GRU等变体,它们在处理长序列和记忆方面更为有效。
摘要由CSDN通过智能技术生成

问题介绍

先举一个具体的例子引出循环神经网络。一起来看看下面这两段话:

第一句话表达了到达北京的意思,第二句话表达的是离开北京的意思,对于这样一个任务,如果网络只输入是 'beijing',那么对于这两句话,网络会输出相同的结果,但是这是不符合我们直觉的,两句话应该表达不同的意思,那么有没有办法能够达到这个效果呢?其实这两句话中只有一个词的差别,就是'离
开'和'到达',如果我们能够用这两个词的信息就能够得到不同的结果,但是现在我们只有 'beijing'这个输入,所以如果网络能够记忆'beijing'前面这个词,他就会预测出不同的结果,所以说这种任务需要神经网络具有记忆的特性。

具有记忆效果的网络-循环神经网络

循环神经网络就是这样一种具有记忆效果的网络,下面用一个简单的两层网络来举例子:

如果除去最左边的部分,那么这就是一个简单的两层神经网络,网络的输入是x1和x2,输出是y1和y2
如果我们在网络的前向传播中再引入额外的信息,比如a1和a2,那么网络就会得到额外的特征输入
从而就算输入是一样的,只要额外的特征输入不同,也会导致最后的结果产生不同的结果,这也就是我们所说的记忆特性。

一般我们讲记忆性,都是对一连串发生的事情来讲,所以循环神经网络一般是使用在一个序列上的,上面这是序列中的一个数据点的过程,下面对于整个序列,有如下的示意图:

非常简单,不断将序列中的数据点传入网络,不断这个序列多长,不断循环下去就可以了。这里可能你会有一个疑问,如果序列很长,不断循环下去是不是参数太多了,而且序列的长度如果不定,那么模型的参数一会儿多,一会儿少,这听上去也挺不靠谱的。
事实上,这里用了参数共享,也就是说上面虽然有3个绿色的格子,但是实际上它们都是同一个绿色的格子,我们可以用下面的图来形象的表示:

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

当然循环神经网络也存在问题:

这里提出的这种结构具有记忆的特点,但是随后人们发现网络的记忆能力并没有我们想象中的那么有效因为伴随着记忆,就有遗忘岀现,比如我们总会更加清楚地记得最近发生的事情而遗忘很久之前的事情。

下面举个例子,'我住在中国,我会讲中文',那么使用循环神经网络能够非常好的利用'中国'来预测'中文',就像下面这样

 但是如果对于长时依赖的问题,循环神经网络就没有那么有效了,比如我们将上面这句话拆开,第一句话放到文章开头,第二句放到文章的结尾,那么因为记忆的信息和预测位置之间跨度太大,网络就没有办法那么好的记忆长时间的信息了,就像下面这样

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

早期循环神经网络的发展存在这长时依赖问題,后来依据循环神经网络的基本结构,有人提岀了一些特定的变式,这些变式解决了长时依赖的问题,并在之后循环神经网络的使用中成为主流,目前循环神经网络较为流行的结构是LSTM和GRU。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值