当前位置: 首页 > article >正文

循环神经网络 - 给网络增加记忆能力

为了处理时序数据并利用其历史信息, 我们需要让网络具有短期记忆能力。而前馈网络是一种静态网络,不具备这种记忆能力。在正式学习循环神经网络之前,我们先来了解一下给网络增加短期记忆能力的三种方法。

一、延时神经网络

延时神经网络(Time Delay Neural Network, TDNN)是一种专门用于处理时间序列数据或带有时序信息的输入的神经网络结构。它最早用于语音识别等任务,能够捕捉输入信号随时间变化的特征。

1. 核心思想

  • 时序信息捕捉
    TDNN 的设计目的是利用时间上的延迟(或称为时间窗口)来捕捉输入信号中的局部时间依赖性。例如,在语音信号中,某个音素的特征不仅由当前时刻决定,还与前后几帧的信号有关。

  • 固定窗口的局部连接
    类似于卷积神经网络(CNN)在空间上使用局部卷积核捕捉局部空间特征,TDNN 在时间维度上滑动一个窗口(或者说延迟层),对连续的时间片段进行处理。每个神经元会接收来自不同时刻的输入,这样就能“记住”之前的状态,提取时间上的模式。

  • 无需循环结构
    与循环神经网络(RNN)不同,TDNN 是一种前馈网络,通过固定时间延迟直接建立输入与输出之间的映射,不需要显式地进行时间步迭代,这使得它在某些任务上更易于并行化和训练。

2. 工作原理

假设我们有一个时间序列输入 x(t)。在 TDNN 中,我们设定一个时间窗口,假设窗口大小为 T(例如 T=3),那么网络会同时接收 x(t−2)、x(t−1) 和 x(t) 三个时刻的输入信号。

在这一层中,延时神经网络会对这个窗口内的信号进行加权求和(类似于卷积操作),产生一个输出:

y(t)=f(w0⋅x(t)+w1⋅x(t−1)+w2⋅x(t−2)+b),

其中 w0,w1,w2​ 为权重,b 为偏置,f 为激活函数。

通过这种方式,TDNN 能够将过去几时刻的信息整合进当前的输出,从而捕捉局部时间特征。

3. 举例说明

假设我们处理一段简单的音频信号,其离散时间序列为:

x=[1, 3, 2, 5, 4, 6, 3, 2].

我们设定时间窗口大小为 3,对应权重分别为 w0​=0.5,w1=0.3,w2=0.2,偏置 b=0,激活函数为线性函数(即 f(z)=z)。

对于时间步 t=3,网络将接收:

  • x(1)=1(对应 t−2)

  • x(2)=3(对应 t−1)

  • x(3)=2(对应 t)

则输出计算为:

y(3)=0.2×1+0.3×3+0.5×2=0.2+0.9+1.0=2.1

同样,对于 t=4:

  • 输入为 x(2)=3, x(3)=2, x(4)=5,计算:

y(4)=0.2×3+0.3×2+0.5×5=0.6+0.6+2.5=3.7.

通过这种方式,每个输出不仅依赖于当前时刻的信号,还结合了前几个时刻的信号,从而实现“记忆”和捕捉时间上的特征。

4. 总结

  • **延时神经网络(TDNN)**利用固定时间窗口对连续输入进行局部连接,使得每个输出能够综合考虑当前及之前一段时间内的信号。

  • 它与卷积神经网络的局部卷积类似,只不过这里的“卷积”是在时间维度上进行。

  • TDNN 结构简单,前馈运算,无需循环,因此易于并行化,但能有效捕捉时间序列中的局部特征。

与前馈神经网络的关系:

延时神经网络是在前馈网络中的非输出层都添加一个延时器,记录神经元的最近几次活性值。在第 t 个时刻,第 𝑙 层神经元的活性值依赖于第 𝑙 − 1 层神经元的最近 𝐾 个时刻的活性值,即

通过延时器,前馈网络就具有了短期记忆的能力.

这种设计在语音识别、时间序列分析等任务中都取得了成功,为后来更多时序模型(如 RNN、LSTM、Transformer)奠定了基础。希望这些解释和例子能帮助你更好地理解延时神经网络的基本概念和工作原理。

二、有外部输入的非线性自回归模型

