Bộ nhớ dài-ngắn hạn

Bộ nhớ ngắn-dài hạn (tiếng Anh: long short-term memory, viết tắt: LSTM) là một kiến trúc mạng thần kinh hồi quy được thiết kế để học các phụ thuộc dài hạn trong dữ liệu tuần tự. LSTM được giới thiệu lần đầu năm 1997 bởi Sepp Hochreiter và Jürgen Schmidhuber nhằm giải quyết vấn đề gradient biến mất (vanishing gradient) vốn khiến các RNN truyền thống không thể học hiệu quả từ các chuỗi dài. 

Ý tưởng cốt lõi của LSTM là bổ sung một trạng thái ô nhớ (cell state) được điều phối bởi các cơ chế cổng (gate), cho phép mạng chọn lọc thông tin nào cần ghi nhớ, thông tin nào cần xóa, và thông tin nào cần xuất ra tại mỗi bước thời gian. Nhờ thiết kế này, LSTM có thể xử lý các chuỗi với khoảng cách phụ thuộc lên đến hàng nghìn bước, vượt xa giới hạn thực tế của RNN thông thường.

LSTM có ứng dụng rộng rãi trong phân loại, xử lý dữ liệu, các nhiệm vụ phân tích chuỗi thời gian, nhận dạng giọng nói, dịch máy, phát hiện hoạt động giọng nói, điều khiển robot, trò chơi điện tử, chăm sóc sức khỏe, dự báo năng lượng.

Lịch sử 

Trước khi LSTM ra đời, xử lý ngôn ngữ tự nhiên và nhận dạng giọng nói chủ yếu dựa vào các phương pháp dựa trên quy luật (rule-based) hoặc thống kê. Trong dịch máy, các hệ thống dựa trên luật yêu cầu các nhà ngôn ngữ học xây dựng thủ công toàn bộ quy tắc ngữ pháp và từ điển song ngữ cho từng cặp ngôn ngữ, khiến toàn bộ quá trình trở tốn kém và khó mở rộng thêm các từ mới. Từ cuối thập niên 1980, dịch máy thống kê dần thay thế hướng tiếp cận này bằng cách học xác suất chuyển đổi từ các kho ngữ liệu song ngữ lớn, nhưng vẫn gặp khó khăn trong việc nắm bắt các phụ thuộc ngữ nghĩa dài hạn giữa các từ cách xa nhau trong câu. Trong nhận dạng giọng nói, mô hình Markov ẩn kết hợp với mô hình hỗn hợp Gaussian (GMM-HMM) là hướng tiếp cận chủ đạo trong nhiều thập kỷ, nhưng bị giới hạn bởi giả định Markov rằng mỗi trạng thái chỉ phụ thuộc vào trạng thái ngay trước đó, khiến mô hình không thể nắm bắt các ngữ cảnh dài hơn trong lời nói tự nhiên.

Mạng thần kinh hồi quy (RNN) được kỳ vọng sẽ khắc phục các giới hạn này nhờ khả năng xử lý chuỗi có độ dài tùy ý và lý thuyết có thể ghi nhớ thông tin từ các bước thời gian xa hơn. Tuy nhiên, khi huấn luyện RNN bằng lan truyền ngược qua thời gian, gradient có xu hướng giảm dần xuống 0 khi chuỗi kéo dài. Hiện tượng này được Sepp Hochreiter phân tích chính thức lần đầu trong luận văn tốt nghiệp năm 1991 tại Đại học Kỹ thuật Munich, và sau đó được Yoshua Bengio, Patrice Simard và Paolo Frasconi làm rõ thêm vào năm 1994. Hệ quả thực tế là RNN truyền thống gần như không thể học được các phụ thuộc (dependencies) cách nhau hơn vài chục bước thời gian, khiến chúng kém hiệu quả với các câu dài hay đoạn văn bản liên tục.

