通俗易懂说模型——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

相关文章
|
5天前
|
机器学习/深度学习 算法 TensorFlow
TensorFlow 2keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)
TensorFlow 2keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)
|
5天前
|
机器学习/深度学习 数据可视化 算法框架/工具
R语言深度学习KERAS循环神经网络(RNN)模型预测多输出变量时间序列
R语言深度学习KERAS循环神经网络(RNN)模型预测多输出变量时间序列
|
5天前
|
机器学习/深度学习
HAR-RV-J与递归神经网络(RNN)混合模型预测和交易大型股票指数的高频波动率
HAR-RV-J与递归神经网络(RNN)混合模型预测和交易大型股票指数的高频波动率
|
5天前
|
机器学习/深度学习 自然语言处理 PyTorch
PyTorch搭建RNN联合嵌入模型(LSTM GRU)实现视觉问答(VQA)实战(超详细 附数据集和源码)
PyTorch搭建RNN联合嵌入模型(LSTM GRU)实现视觉问答(VQA)实战(超详细 附数据集和源码)
91 1
|
6月前
|
机器学习/深度学习 存储 自然语言处理
深入解析序列模型:全面阐释 RNN、LSTM 与 Seq2Seq 的秘密
深入解析序列模型:全面阐释 RNN、LSTM 与 Seq2Seq 的秘密
92 0
|
8月前
|
人工智能 人机交互 语音技术
INTERSPEECH2023论文解读|BAT一种低延迟低内存消耗的RNN-T模型
INTERSPEECH2023论文解读|BAT一种低延迟低内存消耗的RNN-T模型
110 0
|
11月前
|
机器学习/深度学习 人工智能 数据可视化
人工智能创新挑战赛:海洋气象预测Baseline[4]完整版(TensorFlow、torch版本)含数据转化、模型构建、MLP、TCNN+RNN、LSTM模型训练以及预测
人工智能创新挑战赛:海洋气象预测Baseline[4]完整版(TensorFlow、torch版本)含数据转化、模型构建、MLP、TCNN+RNN、LSTM模型训练以及预测
人工智能创新挑战赛:海洋气象预测Baseline[4]完整版(TensorFlow、torch版本)含数据转化、模型构建、MLP、TCNN+RNN、LSTM模型训练以及预测
|
11月前
|
机器学习/深度学习 人工智能 资源调度
人工智能创新挑战赛:助力精准气象和海洋预测Baseline[3]:TCNN+RNN模型、SA-ConvLSTM模型
人工智能创新挑战赛:助力精准气象和海洋预测Baseline[3]:TCNN+RNN模型、SA-ConvLSTM模型
人工智能创新挑战赛:助力精准气象和海洋预测Baseline[3]:TCNN+RNN模型、SA-ConvLSTM模型
|
12月前
|
机器学习/深度学习 存储 编解码
MDNet、SiamFC、ADNet、CFNet、LSTM(RNN)…你都掌握了吗?一文总结目标追踪必备经典模型(一)-2
MDNet、SiamFC、ADNet、CFNet、LSTM(RNN)…你都掌握了吗?一文总结目标追踪必备经典模型(一)
117 0
|
5天前
|
机器学习/深度学习 自然语言处理 TensorFlow
tensorflow循环神经网络(RNN)文本生成莎士比亚剧集
我们将使用 Andrej Karpathy 在《循环神经网络不合理的有效性》一文中提供的莎士比亚作品数据集。给定此数据中的一个字符序列 (“Shakespear”),训练一个模型以预测该序列的下一个字符(“e”)。通过重复调用该模型,可以生成更长的文本序列。

热门文章

最新文章