首页 > 其他分享 >初学RNN

初学RNN

时间:2022-11-16 18:56:59浏览次数:72  
标签:输出 RNN 初学 序列 时刻 隐藏 输入

FNN

定义

FNN(Feedforward Neural Network),即前馈神经网络,它是网络信息单向传递的一种神经网络,数据由输入层开始输入,依次流入隐藏层各层神经元,最终由输出层输出。其当前的输出只由当前的输入决定,任何层的输出都不会影响同级层。

以上图所示的神经网络为例,它在训练过程中通过前向计算和反向传播,不断通过调整权重系数Wi和Wo来实现学习目的。通常情况下,前馈神经网络会在空间上进行延伸,通过增加隐藏层层数与隐藏层神经元个数追求更好的学习效果。

缺点

前馈神经网络假定元素之间是相互独立的,对于序列数据,只能单独地处理序列中的每个元素,前一个输入与后一个输入在处理过程中也是完全独立的,无法捕获序列之间的依赖关系。

RNN

定义

RNN(Recurrent Neural Network),即循环神经网络,它是一种主要用来处理序列数据的神经网络,它关注了隐藏层每个神经元在时间维度上的变化,其中循环说成递推可能会更直观一些,本质就是同一个网络接收当前时刻的输入和上一时刻隐藏层神经元的输出,沿着时序反复迭代以实现对序列数据的学习。

结构

直观结构

在上图中, RNN 的每个时刻,输入层的x1和x2都在Wi的作用下传入隐藏层,上一时刻的隐藏层输出也通过Wh传入当前的隐藏层,因此它相当于可以间接访问之前的所有输入,这就是为什么说RNN可以保存记忆。

内部结构

上图展示了RNN在三个相邻时刻的计算逻辑。 在任意时刻t,隐藏层状态的计算可以被视为:

  1. 拼接t时刻的输入Xt和t−1时刻的隐藏层状态Ht−1,得到新的张量[Xt,Ht-1];
  2. 将新的张量送入带有激活函数φ的全连接层,激活函数常用tanh或者relu, 全连接层的输出是t时刻的隐藏层状态Ht

在t时刻,隐藏层状态Ht的计算公式为:

在t时刻,输出层的输出计算公式为:

参数说明:

  • Xt是t时刻的输入,它是一个向量;
  • Wi是输入层到隐藏层的权重矩阵;
  • Ht-1是t-1时刻的隐藏层状态,在初始时刻,会给隐藏层设置初始状态H0
  • Wh是隐藏层上一时刻的值作用于当前时刻的权重矩阵;
  • Wo是隐藏层到输出层的权重矩阵;
  • bh是和bo是偏置系数。

注意:

  • 在不同时刻,RNN总是使用这些模型参数,其参数开销不会随着时间的增加而增加。
  • 隐藏层状态中XtWi+Ht-1Wh的计算,相当于Xt和Ht-1的拼接与Wi和Wh的拼接进行矩阵乘法。
  • RNN和前馈神经网络一样,也是通过反向传播来更新权重,以达到学习的效果。

应用

1-N类型,输入一张图片,输出一段话或者一段音乐,利用它可以实现看图说话。

N-1类型,输入一段话,输出对其情感类别的判断,利用它可以实现文本分类。

N-N类型,输入和输出是等长的序列,可以用来生成等长的诗歌。

N-M类型,输入和输出是不等长的序列,也被叫做Encoder-Decoder模型或Seq2Seq模型,可以应用在机器翻译、文本摘要、阅读理解等多个领域上。

变体

BRNN(Bidirectional RNN)

RNN的一个主要问题是只能从以往的输入进行学习,也就是只能理解上下文中的上文,为了拥有更好的学习效果,因此提出了双向RNN,也就是BRNN。 BRNN会在原有RNN的基础上再加一个隐藏层,该隐藏层的状态是从后向前传播的,从序列的终点开始读取,称为后向层;而原有的从序列起点开始读取的隐藏层称为前向层。 BRNN的隐藏层状态的计算可以被视为:

  1. 根据输入序列计算前向层隐藏层状态H1
  2. 将输入序列反转,计算后向层隐藏层状态H2
  3. 将H1和H2拼接起来,得到最终隐藏层状态H,H=[H1,H2]。

