通俗易懂说模型——RNN

简介: 要理解RNN出现的原因,我们必须要理解CNN存在的缺点

RNN分析

RNN出现之因

       要理解RNN出现的原因,我们必须要理解CNN存在的缺点

细细研究上图,我们会发现, 他们的输出不会受之前输出的影响,仅仅受输入特征值的影响,即隐藏层之间没有连接(每一个隐藏层的块表示每一个时刻的输出值)

 总之,CNN考虑不到时间维度上的影响,仅仅能考虑一个时间点,事物不同特征值的输入

  那么,对于简单的猫,狗,手写数字等单个物体的识别具有较好的效果.。但是, 对于一些与时间先后有关的, 比如视频的下一时刻的预测,文档前后文内容的预测等, 这些算法的表现就不尽如人意了。因此, RNN就应运而生了。RNN每个时间点的输出受到之前所有时间点输出的影响,然后综合考虑这些信息做出下一个输出

什么是RNN

       RNN是一种特殊的神经网络结构, 它是根据"人的认知是基于过往的经验和记忆"这一观点提出的. 它与DNN,CNN不同的是: 它不仅考虑前一时刻的输入,而且赋予了网络对前面的内容的一种'记忆'功能。

    结合现实来看,我们每一个人的性格特点都是由以往所有的经历所造成的。离现在时间点越久远的经历对现在的我们影响越小,而发生在最近的经历对我们的影响越大。

       RNN之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出,即隐藏层之间还存在先后的时间序关系

RNN模型结构

       前面说了,RNN结构能够实现时间维度上的记忆功能,并且这个记忆和人类得记忆一样,具有长时间遗忘性。其模型结构如下图:

       当然,网络上还有其他经典的模型图:

    第一张图片突出的是RNN对CNN的继承与发展——既有CNN的特点(全连接层),又有RNN的特点(隐藏层相互连接)

       第二张照片隐藏了全连接层(全连接层封装到A中),仅仅保留RNN自身的特点,全连接层输出到隐藏层后,隐藏层彼此连接

RNN存在的问题

       RNN存在长期依赖问题:长期依赖问题是指RNN难以捕捉长期之前的依赖关系。换句话说,很久之前的数据在RNN中就会被彻底遗忘。并且这个长期实际上并不长,差不多到50个词语RNN就会彻底遗忘前面的数据,这就导致RNN很难处理长文本

举个例子:

1、如果从“这块冰糖味道真?”来预测下一个词,RNN是很容易得出“甜”结果的

2、如果有这么一句话,“他吃了一口菜,被辣的流出了眼泪,满脸通红。旁边的人赶紧给他倒了一杯凉水,他咕咚咕咚喝了两口,才逐渐恢复正常。他气愤地说道:这个菜味道真?”对于这句话,利用RNN来处理时,RNN在语句最后时早就忘了开头的信息“辣的流出来眼泪”,所以它难以成功预测出结果

RNN难以处理长期依赖问题的根本原因在于:经过多层多阶段传播后存在梯度消失(大部分,模型仍可用但是长期依赖会遗忘)或梯度爆炸(很少,但是一遇到模型就彻底完蛋)问题

RNN梯度消失、爆炸的原因

(借用一张别人的图)

       假设时间序列只有三段,初始进位量为S0,则RNN的前向传播过程为:

       再假设损失函数为:

     训练RNN模型的本质就是求解Wx、Ws和Wo的值。进行反向传播求解模型:求解Lt取最小时,Wx、Ws和Wo的值。于是,对Lt求这三个值的偏导有:

                           

可以看到:

       1、Lt对W0没有长期依赖问题

       2、但是对Wx、Ws求偏导时,偏导值不仅与当前的输入Xt有关,也与X0-Xt-1有关。并且这个关系是偏导间积的关系

   再将这个序列的段数扩大到n段(不再是三段),那么此时求偏导后值为:

      Sj是每个时间步结合当前输入以及前时刻输入得到的信息总和,为提高信息的非线性成分以及对不必要信息进行剔除以降低梯度爆炸或消失,我们要在每一步信息传递给下一步时间块前,利用激活函数对信息进行激活处理,如下:

 那么此时(划重点)

1、如果激活函数tanh的导数小于1,那么随着累乘的增加,RNN会出现梯度消失的情况;如果激活函数tanh的导数大于1,那么随着累乘的增加,RNN会出现梯度爆炸的情况

RNN激活函数的选择

Sigmoid激活函数

公式

导函数图像

分析

1、从其导数的函数图像上可以看到,其导数的最大值只有0.25而且当x[-5,5]的范围外时其导数值就已经几乎接近于0了。这种情况会导致训练过程中神经元处于一种饱和状态,反向传播时其权重几乎得不到更新。也就是说采用这个作为RNN的激活函数,会导致梯度消失问题非常严重

2、需要进行指数运算(计算机运行得较慢),计算量大及计算复杂度高,训练耗时;指数的越大其倒数就越小,容易产生梯度消失

Tanh激活函数

公式

导函数图像

分析

1、相比于Sigmoid函数的导函数,Tanh激活函数导数值最大能达到1,在一定程度上应对梯度消失问题优于Sigmoid函数

2、但是同样要进行指数运算,并且再神经网络层数增多时同样会因为链式求导多项相乘导致梯度消失

ReLu激活函数

公式

导函数图像

分析

1、ReLU 函数在正输入时是线性的收敛速度快计算速度快,同时符合恒等性的特点。当输入为正时,由于导数是1,能够完整传递梯度不存在梯度消失的问题(梯度饱和问题)

2、ReLU 函数在x小于0时永远等于0,在x大于0时又为x。所以在神经网络中也具有非线性的特性

