【ShuQiHere】从 RNN 到 LSTM:时间依赖建模的关键演化

2024-09-01 05:28

本文主要是介绍【ShuQiHere】从 RNN 到 LSTM:时间依赖建模的关键演化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【ShuQiHere】

在金融市场中,准确预测未来的股票价格一直是一个极具挑战性的问题。循环神经网络(RNN)为我们提供了一种通过历史数据预测未来的方法。然而,尽管 RNN 在处理短时间序列时表现出色,但当涉及长时间序列时,它会遇到梯度消失和长期依赖等问题。为了解决这些问题,长短期记忆网络(LSTM)应运而生。本文将以股票价格预测为例,系统地探讨从 RNN 到 LSTM 的演化过程,深入解析两者的工作原理及其独特优势。

RNN 的局限性

RNN 在股票价格预测中的表现

假设你是一位股票分析师,手中掌握了过去一周的股票价格数据,试图预测明天的价格。RNN 作为一种具有记忆功能的网络,可以利用昨天的数据来预测今天的结果。RNN 的核心在于其隐藏状态的更新机制:

[
h t = tanh ⁡ ( W h ⋅ x t + U h ⋅ h t − 1 + b h ) h_t = \tanh(W_h \cdot x_t + U_h \cdot h_{t-1} + b_h) ht=tanh(Whxt+Uhht1+bh)
]
[
y t + 1 = W y ⋅ h t + b y y_{t+1} = W_y \cdot h_t + b_y yt+1=Wyht+by
]

在这个公式中:

  • ( h_t ) 是当前时间步 ( t ) 的隐藏状态,反映了网络在当前时间点对输入的理解。
  • ( W_h ) 和 ( U_h ) 是权重矩阵,分别作用于当前输入 ( x_t ) 和前一时间步的隐藏状态 ( h_{t-1} )。
  • 激活函数 ( \tanh ) 引入了非线性,使网络能够捕捉更复杂的模式。

然而,随着时间序列的长度增加,RNN 会面临两个关键问题:

  1. 梯度消失与爆炸问题:在反向传播过程中,RNN 的梯度可能会逐渐消失或无限增大,导致网络难以学习到远距离的依赖关系。具体来说,当网络在反向传播过程中穿越多个时间步时,梯度可能会逐渐缩小到接近零(梯度消失)或急剧增大(梯度爆炸),从而影响网络的学习效果。

    进一步解释:可以将梯度消失问题比喻为通过一连串的杯子传递一滴水。当杯子数量增加,水滴的量可能会逐渐减少甚至消失,或者由于过多的水溢出而导致问题。

  2. 长期依赖问题:RNN 在处理短期依赖时表现良好,但当涉及长时间跨度的依赖时,它的效果就会显著下降。举例来说,假设某只股票的长期趋势受几周前的重大经济政策影响,但 RNN 由于其有限的记忆能力,可能无法有效利用这些早期信息。

    进一步解释:这就像试图回忆一年前的一次重要会议细节,但你只能清楚地记得上周发生的事情。RNN 随着时间的推移,其“记忆”能力逐渐减弱。

LSTM 的引入:从局限到突破

为了弥补 RNN 在长时间依赖建模中的不足,LSTM 被引入。LSTM 通过一系列“门”(输入门、遗忘门、输出门)和一个特殊的细胞状态来帮助网络在处理长时间依赖时保持稳定性。

LSTM 在股票价格预测中的改进

与传统的 RNN 不同,LSTM 在处理输入信息时更加谨慎。它通过“门”机制来决定哪些信息需要保留,哪些可以丢弃,从而避免无关信息对预测的干扰。

  • 输入门 决定了当前输入 ( x_t ) 中哪些部分应该被添加到细胞状态中,相当于为每一条新信息做了重要性标记。
  • 遗忘门 负责决定哪些已经记录的信息需要被淡化或删除,类似于整理笔记时丢弃的冗余信息。
  • 输出门 控制了哪些信息最终影响预测结果,确保输出是基于最相关的信息。
LSTM 的工作原理

以股票价格预测为例解释 LSTM

以下是 LSTM 在处理股票价格预测时的具体步骤:

  1. 输入门的作用:LSTM 首先通过输入门来决定当前输入 ( x_t ) 中哪些信息值得记录。

    输入门的计算公式为:
    [
    i t = σ ( W i ⋅ [ h t − 1 , x t ] + b i ) i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i) it=σ(Wi[ht1,xt]+bi)
    ]

    • ( i_t ) 是输入门的输出,范围在 0 到 1 之间,表示当前输入的每个部分被保留的概率。
    • Sigmoid 函数 ( \sigma ) 的输出范围为 ( (0, 1) ),相当于为每条信息做一个保留或忽略的标记。
  2. 遗忘门的作用:LSTM 然后通过遗忘门来决定前一时间步的细胞状态 ( C_{t-1} ) 中哪些信息仍然重要,哪些需要被淡化或删除。

    遗忘门的计算公式为:
    [
    f t = σ ( W f ⋅ [ h t − 1 , x t ] + b f ) f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f) ft=σ(Wf[ht1,xt]+bf)
    ]

    • ( f_t ) 是遗忘门的输出,决定了细胞状态中的哪些信息将被“遗忘”。

    进一步解释:如果前几天的市场趋势已经发生了重大变化,遗忘门可能会选择忽略那些已经不再相关的旧信息,从而使模型专注于当前的趋势。

  3. 细胞状态的更新:根据输入门和遗忘门的决策,LSTM 会更新当前的细胞状态 ( C_t ),将新信息整合进来,同时丢弃无用的旧信息。

    细胞状态的更新公式为:
    [
    C t = f t ⋅ C t − 1 + i t ⋅ C ~ t C_t = f_t \cdot C_{t-1} + i_t \cdot \tilde{C}_t Ct=ftCt1+itC~t
    ]

    • ( \tilde{C}_t ) 是候选的细胞状态,通过当前输入计算得出:
      [
      C ~ t = tanh ⁡ ( W C ⋅ [ h t − 1 , x t ] + b C ) \tilde{C}_t = \tanh(W_C \cdot [h_{t-1}, x_t] + b_C) C~t=tanh(WC[ht1,xt]+bC)
      ]

    进一步解释:细胞状态 ( C_t ) 就像是一条贯穿整个时间序列的“信息带”,它记录着重要的市场趋势,并随着时间的推移不断更新和优化。

  4. 输出门的作用:最后,LSTM 通过输出门来决定哪些信息将用于当前的预测,即下一时间步的隐藏状态 ( h_t )。

    输出门的计算公式为:
    [
    o t = σ ( W o ⋅ [ h t − 1 , x t ] + b o ) o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o) ot=σ(Wo[ht1,xt]+bo)
    ]

    • 最终的隐藏状态 ( h_t ) 通过以下公式计算:
      [
      h t = o t ⋅ tanh ⁡ ( C t ) h_t = o_t \cdot \tanh(C_t) ht=ottanh(Ct)
      ]

    进一步解释:输出门确保每一个时间步的预测都是基于最相关的历史信息和当前输入,从而提高预测的准确性。