Năm 1997, Hochreiter cùng người hướng dẫn Jürgen Schmidhuber công bố kiến trúc LSTM trên tạp chí Neural Computation, giải quyết vấn đề gradient biến mất bằng cách đưa vào một trạng thái ô nhớ truyền thông tin qua các bước thời gian mà không bị biến đổi trực tiếp bởi các phép nhân ma trận lặp lại. Phiên bản LSTM ban đầu bao gồm cổng đầu vào và cổng đầu ra, nhưng chưa có cơ chế để xóa thông tin khỏi ô nhớ. Năm 1999, Felix Gers, Schmidhuber và Fred Cummins bổ sung cổng quên, cho phép mạng chủ động xóa thông tin không còn cần thiết và đặt lại trạng thái ô nhớ, và đây là phiên bản được sử dụng phổ biến nhất cho đến nay. Năm 2000, nhóm tác giả tiếp tục bổ sung kết nối nhìn trộm (peephole connection), cho phép các cổng truy cập trực tiếp vào trạng thái ô nhớ thay vì chỉ gián tiếp qua trạng thái ẩn.

Năm 2014, Kyunghyun Cho và các cộng sự đề xuất đơn vị hồi quy có cổng (gated recurrent unit, GRU), một biến thể đơn giản hơn của LSTM gộp cổng quên và cổng đầu vào thành một cổng cập nhật duy nhất, giảm số lượng tham số trong khi vẫn giữ hiệu suất tương đương trên nhiều tác vụ. Cũng trong năm 2015, Srivastava, Greff và Schmidhuber áp dụng nguyên lý cổng của LSTM để xây dựng highway network, mở đường cho kiến trúc ResNet xuất hiện ngay sau đó.

Kiến trúc

LSTM chuẩn 

Một đơn vị LSTM gồm một ô nhớ và ba cổng: cổng đầu vào (input gate), cổng đầu ra (output gate), và cổng quên (forget gate). Ô nhớ lưu trữ thông tin qua các bước thời gian tùy ý, trong khi các cổng điều tiết luồng thông tin vào và ra khỏi ô nhớ thông qua hàm sigmoid cho ra giá trị trong khoảng , trong đó 0 có nghĩa là chặn hoàn toàn và 1 có nghĩa là cho đầy đủ giá trị qua nguyên vẹn.

Tại mỗi bước thời gian , đơn vị LSTM nhận đầu vào  và trạng thái ẩn từ bước trước , rồi tính toán theo thứ tự sau:

Cổng quên quyết định phần nào của trạng thái ô nhớ  cần xóa bỏ. Nó nhìn vào  và , rồi cho ra một vector giá trị trong khoảng (0, 1) cho mỗi chiều của :

Giá trị  gần 0 nghĩa là "quên thông tin này", gần 1 nghĩa là "giữ lại thông tin này".

Cổng đầu vào quyết định thông tin mới nào sẽ được ghi vào ô nhớ. Nó gồm hai phần: cổng đầu vào  kiểm soát mức độ cập nhật, và vector ứng viên  chứa thông tin mới được đề xuất:

Trạng thái ô nhớ sau đó được cập nhật bằng cách kết hợp thông tin cũ (được lọc qua cổng quên) và thông tin mới (được lọc qua cổng đầu vào):

trong đó  là tích Hadamard (nhân theo từng phần tử).

Cổng đầu ra quyết định phần nào của ô nhớ sẽ được xuất ra thành trạng thái ẩn :

trong đó  là hàm sigmoid,  và  là hàm tanh. Các ma trận ,  và vector  là các tham số học được trong quá trình huấn luyện.

Peephole LSTM 

Trong LSTM chuẩn, các cổng chỉ nhìn vào trạng thái ẩn $h_{t-1}$ và đầu vào $x_t$ để đưa ra quyết định, mà không trực tiếp quan sát trạng thái ô nhớ $c_{t-1}$. Năm 2000, Gers và Schmidhuber bổ sung kết nối nhìn trộm (peephole connection), cho phép cả ba cổng truy cập trực tiếp vào $c_{t-1}$, giúp mạng học được các phụ thuộc thời gian chính xác hơn.

Lưu ý rằng cổng quên và cổng đầu vào sử dụng , trong khi cổng đầu ra sử dụng  — tức là trạng thái ô nhớ đã được cập nhật tại bước hiện tại.

