基于魔乐社区LSTM算法实践

B站影视 2025-01-07 16:52 3

摘要:长短期记忆网络(LSTM, Long Short-Term Memory) 是一种特殊的循环神经网络(RNN)架构,设计用于解决普通 RNN 的梯度消失和梯度爆炸问题,从而能够更好地捕获时间序列数据中的长期依赖关系。原始RNN的隐藏层只有一个状态,即h,它对于

长短期记忆网络(LSTM, Long Short-Term Memory) 是一种特殊的循环神经网络(RNN)架构,设计用于解决普通 RNN 的梯度消失和梯度爆炸问题,从而能够更好地捕获时间序列数据中的长期依赖关系。原始RNN的隐藏层只有一个状态,即h,它对于短期的输入非常敏感。于是我们就再增加一个状态,即c,让它来保存长期的状态,就解决了问题。新增加的状态c,称为单元状态(cell state)

而LSTM的关键,就是怎样控制长期状态c。在这里,LSTM的思路是使用三个控制开关。第一个开关,负责控制继续保存长期状态c;第二个开关,负责控制把即时状态输入到长期状态c;第三个开关,负责控制是否把长期状态c作为当前的LSTM的输出。三个开关的作用如下图所示:

LSTM算法的前向计算

门的概念:门实际上就是一层全连接层,它的输入是一个向量,输出是一个0到1之间的实数向量。假设W是门的权重向量,b是偏置项,那么门可以表示为:g(x)=σ(Wx+b)。

因为门的输出是0到1之间的实数向量,那么,当门输出为0时,任何向量与之相乘都会得到0向量,这就相当于啥都不能通过;输出为1时,任何向量与之相乘都不会有任何改变,这就相当于什么都可以通过。因为δ(也就是sigmoid函数)的值域是(0,1),所以门的状态都是半开半闭的,也就起到了前面所说的开关的作用。

LSTM用两个门来控制单元状态c的内容,一个是遗忘门(forget gate),它决定了上一时刻的单元状态有多少保留到当前时刻ct;另一个是输入门(input gate),它决定了当前时刻网络的输入xt有多少保存到单元状态ct。LSTM用输出门(output gate)来控制单元状态ct有多少输出到LSTM的当前输出值ht。

遗忘门是 LSTM 的关键组件之一,用于控制每个时间步中,需要从上一时间步的长期状态中遗忘多少信息。它的公式为:ft=σ(Wf·[ht-1,xt]+bf)。其中将ht-1和xt拼接而不是相加,是为了:1.保留信息独立性:拼接保留了历史信息和当前输入的独立特性。2.增强学习灵活性:模型可以分别学习ht-1和xt的模式和权重。3.兼容不同维度:拼接适用于隐藏状态和输入维度不一致的场景。这种设计使 LSTM 更加灵活高效,能够更好地捕获序列数据的长期和短期依赖。

输入门是 LSTM 的核心组件之一,其主要作用是控制当前时间步的信息(输入)是否以及在多大程度上被加入到长期状态中。它在 LSTM 中和遗忘门、输出门一起配合,动态调整记忆状态 Ct,从而捕获时间序列中的重要模式。

输入门的核心公式为:it=σ(Wi·[ht-1,xt]+bi)Ct=σ(Wc·[ht-1,xt]+bc)

输入门的作用可以分为两个部分,1.控制信号传递:通过输入门输出it,确定当前时间步输入xt中哪些信息需要写入记忆单元Ct。输入门输出值的范围在 [0,1],可看作“选择比例”或“重要性权重”。2.生成候选记忆值:通过候选记Ct,对当前输入信息进行处理,生成一组潜在的记忆值。

最终,输入门it和候选记忆Ct共同决定当前时间步对长期状态Ct的贡献。长状态更新公式:

输出门是 LSTM 的三个门机制之一,它负责控制当前时间步的长期状态 Ct中哪些信息需要输出到隐藏状态 ht。隐藏状态 ht是 LSTM 的输出,同时也会作为下一时间步的输入之一。输出门的激活值:Ot=σ(Wo·[ht-1,xt]+bo)。LSTM最终的输出,是由输出门和单元状态共同确定的:

