动手学深度学习(Pytorch版)代码实践 -循环神经网络-54循环神经网络概述

admin2024-07-07  4

54循环神经网络概述

1.潜变量自回归模型

使用潜变量h_t总结过去信息
动手学深度学习(Pytorch版)代码实践 -循环神经网络-54循环神经网络概述,在这里插入图片描述,第1张

2.循环神经网络概述

​ 循环神经网络(recurrent neural network,简称RNN)源自于1982年由Saratha Sathasivam 提出的霍普菲尔德网络。循环神经网络,是指在全连接神经网络的基础上增加了前后时序上的关系,可以更好地处理比如机器翻译等的与时序相关的问题。

​ 循环神经网络是一种对序列数据有较强的处理能力的网络。在网络模型中不同部分进行权值共享使得模型可以扩展到不同样式的样本,比如CNN网络中一个确定好的卷积核模板,几乎可以处理任何大小的图片。将图片中分成多个区域,使用同样的卷积核对每一个区域进行处理,最后可以获得非常好的处理结果。同样的,循环网络使用类似的模块(形式上相似)对整个序列进行处理,可以将很长的序列进行泛化,得到需要的结果。

RNN的目的就是用来处理序列数据的。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题都无能无力。比如你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。

动手学深度学习(Pytorch版)代码实践 -循环神经网络-54循环神经网络概述,在这里插入图片描述,第2张

相比于词袋模型和前馈神经网络模型,RNN可以考虑到词的先后顺序对预测的影响,RNN包括三个部分:输入层、隐藏层和输出层。相对于前馈神经网络,RNN可以接收上一个时间点的隐藏状态。

3.循环网络结构图

动手学深度学习(Pytorch版)代码实践 -循环神经网络-54循环神经网络概述,在这里插入图片描述,第3张

x是输入层的值。s表示隐藏层的值,U是输入层到隐藏层的权重矩阵,O是输出层的值。V是隐藏层到输出层的权重矩阵。循环神经网络的隐藏层的值s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s。权重矩阵W就是隐藏层上一次的值作为这一次的输入的权重。

动手学深度学习(Pytorch版)代码实践 -循环神经网络-54循环神经网络概述,在这里插入图片描述,第4张

3.与传统神经网络的区别

传统神经网络(包括CNN),输入和输出都是互相独立的。如图像上的猫和狗是分隔开的,但有些任务,后续的输出和之前的内容是相关的。例如:我正在学习循环神经网络,其简称为___。这是一道填空题,需要依赖之前的输入。

RNN引入“记忆”的概念,也就是输出需要依赖之前的输入序列,并把关键输入记住。它并非刚性地记忆所有固定长度的序列,而是通过隐藏状态来存储之前时间步的信息。RNN跟传统神经网络最大的区别在于每次都会将前一次的输出结果,带到下一次的隐藏层中,一起训练。如下图所示:

动手学深度学习(Pytorch版)代码实践 -循环神经网络-54循环神经网络概述,在这里插入图片描述,第5张

4.RNN的多种结构

动手学深度学习(Pytorch版)代码实践 -循环神经网络-54循环神经网络概述,在这里插入图片描述,第6张

5.应用领域
  1. 机器翻译:寻找相同的意义序列在不同语言中的表达。
  2. 诗歌生成:基于一个主题按照一定的规律输出有逻辑的词语序列。
  3. 生成图像描述:改变两端的信息类型,输入图片,输出句子。
  4. 语言识别、语音生成:声音信号按时间顺序组成的序列。
6.缺陷

RNN是一种死板的逻辑,越晚的输入影响越大,越早的输入影响越小,且无法改变这个逻辑。短期的记忆影响较大,但是长期的记忆影响就很小,这就是RNN存在的短期记忆问题,无法处理很长的输入序列。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!