注意,只有能拿到整个输入序列时才能使用BRNN 。

DRNN(Deep RNN)

与前馈神经网络不同,RNN因为考虑了时间维度,隐藏层达到三层就算多的了。

优缺点

优点

  • RNN可以处理序列信息,且内部结构简单,对计算资源的要求低。

缺点

  • RNN是一个时序模型,每个时刻的计算都依赖于前一时刻的结果,计算速度慢;

  • RNN由于梯度消失,难以支持长序列,不能捕获序列中长期的依赖关系;

  • RNN网络在时间维度上是串联的,离当前时间越远的隐藏层输出,对当前隐藏层的输出影响越小,它无法根据不同词本身的重要性对当前的输出产生影响;

  • RNN对所有输入是同等对待的,提取了所有的信息,没有区分有用信息、无用信息和辅助信息。但是如果某个网络可以根据不同输入的重要性,选择性地丢弃和记忆,就可以使得有效信息即使距离当前时间较远,也能有较大影响,实现长期记忆,这就引出了LSTM。

主要参考

标签:输出,RNN,初学,序列,时刻,隐藏,输入
From: https://www.cnblogs.com/engpj/p/16896610.html

相关文章

  • 初学C语言
    注意事项:1)C程序的主体结构说明:#include...viodmain(){//{}包括内容,成为函数体语句1;语句2}2)源文件以“c”为扩展名3)执行入口是main()方法4)严格区分大小写5)每句以......
  • (初学)记一次dockercompose安装mysql8 以及问题
    docker-compose文件如下:1version:'3'2services:3#mysql服务4service-mysql:5image:docker.io/mysql:8.0.276command:7--def......
  • 拓端tecdat|R语言用RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测
    2017年年中,R推出了 ​​Keras​​ 包 ,这是一个在Tensorflow之上运行的综合库,具有CPU和GPU功能。本文将演示如何在R中使用 ​​LSTM​​ 实现时间序列预测。......
  • 新手初学c语言
    #include<stdio.h>intmain(){   printf("您好这是我写的第一个代码");   return0; }第二个代码#include<stdio.h>intmain(){inta=0;intb=0;intc=0;scanf_......
  • Matlab用深度学习循环神经网络RNN长短期记忆LSTM进行波形时间序列数据预测
    此示例说明如何使用长短期记忆(​​LSTM​​)网络预测时间序列。相关视频: LSTM​​神经网络​​架构和原理及其在Python中的预测应用LSTM网络是一种循环神经网络(​​R......
  • 24个适合初学者练习的CSS 和 Javascript 动画效果案例
    英文|https://niemvuilaptrinh.medium.com/24-css-javascript-animation-effects-a4c5b6e98a59翻译|杨小爱在昨天的文章中,我跟大家分享了《​​40个适合初学者练习HTML......
  • 40个适合初学者练习HTML和CSS的案例
    英文|https://niemvuilaptrinh.medium.com/40-html-css-projects-for-beginner-2021-5bd01ff62361翻译 |杨小爱使用多个库进行网页设计会在一定程度上增加页面加载时间,......
  • VUE3初学
    VUE初学创建一个Vue项目powershell中运行vueui 认识Vue各个文件夹(20条消息)前端Vue项目架构-文件夹作用的分析总结_码大星的博客-CSDN博客 .Vue文件 t......
  • Excel VBA 代码结构组成解剖,初学的你可知道
    在上一期我们说到如何去学习VBA,那么我们今天就来说说ExcelVBA代码的结构构成部分。我们先简单看一段代码,如下图所示:上方的代码的意思是,从1+2+3+4+5一直加到1000,最后用VBA函......
  • 初学C语言(3)
    由于疫情原因在学校无法更新。常量:1.字面常量:直接输入即可。如图:2.const修饰的常量:intmain(){constintnum=3;//语法形式为const+数据类型+变量名+=+变......