通过这些步骤,LSTM 能够在长时间内保持对关键信息的敏感性,并基于此做出更准确的预测。

LSTM 的优势

解决梯度消失问题

LSTM 的设计使得它在反向传播过程中能够有效缓解梯度消失问题。遗忘门和输入门的引入,使得梯度在长时间序列中能够保持稳定,从而确保模型在训练过程中不会丢失重要的长时间依赖信息。

增强的时间序列处理能力

LSTM 在处理长时间序列任务时展现了其强大的优势,特别是在像股票价格预测这样需要捕捉长时间依赖的任务中。通过动态调整输入信息的权重,LSTM 能够识别出哪些历史信息对当前预测最为重要,从而提高预测的准确性。

进一步解释:LSTM 的这种能力可以类比为一位经验丰富的分析师,他能够从大量的市场数据中提取出最具影响力的因素,并据此做出更加准确的预测。

LSTM 的局限性

虽然 LSTM 在时间序列预测中表现出了明显的优势,但它的复杂性也带来了训练时间长、计算资源需求高的问题。此外,尽管 LSTM 在处理长时间依赖上表现优异,但当时间序列长度进一步增加时,其性能仍可能受到限制。这促使研究者们进一步开发更高效的模型,如门控循环单元(GRU),它在简化结构的同时保留了 LSTM 的大部分优点。

总结

通过股票价格预测这一例子,我们探索了 LSTM 是如何从 RNN 演化而来的。LSTM 通过引入门机制和细胞状态,成功解决了 RNN 在处理长时间依赖时的梯度消失问题。尽管 LSTM 的结构复杂,但其在时间序列预测中的出色表现证明了其设计的优越性。未来,随着更高效模型的发展,时间序列预测的准确性和效率将进一步提高。

这篇关于【ShuQiHere】从 RNN 到 LSTM:时间依赖建模的关键演化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1126064

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

每天认识几个maven依赖(ActiveMQ+activemq-jaxb+activesoap+activespace+adarwin)

八、ActiveMQ 1、是什么? ActiveMQ 是一个开源的消息中间件(Message Broker),由 Apache 软件基金会开发和维护。它实现了 Java 消息服务(Java Message Service, JMS)规范,并支持多种消息传递协议,包括 AMQP、MQTT 和 OpenWire 等。 2、有什么用? 可靠性:ActiveMQ 提供了消息持久性和事务支持,确保消

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

深入理解数据库的 4NF:多值依赖与消除数据异常

在数据库设计中, "范式" 是一个常常被提到的重要概念。许多初学者在学习数据库设计时,经常听到第一范式(1NF)、第二范式(2NF)、第三范式(3NF)以及 BCNF(Boyce-Codd范式)。这些范式都旨在通过消除数据冗余和异常来优化数据库结构。然而,当我们谈到 4NF(第四范式)时,事情变得更加复杂。本文将带你深入了解 多值依赖 和 4NF,帮助你在数据库设计中消除更高级别的异常。 什么是

批处理以当前时间为文件名创建文件

批处理以当前时间为文件名创建文件 批处理创建空文件 有时候,需要创建以当前时间命名的文件,手动输入当然可以,但是有更省心的方法吗? 假设我是 windows 操作系统,打开命令行。 输入以下命令试试: echo %date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%_%time:~6,2% 输出类似: 2019_06

【MRI基础】TR 和 TE 时间概念

重复时间 (TR) 磁共振成像 (MRI) 中的 TR(重复时间,repetition time)是施加于同一切片的连续脉冲序列之间的时间间隔。具体而言,TR 是施加一个 RF(射频)脉冲与施加下一个 RF 脉冲之间的持续时间。TR 以毫秒 (ms) 为单位,主要控制后续脉冲之前的纵向弛豫程度(T1 弛豫),使其成为显著影响 MRI 中的图像对比度和信号特性的重要参数。 回声时间 (TE)

LeetCode:64. 最大正方形 动态规划 时间复杂度O(nm)

64. 最大正方形 题目链接 题目描述 给定一个由 0 和 1 组成的二维矩阵,找出只包含 1 的最大正方形,并返回其面积。 示例1: 输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4 示例2: 输入: 0 1 1 0 01 1 1 1 11 1 1 1 11 1 1 1 1输出: 9 解题思路 这道题的思路是使用动态规划