Các biến thể kiến trúc 

Ngoài các thay đổi ở cấp độ công thức, LSTM còn được mở rộng theo hai hướng kiến trúc quan trọng. LSTM hai chiều (bidirectional LSTM, BiLSTM), được Graves và Schmidhuber giới thiệu năm 2005, chạy hai đơn vị LSTM song song trên cùng một chuỗi (một theo chiều thuận và một theo chiều ngược) rồi kết hợp cả hai trạng thái ẩn tại mỗi bước thời gian. Nhờ vậy, mỗi đầu ra không chỉ phụ thuộc vào ngữ cảnh trước đó mà còn vào ngữ cảnh phía sau, đặc biệt hữu ích trong các tác vụ như nhận dạng giọng nói và gán nhãn chuỗi, nơi toàn bộ chuỗi đầu vào đã có sẵn trước khi đưa ra dự đoán.

LSTM xếp chồng (stacked LSTM) là hướng mở rộng thứ hai, trong đó nhiều lớp LSTM được xếp chồng lên nhau; đầu ra của lớp dưới trở thành đầu vào của lớp trên. Graves, Mohamed và Hinton đã chứng minh năm 2013 rằng kiến trúc này đạt tỉ lệ lỗi  chỉ17,7% trên tập dữ liệu TIMIT, vượt trội hơn các phương pháp trước đó nhờ khả năng học các biểu diễn trừu tượng theo từng cấp độ.

Ứng dụng

Dịch máy 

LSTM đóng vai trò trung tâm trong sự chuyển dịch từ dịch máy thống kê sang dịch máy thần kinh (neural machine translation, NMT) trong thập niên 2010. Năm 2014, Cho và các cộng sự đề xuất kiến trúc mã hóa-giải mã (encoder-decoder) dựa trên RNN, trong đó một mạng LSTM mã hóa câu nguồn thành một vector ngữ cảnh cố định, rồi một mạng LSTM khác giải mã vector đó thành câu đích. Cùng năm, Sutskever, Vinyals và Le chứng minh rằng kiến trúc tương tự với LSTM xếp chồng đạt kết quả cạnh tranh với các hệ thống dịch máy thống kê tốt nhất thời điểm đó trên cặp ngôn ngữ Anh-Pháp.

Năm 2016, Google triển khai hệ thống Google Neural Machine Translation (GNMT) cho Google Dịch, sử dụng LSTM xếp chồng tám lớp với cơ chế chú ý (attention mechanism), giảm lỗi dịch xuống 60% so với hệ thống thống kê trước đó trên nhiều cặp ngôn ngữ. Cũng trong năm 2016, Facebook chuyển toàn bộ hệ thống dịch thuật sang LSTM, xử lý khoảng 4,5 tỉ lượt dịch tự động mỗi ngày.

Nhận dạng giọng nói và trợ lý ảo 

Năm 2015, Google bắt đầu sử dụng LSTM được huấn luyện bằng CTC (connectionist temporal classification) cho Google Voice, giảm tỉ lệ lỗi phiên âm xuống 49% so với hệ thống GMM-HMM trước đó. Năm 2016, Apple tích hợp LSTM vào Siri và tính năng QuickType trên iPhone để cải thiện nhận dạng giọng nói và dự đoán văn bản. Cùng năm, Amazon phát hành Polly, hệ thống chuyển văn bản thành giọng nói của Alexa sử dụng BiLSTM để tạo ra giọng nói tự nhiên. Năm 2016, Google cũng tích hợp LSTM vào ứng dụng nhắn tin Allo để gợi ý phản hồi thông minh.

Nhận dạng chữ viết tay 

Năm 2009, một hệ thống LSTM được huấn luyện bằng CTC do Alex Graves dẫn đầu giành chiến thắng tại cuộc thi nhận dạng chữ viết tay kết nối ICDAR, trở thành lần đầu tiên một mạng thần kinh hồi quy vô địch một cuộc thi quốc tế với một mô hình đạt độ chính xác cao nhất và một mô hình khác đạt tốc độ nhanh nhất.

