Long Short Term Memory
Giới thiệu
Long Short-Term Memory là một mạng nơ-ron hồi tiếp RNN được cải tiến để xử lý hiệu quả các phụ thuộc dài hạn (long-term dependencies) nhờ gate mechanism. Điều này giúp LSTM lý tưởng cho các bài toán như dịch ngôn ngữ, nhận diện giọng nói, dự đoán chuỗi thời gian…
LSTM là gì?
Như đã đề cập trong bài Recurrent Neural Network, các vấn đề phụ thuộc dài hạn (long range dependencies) và tiêu biến gradient (Gradient Vanishing) rất phổ biến khi huấn luyện RNN. Sự xuất hiện của Long Short Term Memory là vị cứu tinh.
LSTM là một loại mạng RNN được thiết kế để khắc phục hạn chế của RNN truyền thống khi xử lý dữ liệu tuần tự. LSTM sử dụng một ô nhớ có thể lưu trữ thông tin trong thời gian dài, cho phép ghi nhớ ngữ cảnh quan trọng ngay cả khi chuỗi đầu vào rất dài. LSTM đạt được điều này nhờ một loạt các cổng chuyên biệt kiểm soát luồng thông tin vào/ra ô nhớ, giúp học và lưu giữ các mẫu tuần tự hiệu quả.
Tại sao cần dùng LSTM?
Kiến trúc của LSTM
LSTM hoạt động như thế nào?
Forget Gate
Tính toán giá trị kích hoạt của cổng quên bằng cách kết hợp đầu vào hiện tại $x_{t}$ và trạng thái ẩn trước đó $h_{t-1}$, sau đó áp dụng hàm sigmoid để kiểm soát lượng thông tin cần quên từ trạng thái ô nhớ trước đó.
Input Gate
Biểu diễn cổng vào và trạng thái ô nhớ ứng viên trong LSTM:
- Cổng vào: Tính toán giá trị kích hoạt của cổng vào bằng cách kết hợp $x_{t}$ và $h_{t-1}$, áp dụng hàm sigmoid để kiểm soát lượng thông tin mới được đưa vào ô nhớ.
- Trạng thái ô nhớ ứng viên: Tính toán trạng thái ô nhớ ứng viên bằng cách kết hợp $x_{t}$ và $h_{t-1}$, áp dụng hàm $tanh$ để sinh thông tin mới cần thêm vào ô nhớ.
Update Operation
Cập nhật trạng thái ô nhớ $C_{t}$ bằng cách kết hợp:
- Trạng thái ô nhớ trước $C_{t-1}$ nhân với cổng quên $f_{t}$ (quyết định giữ lại bao nhiêu thông tin cũ).
- Trạng thái ô nhớ ứng viên $\tilde{C}{t}$ nhân với cổng vào $i{t}$ (quyết định thêm bao nhiêu thông tin mới).
Output Gate
Biểu diễn cổng ra và trạng thái ẩn trong LSTM:
- Cổng ra: Tính toán giá trị kích hoạt của cổng ra bằng cách kết hợp $x_{t}$ và $h_{t-1}$, áp dụng hàm sigmoid để kiểm soát đầu ra từ ô nhớ.
- Trạng thái ẩn: Xác định trạng thái ẩn $h_{t}$ bằng cách áp dụng hàm $tanh$ lên $C_{t}$ để tạo ứng viên đầu ra, sau đó nhân với giá trị kích hoạt của cổng ra $o_{t}$. Điều này quyết định phần nào của ô nhớ sẽ được truyền sang bước tiếp theo và làm đầu ra tại thời điểm hiện tại.
Make a decision
Phân loại câu
Kết luận
Tóm lại, LSTM sử dụng các cổng—quên, vào, ra—để quản lý hiệu quả các phụ thuộc dài hạn và khắc phục hạn chế của RNN truyền thống.
Tài liệu tham khảo (References)
- C. Olah, “Understanding LSTM Networks,” Github.io, Aug. 27, 2015. https://colah.github.io/posts/2015-08-Understanding-LSTMs/
- M. Phi, “Illustrated Guide to LSTM’s and GRU’s: A step by step explanation,” Medium, Jul. 10, 2019. https://towardsdatascience.com/illustrated-guide-to-lstms-and-gru-s-a-step-by-step-explanation-44e9eb85bf21