自学内容网 自学内容网

《神经网络》—— 循环神经网络RNN(Recurrent Neural Network)

一、RNN 简单介绍

  • 循环神经网络(Recurrent Neural Network, RNN)是一种用于处理序列数据的神经网络架构。

  • 与传统的前馈神经网络(Feedforward Neural Network, FNN)不同,传统的前馈神经网络无法训练出具有顺序的数据,在模型搭建时没有考虑数据上下之间的关系

  • RNN 能够在处理当前输入时考虑到之前的输入信息,可以保留之前输入的信息并继续作为后续输入的一部分进行计算,具有记忆性,因此非常适合处理时间序列数据、文本数据等具有序列特性的数据。

二、RNN 基本结构

  • RNN的基本结构包括输入层隐藏层输出层
  • 特别地,RNN的隐藏层有一个反馈连接,使其能够保留前一时刻的状态信息。这种结构使得RNN在处理序列数据时,能够将前一时刻的信息传递给当前时刻,从而实现记忆功能。

1.隐藏中的计算

  • RNN 的隐藏层中引入了 隐状态 h(hidden state)的概念,隐状态 h 可以对序列形的数据提取特征,接着再转换为输出。
  • 下面是处理序列数据长度为4的RNN网络结构图:
    在这里插入图片描述
  • 隐藏层中隐状态 h 的计算过程如下:
    在这里插入图片描述
    • 每个隐状态 h 的计算结果都将会传入下一个计算的过程,从而实现记忆的功能
    • 其中:
      • x 是每一个输入
      • h0 是起始的一个偏执隐状态 h
      • U隐状态到隐状态权重矩阵
      • W输入到隐状态权重矩阵
      • b 是隐藏层的偏置项
      • f 是激活函数,如Tanh或ReLU
    • 计算隐状态时,每层隐藏层中的参数(如权重矩阵和偏置向量)在相同层内是相同的,即所谓的参数共享
    • 这种参数共享机制减少了模型中的参数数量,使得RNN能够更有效地处理序列数据,并且有助于模型学习到序列中的时间依赖性和上下文信息。

2.输出层的计算

  • 输出层通常根据隐状态 h 来计算,下面是输出层的计算过程:
    在这里插入图片描述
  • 其中:
    • V隐状态到输出的权重矩阵
    • c 是输出层的偏置项
    • 输出层的激活函数通常是Softmax用于分类任务
  • 注意输入和输出序列必须要是等长的

3.循环

  • 1.循环的基本概念
    • 在RNN中,“循环”指的是网络在处理输入序列时,能够保持并传递之前的状态信息到后续的时间步中。这种机制使得RNN能够捕捉到序列数据中的时间依赖性,即当前时刻的输出不仅与当前时刻的输入有关,还与之前时刻的输入和状态有关。
  • 2.循环的实现方式
    • RNN通过引入隐状态(hidden state)和循环连接(recurrent connection)来实现信息的循环传递。隐状态是一个向量,它包含了网络在处理当前输入之前所积累的信息。循环连接则是指隐状态在当前时间步被更新后,会作为下一个时间步的输入之一,从而形成一个闭环结构。
    • 如下图:
      在这里插入图片描述

三、RNN 优缺点

1.优点

  • 能够处理序列数据:RNN能够利用之前的输入信息,适用于时间序列分析、自然语言处理等任务。
  • 结构简单:相比于其他复杂的神经网络架构,RNN的结构相对简单,易于理解和实现。

2.缺点

  • 梯度消失/梯度爆炸:RNN在处理长序列时,容易出现梯度消失或梯度爆炸问题,导致难以捕捉长距离依赖关系。
  • 记忆能力有限:虽然RNN具有记忆功能,但其记忆能力有限,难以处理非常长的序列。

原文地址:https://blog.csdn.net/weixin_73504499/article/details/142770470

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!