有外部输入的非线性自回归模型(通常称为 NARX 模型,Nonlinear AutoRegressive model with eXogenous input)是一种将过去输出和外部输入一起用于预测当前或未来输出的模型。

  1. 自回归部分

    • 模型不仅依赖于当前和过去的外部输入,还利用过去的输出值来进行预测。

    • 这意味着系统具有“记忆”,即前一时刻的输出会对当前输出产生影响。

    • 自回归模型(AutoRegressive Model,AR)是统计学上常用的一类时间序 列模型,用一个变量 𝒚𝑡 的历史信息来预测自己。其中 𝐾 为超参数,𝑤0, ⋯ , 𝑤𝐾 为可学习参数,𝜖𝑡 ∼ 𝒩(0, 𝜎2) 为第 𝑡 个时刻的噪声, 方差 𝜎2 和时间无关.

  2. 外部输入(eXogenous input)

    • 外部输入代表影响系统输出的外界因素,它们并非模型自身生成,而是由系统外部提供的数据。

    • 模型将这些外部输入与过去的输出一起作为特征,以捕捉输入与输出之间的复杂、非线性关系。

  3. 非线性映射

    • 非线性自回归模型通过非线性函数(例如神经网络、支持向量机或其他非线性映射方法)来建模这种关系,能够捕捉到更复杂的动态和非线性特征。

    • 例如,一个常见的形式是(有外部输入的非线性自回归模型):

      y(t)=f(y(t−1),y(t−2),…,y(t−p); u(t−1),u(t−2),…,u(t−q))+ε(t),

      其中 y(t) 表示当前输出,y(t−1),…,y(t−p) 表示过去 p 个时刻的输出,u(t−1),…,u(t−q) 是过去 q 个时刻的外部输入,f 是非线性映射函数,ε(t) 表示噪声或误差项。

  • 举例说明

    假设你在研究一个工业过程,例如温度控制系统。系统的当前温度 y(t) 受过去温度(系统本身状态)的影响,同时也受外部输入(如加热器的功率 u(t))的影响。

    • 一个简单的 NARX 模型可能写成:

      y(t)=f(y(t−1),y(t−2); u(t−1),u(t−2)),

      其中 f 可以通过神经网络来拟合。

    • 这样,模型会学习到例如“当过去两次温度偏低且加热器功率较大时,当前温度会有一个较大的上升”等复杂的非线性关系。

应用场景
      NARX 模型广泛用于时间序列预测、系统建模、控制系统设计以及金融市场预测等场景。它的优势在于能够同时考虑系统的内在动态(自回归部分)和外部影响(外部输入),并通过非线性函数捕捉复杂关系。

总结

有外部输入的非线性自回归模型(NARX)通过将过去的输出和外部输入作为特征输入,利用非线性映射函数来预测系统的未来状态。这种模型既考虑系统自身的动态特性,又融合外部因素的影响,非常适合那些受外界因素干扰且具有内在时序依赖的复杂系统。

三、循环神经网络

循环神经网络(RNN)是一种专门设计来处理序列数据的网络结构,它在时间步之间存在循环连接,使得信息能够从前一时刻传递到后一时刻。为了理解 RNN,我们可以将其与延时神经网络(TDNN)和有外部输入的非线性自回归模型(NARX)进行类比:

  1. 记忆与时间依赖性

    • 延时神经网络(TDNN):通过固定时间窗口,将过去若干时刻的输入一同处理,捕捉局部时间特征。

    • NARX 模型:不仅使用外部输入,还将过去的输出作为额外特征输入,从而建立当前输出与历史状态及外界因素之间的非线性关系。

    • 循环神经网络(RNN):通过在每个时间步维护一个隐状态(hidden state),将之前的信息“记住”,并与当前输入一起处理。这样,RNN 可以看作是一种动态的、可变长度的自回归模型,其中隐状态相当于不断更新的历史信息。

  2. 结构和信息传递

    • 在 RNN 中,每个时间步 t 会接收当前输入 x(t) 和上一步的隐状态 h(t−1)作为输入,计算当前隐状态 h(t)

    • 这种设计使得信息能够在时间上不断传递和更新,类似于 NARX 模型中利用过去输出构建预测,但 RNN 的隐状态是一个不断演化的“记忆”,可以捕捉任意长度的依赖关系(理论上)。

  3. 非线性映射与学习

    • 和 TDNN 及 NARX 模型类似,RNN 通过非线性函数 f 学习输入与历史状态之间的复杂映射,使得模型能够捕捉到序列中复杂的动态模式。

    • 不同的是,RNN 通过共享同一组参数 W_{xh} 和 W_{hh} 在每个时间步进行递归计算,从而避免了固定窗口长度的限制,能够处理变长序列数据。

  4. 举例说明
    假设我们用 RNN 来预测一句话中下一个单词。

    • 输入:一句话分解为一系列单词向量 x(1),x(2),…,x(T)。

    • 隐状态更新:对于每个时间步 t,RNN 根据当前单词向量 x(t) 和前一时刻隐状态 h(t−1) 更新隐状态 h(t) 。

    • 预测输出:利用 h(t) 预测下一个单词 y(t)。
      这里的隐状态 h(t) 就类似于 NARX 模型中的过去输出信息,通过循环连接不断更新和传递,帮助模型捕捉句子中的语法和语义信息。

  5. 循环神经网络的数学描述

        循环神经网络(Recurrent Neural Network,RNN)通过使用带自反馈的神 经元,能够处理任意长度的时序数据.

