首页 > 其他分享 >LSTM与BiLSTM-传统rnn升级模型

LSTM与BiLSTM-传统rnn升级模型

时间:2024-06-18 19:56:48浏览次数:21  
标签:输出 rnn 训练 BiLSTM 模型 LSTM 推理 输入

LSTM(Long Short-Term Memory)是一种特殊的RNN(Recurrent Neural Network)结构,它能够有效地学习长期依赖关系。LSTM的内部原理包括三个门控机制:遗忘门、输入门和输出门,以及一个细胞状态(cell state)来存储信息。

遗忘门

遗忘门负责决定前一时间步的细胞状态中有多少信息应该被遗忘。这个过程通过一个Sigmoid层来完成,它将输入数据与前一时间步的隐藏状态(h_t-1)作为输入,并输出一个介于0和1之间的值。这个值代表了前一时间步的细胞状态中有多少信息应该被遗忘。

输入门

输入门负责决定前一时间步的细胞状态中应该添加哪些新信息。这个过程也通过一个Sigmoid层和一个tanh层来完成。Sigmoid层将输入数据与前一时间步的隐藏状态作为输入,并输出一个介于0和1之间的值,这个值代表了应该将多少新信息添加到细胞状态中。tanh层则将输入数据与前一时间步的隐藏状态作为输入,并输出一个介于-1和1之间的值,这个值代表了新信息的候选值。

细胞状态

细胞状态是LSTM的核心,它负责存储信息。在每个时间步,遗忘门和输入门决定了哪些信息应该被遗忘和添加到细胞状态中。遗忘门和输入门的输出分别与细胞状态和tanh层的输出相乘,然后将两个结果相加,得到新的细胞状态。

输出门

输出门负责决定当前时间步的隐藏状态中有多少信息应该被输出。这个过程通过一个Sigmoid层来完成,它将输入数据与当前时间步的隐藏状态(h_t)作为输入,并输出一个介于0和1之间的值。这个值代表了当前时间步的隐藏状态中有多少信息应该被输出。

隐藏状态

隐藏状态是LSTM的输出,它包含了当前时间步的信息。输出门的输出与tanh层的输出相乘,然后将两个结果相加,得到当前时间步的隐藏状态。

推理过程

在推理过程中,LSTM不需要反向传播,只需要按照时间步顺序逐个处理序列中的每个元素。在每个时间步,LSTM会根据当前的输入数据和前一时间步的隐藏状态,通过遗忘门、输入门和输出门来更新细胞状态和隐藏状态。
总结一下,LSTM通过遗忘门、输入门和输出门这三个门控机制,以及细胞状态来有效地学习长期依赖关系。在推理过程中,LSTM按照时间步顺序逐个处理序列中的每个元素,以生成当前时间步的隐藏状态。
推理过程与训练过程:
在机器学习和深度学习中,模型训练过程(Training)和推理过程(Inference)是两个关键的阶段,它们在目的、输入和执行方式等方面有显著的区别。

训练过程(Training)

  1. 目的:
    ○ 训练过程的主要目的是通过给定的训练数据,优化模型的参数(例如神经网络的权重和偏置),使其能够学习输入数据的特征和输出数据的关系。训练的最终目标是使模型在未见过的数据上能够泛化,即具有良好的泛化能力。
  2. 输入:
    ○ 训练过程通常需要大量的标记数据作为输入,包括输入特征和对应的目标输出(标签)。
    ○ 模型根据损失函数(Loss Function)计算预测输出与真实标签之间的差异,并通过反向传播(Backpropagation)算法来调整模型的参数,以减少这种差异。
  3. 执行方式:
    ○ 训练过程通常需要较长时间,特别是对于复杂的深度神经网络模型,可能需要数小时甚至数天进行训练。
    ○ 在训练过程中,模型通过优化算法(如梯度下降)迭代地更新参数,以最小化损失函数。
  4. 环境要求:
    ○ 训练过程通常需要大量的计算资源,例如GPU加速或分布式计算,以加快参数更新的速度和提高训练效率。