Dự báo và phân tích chuỗi thời gian 

Ngoài ngôn ngữ tự nhiên, LSTM được ứng dụng rộng rãi trong các bài toán dự báo chuỗi thời gian nhờ khả năng nắm bắt các xu hướng dài hạn trong dữ liệu tuần tự. Trong dự báo tài chính, LSTM được dùng để dự đoán tỉ giá hối đoái và giá cổ phiếu trên thị trường chứng khoán. Trong dự báo giao thông, LSTM được áp dụng để dự đoán lưu lượng xe ngắn hạn. Trong lĩnh vực thủy văn, LSTM cho thấy khả năng mô phỏng mối quan hệ giữa lượng mưa và dòng chảy tốt hơn các mô hình vật lý truyền thống trên nhiều lưu vực sông.

Khoa học và y tế 

Trong sinh học tính toán, Hochreiter và các cộng sự ứng dụng LSTM vào phát hiện tương đồng protein (protein homology detection) năm 2007, cho thấy LSTM có thể phân loại các chuỗi protein mà không cần căn chỉnh chuỗi (sequence alignment) truyền thống. Trong y tế, LSTM được dùng để dự đoán các sự kiện lâm sàng từ hồ sơ bệnh nhân điện tử, điển hình là hệ thống Doctor AI của Choi và các cộng sự năm 2016, có khả năng dự đoán chẩn đoán và thuốc điều trị trong tương lai dựa trên lịch sử khám chữa bệnh.

Ảnh hưởng 

LSTM là kiến trúc mạng thần kinh hồi quy thống trị trong hầu hết các tác vụ xử lý chuỗi suốt gần hai thập kỷ, từ dịch máy, nhận dạng giọng nói đến phân tích chuỗi thời gian. Tuy nhiên, từ năm 2017, kiến trúc Transformer do Vaswani và các cộng sự đề xuất dần thay thế LSTM trong các tác vụ ngôn ngữ tự nhiên nhờ cơ chế tự chú ý (self-attention) cho phép xử lý song song toàn bộ chuỗi thay vì tuần tự từng bước. Năm 2020, Kaplan và các cộng sự tại OpenAI chứng minh qua thực nghiệm rằng Transformer tuân theo các quy luật tỉ lệ (scaling law) tốt hơn LSTM khi tăng quy mô dữ liệu và tham số trong mô hình hóa ngôn ngữ, củng cố thêm xu hướng chuyển dịch này.

Dù vậy, LSTM vẫn giữ vai trò quan trọng trong nhiều lĩnh vực ngoài ngôn ngữ tự nhiên, đặc biệt là các bài toán chuỗi thời gian trong tài chính, thủy văn, y tế và giao thông — nơi dữ liệu thường có độ dài ngắn hơn và tính tuần tự chặt chẽ hơn so với văn bản, khiến lợi thế xử lý song song của Transformer ít có ý nghĩa thực tế hơn. Trong các bối cảnh này, LSTM tiếp tục cạnh tranh được với các kiến trúc hiện đại hơn nhờ hiệu quả tính toán và khả năng hoạt động tốt trên tập dữ liệu nhỏ.

Năm 2024, chính Sepp Hochreiter dẫn đầu một nhóm nghiên cứu tại Đại học Johannes Kepler công bố xLSTM (extended LSTM), nâng cấp kiến trúc LSTM gốc bằng cách bổ sung cơ chế cập nhật theo cấp số nhân và chuẩn hóa mới cho phép mở rộng quy mô tốt hơn. xLSTM gồm hai khối: sLSTM giữ lại cơ chế trạng thái vô hướng của LSTM gốc cho phép theo dõi trạng thái (state tracking), và mLSTM thay thế trạng thái vô hướng bằng ma trận bộ nhớ có thể tính toán song song tương tự Transformer.

Tham khảo 

Trí tuệ nhân tạo
Khoa học máy tính
Học máy
Học sâu
Mạng thần kinh nhân tạo
Xử lý ngôn ngữ tự nhiên