给定一个输入序列 𝒙1∶𝑇 = (𝒙1, 𝒙2, ... , 𝒙𝑡, ... , 𝒙𝑇 ),循环神经网络通过下面公 式更新带反馈边的隐藏层的活性值𝒉𝑡 :

下图给出了循环神经网络的示例,其中 “延时器” 为一个虚拟单元,记录神经元的最近一次(或几次)活性值。

从数学上讲,以上公式可以看成一个动力系统。因此,隐藏层的活性值 𝒉𝑡 在 很多文献上也称为状态(State)或隐状态(Hidden State).

由于循环神经网络具有短期记忆能力, 相当于存储装置, 因此其计算能 力十分强大。

理论上,循环神经网络可以近似任意的非线性动力系统。前馈神经网络可以模拟任何连续函数,而循环神经网络可以模拟任何程序。

这种循环结构使得 RNN 能够处理语言、时间序列等数据,其核心思想就是将序列中的历史信息整合到一个“记忆”状态中,并与当前输入共同作用于输出预测。希望这些类比和例子能帮助你更好地理解循环神经网络的原理和优势。

动力系统(Dynamical System)是一个数学上的概念,指系统状态按照一定的规律随时间变化的系统。具体地讲, 动力系统是使用一个 函数来描述一个给定空间(如某个物理系统的状态空间)中所有点随时间的变化情况。生活中很多现象(比 如钟摆晃动、台球轨迹 等)都可以动力系统来描述。

四、总结

  • TDNN 固定地利用延时窗口捕捉局部时间特征;

  • NARX 显式地把过去的输出和外部输入作为特征进行预测;

  • RNN 则通过循环连接维护一个动态的隐状态,实现对时间依赖性的捕捉和记忆。


http://www.kler.cn/a/613982.html

相关文章:

  • Avro 批量转换成 Json 文件
  • Python爬虫实战:批量获取中国知网(CNKI)文献摘要教程
  • 大型语言模型的秘密:思考链长度与提示格式的魔力
  • Css vertical-align与line-height
  • Windows下VSCode的安装
  • 在Cesium中使用ThreeJs材质(不是场景融合哦)
  • Transformer:破局山地暴雨预测的「地形诅咒」--AI智能体开发与大语言模型的本地化部署、优化技术
  • 深入解析铸铁测量平台的多面魅力——北重安装
  • 关于deepseek
  • 《白帽子讲 Web 安全》之跨站请求伪造
  • STM32通用定时器结构框图
  • kotlin,jetpack compose 最简导航(navigation)案例学习
  • 【Zabbix技术系列文章】第①篇——基础入门
  • 宝塔面板面试内容整理-常见宝塔面板版本
  • 【vue】vue + vant实现上传图片添加水印
  • 使用matlab进行分位数回归
  • 基于Vue的低代码可视化表单设计器 FcDesigner 3.2.11更新说明
  • 机器学习和深度学习的关系
  • 自动化逆向框架使用(Objection+Radare2)
  • Manus:通用智能体的架构革命与产业破局