终于把 LSTM 算法搞懂了!!!

今天给大家分享一个强大的算法模型,LSTMLSTM(长短期记忆网络)是一种特殊类型的循环神经网络(RNN),它能够有效地解决传统 RNN 在处理长序列时遇到的梯度消失和梯度爆炸问题。 LSTM 的核心思想是通过多个门控机制来控制信息的流动,这些门控机制可以选择性地保留或丢弃输入数据,从而帮助网络捕捉长时间跨度的依赖关系。 LSTM的工作原理LSTM 的核心思想是通过引入记忆单元来存储信息,并使用三个主要的门(输入门、遗忘门、输出门)来决定哪些信息应该保留,哪些信息应该遗忘,以及哪些信息应该更新。

今天给大家分享一个强大的算法模型,LSTM

LSTM(长短期记忆网络)是一种特殊类型的循环神经网络(RNN),它能够有效地解决传统 RNN 在处理长序列时遇到的梯度消失和梯度爆炸问题。

LSTM 的核心思想是通过多个门控机制来控制信息的流动,这些门控机制可以选择性地保留或丢弃输入数据,从而帮助网络捕捉长时间跨度的依赖关系。

图片

LSTM的工作原理

LSTM 的核心思想是通过引入记忆单元来存储信息,并使用三个主要的门(输入门、遗忘门、输出门)来决定哪些信息应该保留,哪些信息应该遗忘,以及哪些信息应该更新。

遗忘门(Forget Gate)

遗忘门决定了哪些信息将从记忆单元中丢弃,它的输出是一个0到1之间的值,0表示完全丢弃信息,1表示完全保留信息。

图片

终于把 LSTM 算法搞懂了!!!

图片

终于把 LSTM 算法搞懂了!!!

更新记忆单元状态

记忆单元通过遗忘门和输入门的输出进行更新。

图片

终于把 LSTM 算法搞懂了!!!

输出门(Output Gate)

终于把 LSTM 算法搞懂了!!!

LSTM的优势

  1. 避免梯度消失/爆炸LSTM能够通过门控机制,有效地保存和更新记忆信息,避免了传统RNN中由于长时间步的反向传播导致的梯度消失和梯度爆炸问题。
  2. 适应长期记忆LSTM 可以根据需求保留长期记忆(通过记忆单元状态),使得它在处理长序列任务时更加高效。
  3. 灵活性强LSTM不仅适用于标准的时间序列任务,还能够处理文本、语音等多种任务,应用非常广泛。

案例分享

下面是一个使用 LSTM(长短期记忆网络)进行苹果公司股价预测的示例代码。

我们将使用  yfinance 库获取苹果公司历史股价数据, 并通过 TensorFlow 库来构建 LSTM 模型。

复制
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import yfinance as yf
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense, Dropout

ticker = 'AAPL'  # 苹果的股票代码
start_date = '2010-01-01'
end_date = '2024-11-01'

data = yf.download(ticker, start=start_date, end=end_date)

data = data[['Close']]

scaler = MinMaxScaler(feature_range=(0, 1))
scaled_data = scaler.fit_transform(data)

def create_dataset(data, time_step=60):
    X, y = [], []
    for i in range(len(data) - time_step - 1):
        X.append(data[i:(i + time_step), 0])
        y.append(data[i + time_step, 0])
    return np.array(X), np.array(y)

time_step = 60  # 使用过去60天的数据来预测下一天的股价
X, y = create_dataset(scaled_data, time_step)

train_size = int(len(X) * 0.8)
X_train, X_test = X[:train_size], X[train_size:]
y_train, y_test = y[:train_size], y[train_size:]


X_train = X_train.reshape(X_train.shape[0], X_train.shape[1], 1)
X_test = X_test.reshape(X_test.shape[0], X_test.shape[1], 1)

# 构建LSTM模型
model = Sequential()
model.add(LSTM(units=50, return_sequences=True, input_shape=(X_train.shape[1], 1)))
model.add(Dropout(0.2))  # Dropout层防止过拟合
model.add(LSTM(units=50, return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(units=1))  # 输出预测的股价


model.compile(optimizer='adam', loss='mean_squared_error')

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

predictions = model.predict(X_test)

predictions = scaler.inverse_transform(predictions)
y_test_actual = scaler.inverse_transform(y_test.reshape(-1, 1))

plt.figure(figsize=(14, 6))
plt.plot(data.index[train_size+time_step+1:], y_test_actual, color='blue', label='Real Price')
plt.plot(data.index[train_size+time_step+1:], predictions, color='red', label='Predicted Price')
plt.title('Apple Stock Price Prediction using LSTM')
plt.xlabel('Time')
plt.ylabel('Stock Price (USD)')
plt.legend()
plt.show()

图片

相关资讯

终于把 Seq2Seq 算法搞懂了!!

Seq2Seq(Sequence-to-Sequence)模型是一种用于处理序列数据的神经网络架构,广泛应用于自然语言处理(NLP)任务,如机器翻译、文本生成、对话系统等。 它通过编码器-解码器架构将输入序列(如一个句子)映射到输出序列(另一个句子或序列)。 图片模型结构Seq2Seq 模型由两个主要部分组成。

Nature子刊:科学家在类脑芯片上实现类似LSTM的功能,能效高1000倍

格拉茨技术大学的计算机科学家在 Nature 子刊上发表的一篇论文表明,他们找到了一种在神经形态芯片上模拟 LSTM 的方案,可以让类脑神经形态芯片上的 AI 算法能效提高约 1000 倍。随着智能手机的普及,手机游戏也越来越受欢迎。但视频游戏等程序会大量耗电耗能。与 GPU 等标准硬件相比,基于 spike 的神经形态芯片有望实现更节能的深度神经网络(DNN)。但这需要我们理解如何在基于 event 的稀疏触发机制(sparse firing regime)中模拟 DNN,否则神经形态芯片的节能优势就会丧失。比如

网传Ilya Sutskever的推荐清单火了,掌握当前AI 90%

随着生成式 AI 模型掀起新一轮 AI 浪潮,越来越多的行业迎来技术变革。许多行业从业者、基础科学研究者需要快速了解 AI 领域发展现状、掌握必要的基础知识。如果有一份「机器学习精炼秘笈」,你认为应该涵盖哪些知识?近日,一份网传 OpenAI 联合创始人兼首席科学家 Ilya Sutskever 整理的一份机器学习研究文章清单火了。网友称「Ilya 认为掌握了这些内容,你就了解了当前(人工智能领域) 90% 的重要内容。」推荐清单:,Ilya Sutskever 重点关注 transformer 架构、循环神经网络