3、ReLU在小于0的时候梯度为零,导致了某些神经元永远被抑制,最终造成某些特征模型学习不到;这是典型的 Dead ReLU 问题,所以需要改进随机初始化,避免将过多的负数特征送入ReLU。

总之:在上面三种常见的激活函数中,RNN模型由于存在梯度消失或爆炸问题,所以倾向于选择ReLu激活函数

总结

1、RNN模型相比CNN模型能够处理时间序列的问题,考虑时间点上不同输入值对目前输出值的影响

2、RNN模型存在梯度消失或爆炸的问题,导致其无法处理长期依赖问题

3、虽然可以用激活函数来缓解梯度消失爆炸问题,但RNN在处理长文本仍然存在很多弊端

撰写文章不易,如果文章能帮助到大家,大家可以点点赞、收收藏呀~

7e43ea5b5cc8ab406f77f264a0c12e9f_998b3c0c074f44908ee5ed7f87926aba.jpeg

相关文章
|
2月前
|
机器学习/深度学习 自然语言处理 算法
【NPL自然语言处理】带你迅速了解传统RNN模型
【NPL自然语言处理】带你迅速了解传统RNN模型
|
5月前
|
机器学习/深度学习 自然语言处理
彻底改变语言模型:全新架构TTT超越Transformer,ML模型代替RNN隐藏状态
【7月更文挑战第25天】近年来,NLP领域取得显著进展但也面临挑战,如长上下文建模与计算效率的平衡。为此,研究人员提出Test-Time Training (TTT) 模型架构。TTT由多机构合作开发,旨在解决长上下文建模难题及提高计算效率。通过将隐藏状态视为可学习更新的模型,TTT能随输入增长提升表示能力;采用自监督学习更新规则确保线性计算复杂度的同时保持高性能。实验显示TTT在多种NLP任务中表现优秀,尤其在长上下文处理方面超越Transformer。尽管如此,TTT仍面临训练资源需求高及自监督学习鲁棒性等挑战。[论文](https://arxiv.org/abs/2407.04620)
137 5
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
算法金 | 秒懂 AI - 深度学习五大模型:RNN、CNN、Transformer、BERT、GPT 简介
**RNN**,1986年提出,用于序列数据,如语言模型和语音识别,但原始模型有梯度消失问题。**LSTM**和**GRU**通过门控解决了此问题。 **CNN**,1989年引入,擅长图像处理,卷积层和池化层提取特征,经典应用包括图像分类和物体检测,如LeNet-5。 **Transformer**,2017年由Google推出,自注意力机制实现并行计算,优化了NLP效率,如机器翻译。 **BERT**,2018年Google的双向预训练模型,通过掩码语言模型改进上下文理解,适用于问答和文本分类。
173 9
|
5月前
|
机器学习/深度学习 PyTorch 算法框架/工具
图神经网络是一类用于处理图结构数据的神经网络。与传统的深度学习模型(如卷积神经网络CNN和循环神经网络RNN)不同,
图神经网络是一类用于处理图结构数据的神经网络。与传统的深度学习模型(如卷积神经网络CNN和循环神经网络RNN)不同,
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
计算机视觉借助深度学习实现了革命性进步,从图像分类到复杂场景理解,深度学习模型如CNN、RNN重塑了领域边界。
【7月更文挑战第2天】计算机视觉借助深度学习实现了革命性进步,从图像分类到复杂场景理解,深度学习模型如CNN、RNN重塑了领域边界。AlexNet开启新时代,后续模型不断优化,推动对象检测、语义分割、图像生成等领域发展。尽管面临数据隐私、模型解释性等挑战,深度学习已广泛应用于安防、医疗、零售和农业,预示着更智能、高效的未来,同时也强调了技术创新、伦理考量的重要性。
75 1
|
6月前
|
机器学习/深度学习 自然语言处理 PyTorch
【从零开始学习深度学习】34. Pytorch-RNN项目实战:RNN创作歌词案例--使用周杰伦专辑歌词训练模型并创作歌曲【含数据集与源码】
【从零开始学习深度学习】34. Pytorch-RNN项目实战:RNN创作歌词案例--使用周杰伦专辑歌词训练模型并创作歌曲【含数据集与源码】
|
5月前
|
机器学习/深度学习 数据采集 数据挖掘
Python实现循环神经网络RNN-LSTM回归模型项目实战(股票价格预测)
Python实现循环神经网络RNN-LSTM回归模型项目实战(股票价格预测)
|
6月前
|
机器学习/深度学习 算法 存储
Bengio等人新作:注意力可被视为RNN,新模型媲美Transformer,但超级省内存
【6月更文挑战第3天】Bengio等人提出的新模型Aaren视注意力为特殊RNN,以解决Transformer在资源受限环境中的计算成本高和内存使用问题。Aaren模型通过并行前缀和算法实现高效计算和常数级内存使用,性能接近Transformer,同时在时间序列任务中表现优秀,尤其适合移动设备和嵌入式系统。尽管可能在某些复杂任务上不如Transformer,但其高效性为实时数据处理提供了潜力。论文链接:[https://arxiv.org/pdf/2405.13956](https://arxiv.org/pdf/2405.13956)
109 2
|
7月前
|
机器学习/深度学习 算法 TensorFlow
TensorFlow 2keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)
TensorFlow 2keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)
|
6月前
|
机器学习/深度学习
【从零开始学习深度学习】33.语言模型的计算方式及循环神经网络RNN简介
【从零开始学习深度学习】33.语言模型的计算方式及循环神经网络RNN简介
【从零开始学习深度学习】33.语言模型的计算方式及循环神经网络RNN简介

热门文章

最新文章