Ứng dụng deep learning: LSTM và Transformer trong dự báo giá
2025-05-09 — Admin
Deep learning, đặc biệt là các mô hình tuần tự như LSTM và Transformer, ngày càng được ứng dụng rộng rãi trong dự báo giá tài chính nhờ khả năng học các quan hệ phức tạp trong chuỗi thời gian.
1. Ưu điểm của mô hình tuần tự (sequence model)
- Nhớ được thông tin quá khứ xa (long-term dependencies)
- Học được các pattern phi tuyến, phức tạp
- Phù hợp cho dữ liệu chuỗi thời gian như giá, volume, chỉ báo kỹ thuật
2. Xây dựng mô hình LSTM đơn giản với TensorFlow/Keras
Ví dụ Python:
import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
# Giả sử X_train shape (samples, timesteps, features), y_train shape (samples,)
model = keras.Sequential([
layers.LSTM(64, input_shape=(X_train.shape[1], X_train.shape[2])),
layers.Dense(1)
])
model.compile(optimizer='adam', loss='mse')
model.fit(X_train, y_train, epochs=20, batch_size=32)
3. Dự đoán chuỗi thời gian với Attention/Transformer
- Transformer sử dụng cơ chế Attention để học quan hệ giữa các bước thời gian, không bị giới hạn bởi khoảng cách như LSTM.
- Hiệu quả tốt với chuỗi dài, nhiều biến đầu vào.
Ví dụ mô hình Transformer đơn giản với Keras:
from tensorflow.keras.layers import Input, Dense, LayerNormalization, MultiHeadAttention, Dropout
from tensorflow.keras.models import Model
inputs = Input(shape=(X_train.shape[1], X_train.shape[2]))
x = MultiHeadAttention(num_heads=2, key_dim=32)(inputs, inputs)
x = LayerNormalization()(x)
x = Dense(64, activation='relu')(x)
x = Dropout(0.2)(x)
outputs = Dense(1)(x[:, -1, :]) # Lấy output cuối cùng
model = Model(inputs, outputs)
model.compile(optimizer='adam', loss='mse')
model.fit(X_train, y_train, epochs=20, batch_size=32)
4. So sánh hiệu quả LSTM vs Transformer
- LSTM tốt cho chuỗi ngắn, ít biến, dễ huấn luyện
- Transformer mạnh với chuỗi dài, nhiều biến, học được quan hệ phức tạp hơn
- Nên thử nghiệm cả hai, đánh giá bằng các metric như MSE, MAE, R2
5. Visualization: so sánh dự báo
import matplotlib.pyplot as plt
plt.plot(y_test, label='True')
plt.plot(y_pred_lstm, label='LSTM')
plt.plot(y_pred_transformer, label='Transformer')
plt.legend()
plt.title('So sánh dự báo giá')
plt.show()
Tổng kết
- LSTM và Transformer là hai mô hình mạnh cho dự báo chuỗi thời gian
- LSTM phù hợp cho bài toán đơn giản, Transformer cho bài toán phức tạp, nhiều biến
- Nên đánh giá hiệu quả thực tế trên dữ liệu của bạn
Chúc bạn thành công với deep learning trong dự báo giá!