LSTM 的设计明确区分了长期状态 和短期状态 ℎ的职责: 是信息的线性存储路径,专注于长期记忆的稳定流动。ℎ是通过非线性变换 tanh⁡⋅ 得到的短期状态,用于与当前时间步的输入和隐藏层交互。

LSTM的变体

Peephole 连接是在 LSTM 中的一个改进,它允许门控机制(输入门、遗忘门、输出门)直接访问细胞状态 。这种连接方式使得门控机制能够利用细胞状态的信息来更精准地控制输入、遗忘和输出。下面的公式中,我们增加了peephole到每个门上,但是许多论文会加入部分的peephole而非所有都加。作用:提升记忆能力:由于门控机制能够直接感知细胞状态 ,可以更精准地调节哪些信息应该被记住或遗忘。捕捉长时依赖:通过直接引入细胞状态的信息,可以更好地建模长期依赖关系。

Coupled 门控是一种简化门控机制的方法,主要用于减少 LSTM 中的参数数量,同时保持其功能性。它通过将输入门和遗忘门结合起来,使得一个门的激活决定了另一个门的状态。Coupled 门控通过以下方式实现简化:ft=1-it。作用:参数减少:通过将输入门和遗忘门结合,只需要学习一个门(输入门)的参数,而不是两个门的参数。简化模型:降低模型复杂度,训练速度更快。性能优化:在一些任务上,耦合门控的表现与完整的门控机制相当,甚至可能更好。

门控循环单元(GRU,Gated Recurrent Unit) 是一种循环神经网络(RNN)的变体,旨在解决传统 RNN 的梯度消失问题,同时简化了 LSTM 的结构。GRU 的设计更轻量化,相较于 LSTM,具有更少的参数和更快的训练速度。GRU 的结构可以概括为1.更新门 :控制长期记忆和新信息的权衡。2.重置门 :控制短期依赖的记忆。3.简化的状态更新:没有像 LSTM 那样区分长期状态和隐藏状态(ℎ )。直接使用单一的隐藏状态ℎ 表示记忆。

通过魔乐社区在本地实践

魔乐社区中已经上传了相应的lstm版本,并且可以根据魔乐社区中提供的数据集下载到本地然后训练出时间序列模型,或者根据自己的数据集来训练更适合自己所需的模型。

首先我们要从魔乐社区中下载模型

下载到本地:此方法可以直接将模型下载到本地,只需要使用git工具即可将社区中的模型下载到本地使用以及微调

点击下载模型

下载方式有三种,使用git工具下载之后,可以在下载路径中找到,然后就可以直接使用了。

数据集也可以直接在魔乐社区中下载

例如直接寻找到单人人体数据集

可以直接使用git工具下载到本地进行训练。

模型的微调可以根据上文的介绍,对模型增加或者改变,可以多尝试来找到最适合自己的那一个微调模型。

体验空间

由于openmind与魔乐社区的高度融合,我们可以直接在开发环境里使用对应的openmind library来加载所需要的模型,下图为示例

LSTM算法的应用范围广泛,从自然语言处理到时间序列分析,再到生物信息学,LSTM都能发挥重要作用。它能够处理复杂的序列数据,识别出数据中的模式和趋势,为各种预测和分类任务提供了强大的支持。

可以在魔乐社区中的体验空间简单地体验到模型的效果:LSTM作为时序模型,可以将混乱单词顺序的句子转换成正确顺序的句子

例如输入have I a cat

可以得到正确的语序I have a cat

同理输入have a I cat,have a cat I都可以做到把语序调整为正确的

体验空间链接:DataFun/LSTM | 魔乐社区

在魔乐社区,下载LSTM模型变得前所未有的简单。只需几个步骤,你就可以轻松获取到强大的长短期记忆网络(LSTM)模型,这些模型已经在各种自然语言处理任务中证明了它们的有效性。无论是文本分类、情感分析还是序列预测,魔乐社区都提供了丰富的LSTM模型资源,让你能够快速集成并开始你的项目。通过简洁的用户界面和直观的操作流程,即使是初学者也能快速上手,享受到AI技术带来的便利。

来源:DataFunTalk

相关推荐