推理过程(Inference)

  1. 目的:
    ○ 推理过程的主要目的是使用已经训练好的模型,对新的未见过的数据进行预测或分类。
    ○ 模型在推理阶段不再调整其参数,而是直接利用之前训练得到的参数进行预测。
  2. 输入:
    ○ 推理过程中的输入是单个或多个未标记的数据样本,即模型需要对其进行预测或分类。
    ○ 输入数据的格式和处理方式通常与训练时的输入相同,但不包含标签。
  3. 执行方式:
    ○ 推理过程要求模型在短时间内对输入数据进行快速处理和预测,因此通常具有较低的计算成本和延迟。
    ○ 模型的推理速度可能会受到模型大小、硬件资源和优化程度的影响,通常优化以提高推理效率。
  4. 环境要求:
    ○ 推理过程可能在较低的硬件配置下进行,甚至可以在移动设备或边缘设备上进行,具体要求取决于模型的复杂度和实时性需求。

总结区别

● 目的不同:训练过程是为了学习模型参数以提高泛化能力,而推理过程是为了使用已学习的参数进行预测或分类。
● 输入数据不同:训练过程需要标记的数据集,推理过程则是对未标记数据进行预测。
● 执行方式不同:训练过程通过反向传播和优化算法迭代更新参数,推理过程则是直接应用已训练好的模型进行预测,速度要求更高。
● 环境要求不同:训练过程通常需要高性能计算资源,而推理过程可能在更多样化的环境中进行,包括边缘计算或移动设备。

在实际应用中,了解和区分训练和推理过程的差异有助于有效地设计和部署深度学习模型,以满足不同应用场景下的需求和限制。
lstm与反向传播:
lstm没有反向传播

lstm双向(关注维度怎么控制的为啥不变)
双向长短时记忆网络(Bidirectional LSTM, Bi-LSTM)是一种结合了两个方向(正向和反向)的LSTM结构,用于捕捉序列数据中前后上下文的信息。它在处理序列数据时能够同时考虑到过去和未来的信息,从而提升模型对上下文的理解和表达能力。

结构和工作原理

  1. 双向结构:
    ○ Bi-LSTM由两个独立的LSTM组成,一个负责处理正向(从头到尾)的输入序列,另一个负责处理反向(从尾到头)的输入序列。
    ○ 每个时间步,正向LSTM从前往后依次处理输入序列的数据,而反向LSTM从后往前处理,同时捕捉到数据的逆向关系。
  2. 合并输出:
    ○ 在每个时间步,Bi-LSTM将正向和反向LSTM的隐藏状态拼接在一起,形成一个更丰富的表示。
    ○ 这样做的好处是,每个时间步的输出不仅包含当前时刻的信息,还包括过去和未来时刻的上下文信息,从而更全面地理解输入序列。
  3. 适用场景:
    ○ Bi-LSTM特别适用于需要全局信息和上下文依赖的任务,例如自然语言处理中的命名实体识别、词性标注、句子情感分析等任务。
    ○ 在这些任务中,Bi-LSTM能够更准确地识别序列中的复杂模式和语境。

示例

假设我们要用Bi-LSTM来处理一个简单的情感分类任务,输入是一段文本序列,输出是文本的情感类别(如正面、负面、中性)。

import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Bidirectional, Dense, Embedding

假设文本数据已经处理成词嵌入(embedding)形式,例如每个单词用一个向量表示

建立Bi-LSTM模型

model = Sequential()
model.add(Embedding(input_dim=vocab_size, output_dim=embedding_dim, input_length=max_seq_length))
model.add(Bidirectional(LSTM(units=128, return_sequences=True)))
model.add(Dense(units=num_classes, activation=‘softmax’))

编译模型

model.compile(optimizer=‘adam’, loss=‘sparse_categorical_crossentropy’, metrics=[‘accuracy’])

训练模型(这里省略数据准备过程)

model.fit(X_train, y_train, batch_size=32, epochs=10, validation_data=(X_valid, y_valid))

在测试集上评估模型

