Vượt qua Giới hạn của Mô hình Sequence-to-Sequence Truyền thống
Trước khi Attention ra đời, các mô hình Sequence-to-Sequence (Seq2Seq) phổ biến, ví dụ như trong dịch máy, thường bao gồm một Encoder (bộ mã hóa) và một Decoder (bộ giải mã). Encoder đọc toàn bộ câu đầu vào và nén thông tin thành một vector ngữ cảnh (context vector) có kích thước cố định. Decoder sau đó sử dụng vector này để tạo ra câu đầu ra.
Hạn chế lớn của kiến trúc này là:
- Nút cổ chai thông tin (Information Bottleneck): Toàn bộ thông tin của câu đầu vào, dù dài hay ngắn, đều phải bị nén vào một vector có kích thước cố định. Điều này gây khó khăn cho việc xử lý các câu dài, vì thông tin có thể bị mất mát.
- Khó khăn trong việc tập trung: Mô hình không có cách nào để "biết" phần nào của câu đầu vào là quan trọng nhất khi dự đoán một từ cụ thể ở đầu ra.
Cơ chế Attention được giới thiệu để giải quyết những vấn đề này, cho phép Decoder "nhìn lại" các phần khác nhau của câu đầu vào và gán "trọng số chú ý" cho từng phần khi tạo ra mỗi từ trong câu đầu ra.
Ý tưởng Chủ đạo của Attention
Hãy tưởng tượng bạn đang dịch một câu dài. Khi bạn dịch một từ cụ thể, bạn không nhìn vào toàn bộ câu gốc với sự tập trung như nhau. Thay vào đó, bạn tập trung vào một vài từ hoặc cụm từ trong câu gốc có liên quan mật thiết nhất đến từ bạn đang dịch.
Cơ chế Attention trong mạng neural mô phỏng hành vi này. Thay vì dựa vào một vector ngữ cảnh cố định duy nhất, Attention cho phép Decoder:
- Truy cập tất cả các trạng thái ẩn (hidden states) của Encoder: Mỗi trạng thái ẩn của Encoder chứa thông tin về một phần của chuỗi đầu vào.
- Tính toán "mức độ quan trọng" (attention weights): Đối với mỗi từ mà Decoder sắp tạo ra, nó sẽ tính toán một bộ trọng số attention. Những trọng số này cho biết Decoder nên "chú ý" đến phần nào của câu đầu vào nhiều nhất.
- Tạo ra một vector ngữ cảnh động (dynamic context vector): Vector này là một tổng có trọng số của các trạng thái ẩn của Encoder, với trọng số chính là các attention weights vừa tính được. Vector ngữ cảnh này thay đổi ở mỗi bước thời gian của Decoder.
Nói một cách đơn giản, Attention cho phép mô hình tự động học cách "tập trung" vào các phần liên quan của đầu vào khi tạo ra từng phần của đầu ra.
Ví dụ Minh họa Thực tế về Attention
Chúng ta sẽ xem xét một ví dụ về dịch máy từ câu tiếng Anh "I am a student" sang tiếng Việt "Tôi là một học sinh". Chúng ta tập trung vào cách Decoder tạo ra từ "học sinh" (student) sử dụng cơ chế Attention.
Bối cảnh: Dịch máy Anh sang Việt
- Câu đầu vào (Encoder): "I", "am", "a", "student"
- Câu đầu ra (Decoder): "Tôi", "là", "một", "học sinh"
Giả sử Encoder đã xử lý câu đầu vào và tạo ra các vector trạng thái ẩn tương ứng với các từ "I", "am", "a", "student".
Decoder đã tạo ra "Tôi", "là", "một" và bây giờ đang ở trạng thái (trạng thái ẩn hiện tại của Decoder) để dự đoán từ tiếp theo, mong muốn là "học sinh".
Input: I am a student
Encoder Hidden States: h_1 h_2 h_3 h_4 | V
Decoder state s_t (khi dự đoán từ thứ 4 của output)
Bước 1: Tính toán Điểm Tương đồng (Similarity Score)
Để quyết định nên tập trung vào phần nào của câu đầu vào, Decoder cần so sánh trạng thái hiện tại của nó với từng trạng thái ẩn của Encoder ( cho j = 1, 2, 3, 4). Sự so sánh này tạo ra một "điểm số tương đồng" (alignment score hoặc energy score).
Có nhiều cách để tính điểm tương đồng, một trong những cách phổ biến là Dot Product Similarity.
Sử dụng Phép Nhân Vô hướng (Dot Product Similarity)
Điểm tương đồng giữa trạng thái Decoder và mỗi trạng thái Encoder được tính bằng tích vô hướng:
Trong ví dụ của chúng ta:
- (mức độ liên quan của "I" với từ đang được dự đoán)
- (mức độ liên quan của "am" với từ đang được dự đoán)
- (mức độ liên quan của "a" với từ đang được dự đoán)
- (mức độ liên quan của "student" với từ đang được dự đoán)
Khi Decoder đang chuẩn bị tạo ra từ "học sinh", chúng ta kỳ vọng (liên quan đến "student") sẽ có giá trị cao nhất.
Bước 2: Tính toán Trọng số Attention (Attention Weights)
Các điểm tương đồng này sau đó được đưa qua hàm Softmax để chuẩn hóa chúng thành một phân phối xác suất. Kết quả là các "trọng số attention" , tổng của chúng bằng 1.
Công thức Softmax cho trọng số :
Trong đó k chạy qua tất cả các vị trí từ của câu đầu vào.
Ví dụ:
- = trọng số attention cho "I"
- = trọng số attention cho "am”
- = trọng số attention cho "a”
- = trọng số attention cho "student”
Nếu cao nhất, thì cũng sẽ là trọng số lớn nhất. Giả sử chúng ta có các trọng số sau (giá trị chỉ mang tính minh họa):
Điều này có nghĩa là khi dự đoán từ tiếp theo (hy vọng là "học sinh"), mô hình tập trung 60% sự chú ý vào từ "student" trong câu gốc.
Bước 3: Tính toán Vector Ngữ cảnh (Context Vector)
Vector ngữ cảnh động được tính bằng tổng có trọng số của các trạng thái ẩn của Encoder, sử dụng các trọng số attention vừa tính được:
Trong ví dụ:
Vector này giờ đây là một bản tóm tắt có trọng số của câu đầu vào, được điều chỉnh để tập trung vào những phần liên quan nhất cho việc dự đoán từ hiện tại của Decoder.
Bước 4: Sử dụng Vector Ngữ cảnh để Dự đoán Từ Tiếp theo
Cuối cùng, vector ngữ cảnh được kết hợp với trạng thái ẩn hiện tại của Decoder . Cách kết hợp phổ biến là ghép nối (concatenation) chúng lại, sau đó đưa qua một lớp fully connected và một hàm softmax để dự đoán từ tiếp theo trong chuỗi đầu ra.
Trong đó biểu thị việc ghép nối hai vector.
Vì được tạo ra với sự tập trung lớn vào (trạng thái ẩn của "student"), đầu ra của lớp softmax này có khả năng cao sẽ là từ "học sinh".
Sơ đồ minh họa đơn giản:
Encoder Hidden States: h_1 h_2 h_3 h_4 ^ ^ ^ ^ | | | |
Attention Weights (α): α_t1 α_t2 α_t3 α_t4 (Calculated using s_t and h_j's) \ \ / / ---- Context Vector c_t ---- | V (Combined with s_t) Decoder | V Output Word (e.g., "học sinh")
Tóm tắt Cơ chế Attention
Quá trình hoạt động của Attention trong một bước giải mã có thể được tóm gọn như sau:
-
Đầu vào:
- Tất cả các trạng thái ẩn của Encoder .
- rạng thái ẩn hiện tại của Decoder .
-
Tính toán Điểm Tương đồng:
Tính điểm giữa và mỗi .
(Hàm a có thể là dot product, hoặc một mạng neural nhỏ).
-
Tính toán Trọng số Attention:
Chuẩn hóa các điểm bằng hàm Softmax để được các trọng số .
-
Tính toán Vector Ngữ cảnh:
Tính tổng có trọng số của các trạng thái ẩn Encoder.
-
Dự đoán:
Kết hợp với để dự đoán từ đầu ra tiếp theo .
Các Biến thể và Ứng dụng Nâng cao
Cơ chế Attention cơ bản này (thường gọi là Bahdanau Attention hoặc Additive Attention, và Luong Attention hoặc Multiplicative Attention) đã là nền tảng cho nhiều phát triển sau này:
- Self-Attention (Intra-Attention): Cho phép mô hình tính toán sự chú ý giữa các phần khác nhau trong cùng một chuỗi (ví dụ, trong câu đầu vào hoặc câu đầu ra). Đây là cốt lõi của kiến trúc Transformer.
- Multi-Head Attention: Thay vì chỉ tính một bộ trọng số attention, Multi-Head Attention tính nhiều bộ song song, cho phép mô hình tập trung vào các khía cạnh khác nhau của thông tin cùng một lúc.
- Transformer: Một kiến trúc mô hình hoàn toàn dựa trên cơ chế Attention (cụ thể là Self-Attention và Multi-Head Attention), loại bỏ hoàn toàn các lớp recurrent (RNN/LSTM). Transformer là nền tảng của hầu hết các Mô hình Ngôn ngữ Lớn (LLM) hiện đại như GPT, BERT.
Kết luận
Cơ chế Attention là một bước đột phá quan trọng trong Deep Learning, đặc biệt là với các tác vụ xử lý chuỗi. Nó cho phép mô hình tập trung một cách linh hoạt vào các phần thông tin liên quan nhất, vượt qua những hạn chế của các kiến trúc Seq2Seq truyền thống. Sự ra đời của Attention không chỉ cải thiện hiệu suất mà còn tăng cường khả năng diễn giải của mô hình, và quan trọng hơn, đã mở đường cho các kiến trúc mạnh mẽ hơn như Transformer, định hình lại toàn bộ lĩnh vực AI và NLP.