LSTM - Bộ Nhớ Dài Ngắn Hạn
Hiểu về công nghệ đằng sau phân tích cảm xúc
LSTM là gì?
Long Short-Term Memory (LSTM) là phiên bản nâng cao của Mạng Nơ-ron Hồi quy (RNN) được thiết kế bởi Hochreiter và Schmidhuber. LSTM có khả năng nắm bắt các phụ thuộc dài hạn trong dữ liệu tuần tự, làm cho chúng lý tưởng cho các tác vụ như dịch ngôn ngữ, nhận dạng giọng nói và dự báo chuỗi thời gian.
Không giống như RNN truyền thống sử dụng một trạng thái ẩn được truyền qua thời gian, LSTM giới thiệu một ô nhớ có thể lưu giữ thông tin trong thời gian dài, giải quyết thách thức học các phụ thuộc dài hạn.

Vấn đề với Phụ thuộc Dài hạn trong RNN
Mạng Nơ-ron Hồi quy (RNN) được thiết kế để xử lý dữ liệu tuần tự bằng cách duy trì trạng thái ẩn nắm bắt thông tin từ các bước thời gian trước đó. Tuy nhiên, chúng thường gặp thách thức trong việc học các phụ thuộc dài hạn, khi thông tin từ các bước thời gian xa trở nên quan trọng để đưa ra dự đoán chính xác cho trạng thái hiện tại. Vấn đề này được gọi là vấn đề gradient biến mất hoặc gradient bùng nổ.
- Gradient biến mất: Khi huấn luyện mô hình theo thời gian, gradient giúp mô hình học có thể thu nhỏ khi chúng truyền qua nhiều bước. Điều này khiến mô hình khó học các mẫu dài hạn vì thông tin trước đó trở nên gần như không liên quan.
- Gradient bùng nổ: Đôi khi gradient có thể tăng quá lớn gây ra sự bất ổn định. Điều này khiến mô hình khó học đúng cách vì các cập nhật trở nên bất thường và khó dự đoán.
Kiến trúc LSTM
Kiến trúc LSTM bao gồm ô nhớ được kiểm soát bởi ba cổng:
- Cổng đầu vào (Input gate): Kiểm soát thông tin nào được thêm vào ô nhớ.
- Cổng quên (Forget gate): Xác định thông tin nào bị loại bỏ khỏi ô nhớ.
- Cổng đầu ra (Output gate): Kiểm soát thông tin nào được xuất ra từ ô nhớ.
Điều này cho phép mạng LSTM chọn lọc giữ lại hoặc loại bỏ thông tin khi nó chảy qua mạng, cho phép chúng học các phụ thuộc dài hạn.

Cách hoạt động của LSTM
Kiến trúc LSTM có cấu trúc chuỗi chứa bốn mạng nơ-ron và các khối bộ nhớ khác nhau gọi là các ô (cells).
1. Cổng quên (Forget Gate)
Thông tin không còn hữu ích trong trạng thái ô được loại bỏ bằng cổng quên. Hai đầu vào xt (đầu vào tại thời điểm cụ thể) và ht-1 (đầu ra ô trước đó) được đưa vào cổng và nhân với ma trận trọng số, sau đó cộng với độ lệch. Kết quả được đưa qua hàm kích hoạt tạo ra đầu ra nhị phân.
Phương trình cho cổng quên là: ft = σ(Wf · [ht-1, xt] + bf)

2. Cổng đầu vào (Input Gate)
Việc thêm thông tin hữu ích vào trạng thái ô được thực hiện bởi cổng đầu vào. Đầu tiên, thông tin được điều chỉnh bằng hàm sigmoid và lọc các giá trị cần ghi nhớ.
Phương trình cho cổng đầu vào là:
it = σ(Wi · [ht-1, xt] + bi)
Ĉt = tanh(Wc · [ht-1, xt] + bc)
Ct = ft ⊙ Ct-1 + it ⊙ Ĉt

3. Cổng đầu ra (Output Gate)
Nhiệm vụ trích xuất thông tin hữu ích từ trạng thái ô hiện tại để trình bày dưới dạng đầu ra được thực hiện bởi cổng đầu ra.
Phương trình cho cổng đầu ra là: ot = σ(Wo · [ht-1, xt] + bo)

Ứng dụng của LSTM
Một số ứng dụng nổi tiếng của LSTM bao gồm:
- Mô hình hóa ngôn ngữ: Được sử dụng trong các tác vụ như mô hình hóa ngôn ngữ, dịch máy và tóm tắt văn bản.
- Nhận dạng giọng nói: Dùng trong chuyển đổi giọng nói thành văn bản và nhận dạng lệnh nói.
- Dự báo chuỗi thời gian: Dùng để dự đoán giá cổ phiếu, thời tiết và tiêu thụ năng lượng.
- Phát hiện bất thường: Được sử dụng để phát hiện gian lận hoặc xâm nhập mạng.
- Hệ thống đề xuất: Trong các tác vụ đề xuất như đề xuất phim, nhạc và sách.
- Phân tích video: Áp dụng trong các tác vụ như phát hiện đối tượng, nhận dạng hoạt động và phân loại hành động.