一、概念了解
前言
循环神经网络(Recurrent Neural Networks,RNN),是一种反馈网络,模拟“人脑记忆功能”,常用于语言识别、机器翻译、视频分析、生成图像描述等。
循环神经网络通过使用带自反馈的神经元,使得网络的输出不仅和当前的输入有关,还和上一时刻的输出相关,于是在处理任意长度的时序数据时,就具有短期记忆能力。
RNN能有效处理序列特性的数据,它能挖掘数据中的时序信息以及语义信息。
序列特性:符合时间顺序,逻辑顺序,或者其它顺序
- 循环神经网络的隐藏层之间的结点是有连接的,隐藏层的输入不仅包括输入层的输出,还包括上一时刻隐藏层的输出。
- 即:网络对前面信息进行记忆,并应用于当前输出的计算中;当前神经元的输出与当前输入、和之前输出有关。
循环体
由输入层、一个隐藏层和一个输出层组成
特征:
- 网络对前面信息进行记忆,并应用于当前输出的计算中
- 当前输出与当前输入、和之前输出有关
- 隐藏层之间的节点不在无连接而是有连接的;
- 隐藏层的输入包括输入层以及上一时刻隐藏层的输出
循环神经网络
循环神经网络由循环体堆叠而成,为了方便折叠,循环体有两类输出:隐藏层输出、最终输出。
隐藏层输出:包括各时间步的输出。最终输出:只是最后一个时间步的输出
LSTM网络
长短期记忆神经网络(Long short-term memory,LSTM),是RNN的一种,该网络是对简单循环神经网络改进。
LSTM是一种拥有三个“门”结构的特殊网络结构。LSTM结构可以更加有效的决定哪些信息应该被遗忘,哪些信息应该被保留
- 遗忘门:让循环神经网络”忘记“之前没有用的信息。
- 输入门:在循环神经网络"忘记"了部分之前的状态后,它还需要从当前的输入补充最新的记忆,这个过程需要”输入门“完成。
- 输出门:LSTM结构在计算得到新的状态Ct后需要产生当前时刻的输出,这个过程是由”输出门“完成。
LSTM通过它的“门控装置”有效的缓解了梯度消失和爆炸的问题。
循环神经网络应用
主要在自然语言处理方向应用;
- 文档分类和时间序列分析(识别文章的主题)
- 时间序列对比 (比较两个文档的相关程度)
- 序列到序列的学习(中文翻译为英文)
- 情感分析 (推文或电影评论的情感划分为正面或负面)
- 世间序列预测 (根据最近的天气数据来预测未来天气)
二、进一步认识
前言
循环神经网络(Recurrent Neural Networks,RNN),是一种反馈网络,模拟“人脑记忆功能”,常用于语言识别、机器翻译、视频分析等。
循环神经网络通过使用带自反馈的神经元,使得网络的输出不仅和当前的输入有关,还和上一时刻的输出相关,于是在处理任意长度的时序数据时,就具有短期记忆能力。
RNN能有效处理序列特性的数据,它能挖掘数据中的时序信息以及语义信息。
序列特性:符合时间顺序,逻辑顺序,或者其它顺序
在序列数据中,各元素之间具有一定的相关性;处理序列数据时,不仅要考虑当前时间步的数据,还需要考虑之前时间步的数据。
循环神经网络可以记录各个时间步的输出,并且之间时间步的输出会影响后续时间步的输出,能用来处理序列数据。
循环神经网络及其按时间展开后的效果图:
循环神经网络的隐藏层之间的结点是有连接的,隐藏层的输入不仅包括输入层的输出,还包括上一时刻隐藏层的输出。
网络对前面信息进行记忆,并应用于当前输出的计算中;当前神经元的输出与当前输入、和之前输出有关。
隐藏层的输入包括输入层以及上一时刻隐藏层的输出。
循环体
由输入层、一个隐藏层和一个输出层组成
网络对前面信息进行记忆,并应用于当前输出的计算中;当前输出与当前输入、和之前输出有关。
隐藏层之间的节点不在无连接而是有连接的;隐藏层的输入包括输入层以及上一时刻隐藏层的输出。
循环神经网络
循环神经网络由循环体堆叠而成,为了方便折叠,循环体有两类输出:隐藏层输出、最终输出。
隐藏层输出:包括各时间步的输出
最终输出:只是最后一个时间步的输出
循环神经网络及其按时间展开:
训练算法:RNN通常采用时序反向传播算法(BPTT)。
BPTT的基本原理和BP算法是一样的,分位三步:
- 1.前向计算每个神经元的输出值;
- 2.反向计算每个神经元的误差项值,它是误差函数E对神经元j的加权输入的偏导数;
- 3.计算每个权重的梯度。
最后再用随机梯度下降算法更新权重。
输入和输出可能因长度而异,不同类型的 RNN 用于不同的使用案例,如音乐生成、情绪分类和机器翻译。不同类型的 RNN :
1)一对一:
单个输入映射到单个输出;应用:文本生成、词语预测、股市预测。
2)一对多:
单个输入映射到不同的输出值;应用:自动图像标题。
3)多对一:
将一系列输入映射成单个产值;应用:情绪分析。
4)多对多:
任意长度的输入序列映射成任意长度输出序列;应用:聊天机器人。
LSTM网络
长短期记忆神经网络(Long short-term memory,LSTM),是RNN的一种,该网络是对简单循环神经网络改进;
循环神经网络的参数学习可以通过随时间反向传播算法来学习,即按照时间的逆序把误差一步步往前传递。而当输入序列比较长时,会产生梯度爆炸或梯度消失问题,这也叫做长期依赖问题。为了解决这个问题,门控机制被引入来改进循环神经网络,也就是长短期记忆网络(LSTM)和门控循环单元(GRU)。
LSTM是一种拥有三个“门”结构的特殊网络结构。LSTM结构可以更加有效的决定哪些信息应该被遗忘,哪些信息应该被保留
遗忘门:让循环神经网络”忘记“之前没有用的信息。遗忘门会根据当前的输入Xt、上一时刻状态Ct-1、上一时刻的输出Ht-1共同决定哪一部分记忆需要被遗忘。
输入门:在循环神经网络"忘记"了部分之前的状态后,它还需要从当前的输入补充最新的记忆,这个过程需要”输入门“完成。输入门会根据Xt、Ct-1、Ht-1决定哪些部分将进入当前时刻的状态Ct。
输出门:LSTM结构在计算得到新的状态Ct后需要产生当前时刻的输出,这个过程是由”输出门“完成。输出门根据最新的状态Ct、上一时刻的输出Ht-1和当前的输入Xt来决定该时刻的输出Ht。
LSTM通过它的“门控装置”有效的缓解了梯度消失和爆炸的问题。
即:
循环神经网络应用
主要在自然语言处理方向应用;
- 文档分类和时间序列分析(识别文章的主题)
- 时间序列对比 (比较两个文档的相关程度)
- 序列到序列的学习 (中文翻译为英文)
- 情感分析 (推文或电影评论的情感划分为正面或负面)
- 世间序列预测 (根据最近的天气数据来预测未来天气)
参考:
1)西安电子科技大学《人工智能导论》课程;
2)北京交通大学《图像处理与机器学习》课程;
3)https://zhuanlan.zhihu.com/p/123211148
4)https://blog.csdn.net/hellowuxia/article/details/86529575
5)https://www.cnblogs.com/Luv-GEM/p/10703906.html
6)https://www.ibm.com/cloud/learn/recurrent-neural-networks
如有错误,欢迎指出;欢迎交流~
如果大家想实践一下,可看看Tensorflow官方的案例:https://www.tensorflow.org/guide/keras/rnn
温故而知新
人工神经网络 (Artificial Neural Network, ANN),由人工神经元构成的网络,模拟人类的大脑;它模拟生物过程以反映人脑某些特征的计算结构。
神经元及其突触是神经网络的基本器件;模拟生物网络首先模拟生物神经元。
卷积神经网络(Convolutional Neural Network, CNN),在计算机视觉中得到了广泛的应用。
卷积神经网络通过卷积层与池化层的叠加实现对输入数据的特征提取,最后连接全连接层实现分类。
卷积神经网络是前馈网络;前馈神经网络是一个静态网络,信息的传递是单向的,网络的输出只依赖于当前的输入,不具备记忆能力。
它适合静态数据,常用于计算机视觉,处理图像问题。
转载:https://blog.csdn.net/qq_41204464/article/details/115532353