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

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

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

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

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

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

LSTM的工作原理

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

遗忘门(Forget Gate)

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

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

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

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

终于把 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()

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

给TA打赏
共{{data.count}}人
人已打赏
理论

最大限度提高人工智能训练效率:选择合适的模型

2024-12-3 8:08:13

理论

李飞飞空间智能首秀:AI靠单图生成3D世界,可探索,遵循基本物理几何规则

2024-12-3 8:23:53

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
搜索