LSTM là gì? Vì sao AI có thể ghi nhớ thông tin dài hơn RNN?
Trong bài trước, chúng ta đã tìm hiểu RNN (Recurrent Neural Network) – một kiến trúc Deep Learning được thiết kế để xử lý dữ liệu tuần tự như văn bản, âm thanh, chuỗi thời gian hay dữ liệu cảm biến.
Tuy nhiên, RNN có một hạn chế quan trọng: khi chuỗi dữ liệu quá dài, mô hình có thể gặp khó khăn trong việc ghi nhớ thông tin từ quá khứ xa.
Đây chính là vấn đề mà LSTM (Long Short-Term Memory) được thiết kế để giải quyết.
1. LSTM là gì?
LSTM – Long Short-Term Memory là một biến thể của Recurrent Neural Network (RNN), được thiết kế để học và duy trì thông tin trong thời gian dài hơn.
LSTM được giới thiệu bởi Sepp Hochreiter và Jürgen Schmidhuber vào năm 1997. Kiến trúc này bổ sung một cơ chế bộ nhớ và các gate (cổng) giúp mô hình quyết định thông tin nào nên giữ lại, thông tin nào nên loại bỏ và thông tin nào nên đưa ra ngoài.
Nói đơn giản:
RNN: “Tôi nhớ những gì vừa xảy ra.”
LSTM: “Tôi có thể quyết định thông tin nào cần nhớ lâu hơn.”
2. Vấn đề của RNN
Hãy tưởng tượng mô hình đang đọc câu:
“Tôi sinh ra ở Hải Phòng và hiện đang học tập tại Hà Nội. Vì vậy, tôi thường xuyên…”
Để dự đoán phần tiếp theo, thông tin “Hải Phòng” có thể không còn quan trọng.
Nhưng trong một câu dài hơn:
“Tôi đã sống ở Hải Phòng trong nhiều năm trước khi chuyển vào Hà Nội học đại học. Sau rất nhiều trải nghiệm, tôi vẫn luôn cảm thấy rằng …”
Thông tin ở đầu câu đôi khi vẫn có thể liên quan đến phần cuối.
RNN truyền thông tin từ bước này sang bước tiếp theo thông qua hidden state. Khi chuỗi càng dài, việc duy trì thông tin từ quá khứ xa trở nên khó khăn.
Một trong những vấn đề nổi tiếng của RNN là vanishing gradient – gradient có thể suy giảm mạnh khi lan truyền ngược qua nhiều bước thời gian, khiến mô hình khó học các mối quan hệ dài hạn.
Đây là một trong những động lực quan trọng dẫn tới sự ra đời của LSTM.
3. Ý tưởng chính của LSTM
Điểm đặc biệt của LSTM nằm ở cell state – có thể hiểu đơn giản là một “đường bộ nhớ” chạy xuyên suốt chuỗi.
Bên cạnh cell state, LSTM sử dụng các gate để kiểm soát dòng thông tin.
Có ba gate chính:
- Forget Gate: Quyết định thông tin nào cần quên.
- Input Gate: Quyết định thông tin mới nào cần ghi nhớ.
- Output Gate: Quyết định thông tin nào được đưa ra làm output.
Có thể hình dung:
Input
│
▼
┌─────────────────────┐
│ LSTM │
│ │
│ Forget Gate ───────►│
│ Input Gate ───────►│
│ Output Gate ───────►│
│ │
│ Cell State │
└─────────────────────┘
│
▼
Hidden State / Output
Ba cổng này giúp LSTM kiểm soát thông tin thay vì truyền toàn bộ thông tin một cách đơn giản như RNN.
4. Forget Gate – Quên thông tin không cần thiết
Forget Gate quyết định phần nào của cell state cũ nên được giữ lại.
Giá trị của gate thường nằm trong khoảng 0 đến 1.
- Gần 0 → quên nhiều.
- Gần 1 → giữ lại nhiều.
Ví dụ:
Thông tin cũ:
"Người dùng trước đây sống ở Hải Phòng"
Thông tin hiện tại:
"Người dùng chuyển đến Hà Nội"
Forget Gate
↓
Giảm mức quan trọng của thông tin cũ
Về mặt toán học:
fₜ = σ(Wf · [hₜ₋₁, xₜ] + bf)
Trong đó:
xₜ: input tại thời điểm hiện tại.hₜ₋₁: hidden state của bước trước.Wf: trọng số.bf: bias.σ: hàm sigmoid.
5. Input Gate – Ghi nhớ thông tin mới
Sau khi quyết định nên quên gì, LSTM cần xác định:
Thông tin mới nào đáng được lưu lại?
Input Gate thực hiện nhiệm vụ này.
Ví dụ:
Thông tin hiện tại:
"Người dùng chuyển đến Hà Nội"
Input Gate
↓
Nhận diện thông tin mới quan trọng
↓
Cập nhật Cell State
LSTM sử dụng sigmoid để xác định mức độ cần cập nhật và tanh để tạo ra thông tin ứng viên.
Có thể biểu diễn đơn giản:
iₜ = σ(Wi · [hₜ₋₁, xₜ] + bi)
C̃ₜ = tanh(WC · [hₜ₋₁, xₜ] + bC)
Sau đó cell state được cập nhật:
Cₜ = fₜ × Cₜ₋₁ + iₜ × C̃ₜ
Đây chính là một trong những thành phần quan trọng giúp LSTM duy trì thông tin qua nhiều bước thời gian.
6. Output Gate – Đưa thông tin ra ngoài
Sau khi cập nhật cell state, LSTM cần quyết định:
Thông tin nào nên được sử dụng làm output ở thời điểm hiện tại?
Output Gate thực hiện nhiệm vụ này.
oₜ = σ(Wo · [hₜ₋₁, xₜ] + bo)
hₜ = oₜ × tanh(Cₜ)
Kết quả hₜ trở thành hidden state mới và được truyền sang bước tiếp theo.
7. RNN và LSTM khác nhau như thế nào?
| Đặc điểm | RNN | LSTM |
|---|---|---|
| Hidden State | Có | Có |
| Cell State riêng | Không | Có |
| Forget Gate | Không | Có |
| Input Gate | Không | Có |
| Output Gate | Không | Có |
| Xử lý phụ thuộc dài hạn | Hạn chế | Tốt hơn |
| Kiến trúc | Đơn giản hơn | Phức tạp hơn |
| Tính toán | Nhẹ hơn | Nặng hơn |
Điểm quan trọng nhất không phải là LSTM “thông minh hơn” theo nghĩa chung, mà là nó có cơ chế kiểm soát bộ nhớ rõ ràng hơn so với vanilla RNN.
8. Ví dụ thực tế: Dự đoán chuỗi thời gian
Giả sử chúng ta muốn dự đoán doanh thu của một cửa hàng:
Tháng 1 → 100 triệu
Tháng 2 → 110 triệu
Tháng 3 → 115 triệu
...
Tháng 12 → ?
Một LSTM có thể nhận chuỗi doanh thu trong quá khứ và học các pattern theo thời gian.
Ví dụ:
Doanh thu
│
│ ●
│ ● ●
│ ●
│ ●
└──────────────────────► Time
X₁ X₂ X₃ ... X₁₂
│
▼
LSTM
│
▼
Dự đoán X₁₃
Đây là lý do LSTM từng được sử dụng rộng rãi trong các bài toán time series forecasting.
9. LSTM được ứng dụng ở đâu?
LSTM phù hợp với nhiều loại dữ liệu có tính tuần tự.
Natural Language Processing
LSTM từng được sử dụng trong:
- Language Modeling
- Text Classification
- Sentiment Analysis
- Machine Translation
- Speech Recognition
Time Series
LSTM có thể được sử dụng để phân tích:
- Doanh thu
- Giá cổ phiếu
- Nhu cầu sản phẩm
- Nhiệt độ
- Dữ liệu cảm biến
- Traffic
Audio và Music
LSTM cũng được sử dụng để xử lý dữ liệu âm thanh và sinh nhạc. Ví dụ, Google Magenta từng phát triển Performance RNN, một mô hình dựa trên LSTM để mô hình hóa các bản nhạc đa âm với timing và dynamics.
10. LSTM trong Python
Với Keras/TensorFlow, chúng ta có thể xây dựng một LSTM tương đối đơn giản:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
model = Sequential([
LSTM(64, input_shape=(30, 5)),
Dense(1)
])
model.compile(
optimizer="adam",
loss="mse"
)
model.summary()
Trong ví dụ này:
30: số timestep trong một sequence.5: số feature tại mỗi timestep.64: số LSTM units.Dense(1): output cho một giá trị dự đoán.
TensorFlow cũng hỗ trợ trực tiếp các lớp LSTM và các biến thể liên quan trong hệ sinh thái Keras.
11. LSTM có phải luôn tốt hơn RNN?
Không nhất thiết.
LSTM có kiến trúc phức tạp hơn nên:
- Có nhiều tham số hơn.
- Tốn tài nguyên tính toán hơn.
- Training có thể lâu hơn.
- Với các bài toán sequence đơn giản, RNN có thể đã đủ dùng.
Ngoài LSTM, còn có một kiến trúc nổi tiếng khác là GRU (Gated Recurrent Unit).
GRU cũng sử dụng cơ chế gate nhưng có kiến trúc đơn giản hơn LSTM.
Vì vậy, khi xây dựng mô hình thực tế, việc lựa chọn RNN, LSTM hay GRU phụ thuộc vào dữ liệu, độ dài sequence, yêu cầu tính toán và mục tiêu của bài toán.
12. LSTM và Transformer
Trong những năm gần đây, Transformer đã trở thành một kiến trúc quan trọng trong nhiều bài toán xử lý ngôn ngữ và sequence.
Điểm khác biệt lớn là Transformer sử dụng attention mechanism, cho phép mô hình trực tiếp xem xét các vị trí khác nhau trong sequence thay vì xử lý dữ liệu tuần tự theo cách truyền thống của RNN.
Điều này giúp Transformer phù hợp với nhiều bài toán sequence quy mô lớn.
Tuy nhiên, điều đó không khiến LSTM trở nên vô dụng.
LSTM vẫn là một kiến trúc quan trọng để hiểu:
- Recurrent Neural Networks
- Sequence Modeling
- Hidden State
- Memory
- Gated Architecture
- Vanishing Gradient
Đặc biệt, khi học Deep Learning, hiểu LSTM sẽ giúp chúng ta dễ dàng hiểu được tại sao các kiến trúc sequence hiện đại lại chuyển dần từ recurrent architecture sang attention-based architecture.
13. Tổng kết
Có thể tóm tắt LSTM bằng một câu:
LSTM là một biến thể của RNN sử dụng cơ chế bộ nhớ và các gate để kiểm soát thông tin được giữ lại, cập nhật và xuất ra.
Ba gate quan trọng:
Forget Gate
↓
Quên thông tin không cần thiết
Input Gate
↓
Ghi nhớ thông tin mới
Output Gate
↓
Đưa thông tin phù hợp ra ngoài
Nhờ cơ chế này, LSTM được thiết kế để xử lý tốt hơn các mối quan hệ dài hạn trong dữ liệu tuần tự so với vanilla RNN. Ý tưởng này được trình bày trong công trình gốc của Hochreiter và Schmidhuber năm 1997.
Từ RNN → LSTM → GRU → Attention → Transformer, chúng ta có thể nhìn thấy một quá trình phát triển quan trọng của Deep Learning trong việc xử lý dữ liệu tuần tự.
Tài liệu tham khảo
Long Short-Term Memory – Hochreiter & Schmidhuber
TensorFlow – Machine Learning Framework
🚀 Học Data Science & AI cùng MCNA Technology School
Nếu bạn muốn học từ nền tảng Python, Data Analysis đến AI và Machine Learning, có thể tham khảo:
Combo 5 khóa AI & Power BI
Combo Python
Tác giả: Bùi Đình Tuyển – Data Analyst tại MCNA Technology School
Hotline: 0939.866.825 (Mr. Minh Khang)
Website: mcna.vn
Hà Nội: 30 Trung Liệt, Đống Đa | Liền kề 44B TT2 Văn Quán, Hà Đông
TP.HCM: 50B Phan Tây Hồ, Cầu Kiệu