loss, accuracy = model.evaluate(X_test, y_test)
print(f’Test Loss: {loss:.4f}, Test Accuracy: {accuracy:.4f}')

在这个示例中:

● Bidirectional(LSTM(units=128, return_sequences=True)) 创建了一个Bi-LSTM层,其中128是LSTM单元的数量,return_sequences=True表示该层返回整个输出序列而不仅仅是最后一个时间步的输出。
● Dense(units=num_classes, activation=‘softmax’) 是用于分类的输出层,根据类别数量设定num_classes,并使用softmax激活函数计算每个类别的概率。

通过这种方式,Bi-LSTM可以有效地处理文本序列,同时利用文本中前后的语境信息,提高情感分类任务的准确性和泛化能力。

标签:输出,rnn,训练,BiLSTM,模型,LSTM,推理,输入
From: https://blog.csdn.net/qq_45003504/article/details/139782113

相关文章

  • 长短期记忆神经网络(LSTM)的回归预测(免费完整源代码)【MATLAB】
    LSTM(LongShort-TermMemory,长短期记忆网络)是一种特殊类型的递归神经网络(RNN),专门用于处理和预测基于时间序列的数据。与传统RNN相比,LSTM在处理长期依赖问题时具有显著优势。LSTM的基本结构LSTM由一个称为“细胞状态”(cellstate)的核心组件和三个门(gate)组成。这些门控制着......
  • SCI一区级 | Matlab实现GWO-CNN-LSTM-selfAttention多变量多步时间序列预测
    GWO(GreyWolfOptimizer)是一种基于灰狼行为的优化算法,用于优化问题的求解。CNN(ConvolutionalNeuralNetwork)是卷积神经网络,主要用于图像处理和模式识别。LSTM(LongShort-TermMemory)是一种递归神经网络,用于处理和预测时序数据。self-attention(自注意力)是一种机制,用于在序列......
  • 循环神经网络(RNN)入门指南及代码示例
    简介循环神经网络(RecurrentNeuralNetwork,RNN)是一种擅长处理序列数据的神经网络结构。与传统的前馈神经网络不同,RNN拥有循环连接,可以保留以前的信息,从而在处理时间序列数据、自然语言处理等任务中表现出色。在这篇文章中,我们将详细介绍RNN的基本概念及其变体LSTM和GRU,并通过......
  • 王立志等(Iowa State University):一种用于作物产量预测的 CNN-RNN 框架
    这是美国爱荷华州立大学工业工程系王立志老师联合同校老师发表的一篇文章。Front.PlantSci.虽然影响因子不高(大家应该都知道偏应用的数量遗传学发表的期刊普遍不高),但本文的引用还是蛮高的,好像是年度最佳论文之一吧。本文介绍了一种基于深度学习的框架,用于预测作物产量。该框架......
  • 【译文】利用RNN从神经数据中重建计算系统动力学
    【译文】利用RNN从神经数据中重建计算系统动力学文章:ReconstructingcomputationalsystemdynamicsfromneuraldatawithrecurrentneuralnetworksDOI:https://doi.org/10.1038/s41583-023-00740-7FromNatureReviewsNeuroscience|Volume24|November2023|693–71......
  • 【译文】利用RNN从神经数据中重建计算系统动力学
    【译文】利用RNN从神经数据中重建计算系统动力学文章:ReconstructingcomputationalsystemdynamicsfromneuraldatawithrecurrentneuralnetworksDOI:https://doi.org/10.1038/s41583-023-00740-7FromNatureReviewsNeuroscience|Volume24|November2023|693–71......
  • 深度学习 - RNN训练过程推演
    1.数据准备字符序列“hello”转换为one-hot编码表示:输入:[‘h’,‘e’,‘l’,‘l’]输出:[‘e’,‘l’,‘l’,‘o’]2.初始化参数假设我们使用一个单层的RNN,隐藏层大小为2。初始参数如下:W......
  • Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据
    全文链接:https://tecdat.cn/?p=36004原文出处:拓端数据部落公众号随着大数据时代的来临,深度学习技术在各个领域中得到了广泛的应用。长短期记忆(LSTM)网络作为深度学习领域中的一种重要模型,因其对序列数据的强大处理能力,在自然语言处理、时间序列预测等领域中取得了显著的成果。然......
  • 【视频讲解】LSTM神经网络模型在微博中文文本评论情感分析和股市预测应用附代码数据
    全文链接:https://tecdat.cn/?p=36471原文出处:拓端数据部落公众号分析师:ShuaiFung本文将通过视频讲解,展示如何用python的LSTM模型对中文文本评论情感分析,并结合一个TensorFlow的长短期记忆神经网络(LSTM)、指数移动平均法预测股票市场和可视化实例的代码数据,为读者提供一套完整......
  • 基于CNN-RNN模型的验证码图片识别
    基于CNN-RNN模型的验证码图片识别是一个在计算机视觉和自然语言处理领域的经典应用场景,特别适合处理复杂的验证码(如字符连成一条线的或扭曲的验证码)和序列数据。这个任务通常包括以下几个步骤:数据预处理:图像增强:旋转、缩放、添加噪声等,以提高模型的泛化能力。字符分割......