Kiến trúc mạng học sâu: từ nền tảng đến LLM·Chương 6 — Attention: truy xuất thông tin theo mức liên quan

Chế độ xem

Attention: truy xuất thông tin theo mức liên quan

Attention trả lời một câu hỏi rất thực tế: khi tạo biểu diễn cho một vị trí, mô hình nên lấy thông tin từ những vị trí nào, và lấy bao nhiêu từ mỗi vị trí?

Trong Seq2Seq dùng RNN cổ điển, decoder thường phải dựa vào một biểu diễn nén của cả câu nguồn. Với câu dài, đây là nút thắt rõ ràng: quá nhiều thông tin bị ép đi qua một vector cố định. Bahdanau và cộng sự đề xuất để decoder truy xuất trực tiếp các biểu diễn của encoder, với trọng số riêng cho từng bước sinh từ.

Ý tưởng cốt lõi: không ép mạng nhớ mọi thứ như nhau; hãy cho nó học cách truy xuất thông tin liên quan theo từng truy vấn.

Mục tiêu học tập

Sau bài này, bạn cần:

  • giải thích vì sao attention xuất hiện từ hạn chế của encoder-decoder RNN;
  • phân biệt query, key, value;
  • tự viết được luồng tính điểm → softmax → tổng có trọng số;
  • hiểu self-attention, cross-attention, causal attention và multi-head attention;
  • đọc được công thức scaled dot-product attention của Transformer;
  • biết rằng trọng số attention không tự động là lời giải thích nhân quả cho dự đoán.

1. Từ “một vector nhớ cả câu” đến truy xuất có trọng số

Giả sử dịch:

  • Câu nguồn: I love teaching
  • Câu đích: Tôi thích dạy học

Khi sinh từ Tôi, thông tin từ I quan trọng hơn teaching. Khi sinh dạy, teaching lại quan trọng hơn. Vì vậy, decoder không nên dùng mọi từ nguồn với cùng trọng số.

Ví dụ căn chỉnh giữa câu nguồn và câu đích

Nguồn hình: Nguyễn Thanh Tuấn, Deep Learning Cơ Bản, Chương 19, Hình 19.6; dùng để giải thích ý tưởng căn chỉnh giữa câu nguồn và câu đích.

Trong Bahdanau attention, tại mỗi bước decoder tt, mô hình tạo một vector ngữ cảnh riêng:

ct=∑i=1nαt,ihic_t = \sum_{i=1}^{n}\alpha_{t,i}h_i

trong đó:

  • hih_i: biểu diễn của token nguồn thứ ii;
  • αt,i\alpha_{t,i}: mức liên quan của token nguồn thứ ii với bước decoder tt;
  • ∑iαt,i=1\sum_i \alpha_{t,i}=1.

Điểm quan trọng là ctc_t thay đổi theo bước sinh, thay vì dùng một vector ngữ cảnh cố định cho cả câu.

2. Attention như một phép truy xuất mềm

Một cách hiểu hữu ích là coi attention như một cơ sở dữ liệu khả vi:

  • Query (Q) — vị trí hiện tại đang cần thông tin gì?
  • Key (K) — mỗi mục dữ liệu được mô tả bằng đặc trưng nào để so khớp?
  • Value (V) — nếu mục đó phù hợp, thông tin nào sẽ được lấy ra?

Các thành phần query, key, value

Nguồn hình: Nguyễn Thanh Tuấn, Deep Learning Cơ Bản, Chương 19, Hình 19.7.

Ví dụ gần với sinh viên:

Thành phầnVí dụ tìm tài liệu môn học
Query“công thức lan truyền ngược”
Keyvector mô tả nội dung của từng đoạn tài liệu
Valuenội dung/biểu diễn của đoạn tài liệu đó
Trọng số attentionmức phù hợp giữa câu hỏi và từng đoạn

Attention không chọn cứng đúng một mục. Nó tạo một phân phối trọng số rồi trộn các value theo phân phối đó.

3. Ba bước nền tảng: tính điểm → softmax → tổng có trọng số

Với một query qq và các cặp (ki,vi)(k_i,v_i):

Bước 1 — Tính điểm tương thích

ei=s(q,ki)e_i = s(q,k_i)

ss là hàm đo độ tương thích giữa query và key. Điểm càng lớn, key đó càng phù hợp với truy vấn hiện tại.

Bước 2 — Chuẩn hoá thành trọng số

αi=exp⁡(ei)∑jexp⁡(ej)\alpha_i = \frac{\exp(e_i)}{\sum_j \exp(e_j)}

Softmax biến các điểm thành các số dương có tổng bằng 1.

Bước 3 — Trộn các value

o=∑iαivio = \sum_i \alpha_i v_i

Attention tạo đầu ra bằng tổng có trọng số của các value

Nguồn hình: Nguyễn Thanh Tuấn, Deep Learning Cơ Bản, Chương 19, Hình 19.8.

Điểm cần nhớ: điểm tương thích quyết định mức liên quan; value chứa thông tin sẽ được lấy ra.

4. Các hàm tính điểm phổ biến

4.1 Additive attention — Bahdanau

Một dạng phổ biến:

ei=vaTtanh⁡(Wqq+Wkki)e_i = v_a^T\tanh(W_q q + W_k k_i)

Query và key được biến đổi qua các lớp học được rồi mới tính điểm. Đây là cơ chế gắn với attention trong RNN encoder-decoder.

4.2 Dot-product attention

Đơn giản hơn:

ei=qTkie_i = q^T k_i

Ưu điểm lớn là có thể biểu diễn bằng phép nhân ma trận rất hiệu quả.

4.3 Scaled dot-product attention

Transformer dùng:

Attention(Q,K,V)=softmax(QKTdk)V\mathrm{Attention}(Q,K,V) =\mathrm{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V

Trong đó dkd_k là số chiều của key/query.

Vì sao chia cho dk\sqrt{d_k}? Khi dkd_k lớn, dot product thường có độ lớn tăng theo. Softmax khi đó dễ trở nên quá lệch về một vài vị trí, làm gradient rất nhỏ. Hệ số 1/dk1/\sqrt{d_k} giúp giữ thang điểm ổn định hơn.

Hình dưới là sơ đồ gốc trong Attention Is All You Need:

Scaled Dot-Product Attention gốc

Nguồn: Vaswani et al. (2017), Figure 2 (left). Paper cho phép tái sử dụng figure trong công trình học thuật khi ghi nguồn.

5. Self-attention: query, key, value cùng đến từ một chuỗi

Với ma trận embedding đầu vào:

X∈RT×dmodelX\in\mathbb{R}^{T\times d_{model}}

mô hình học ba phép chiếu tuyến tính:

Q=XWQ,K=XWK,V=XWVQ=XW_Q,\qquad K=XW_K,\qquad V=XW_V

Sau đó:

Z=softmax(QKTdk)VZ=\mathrm{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V

Mỗi token vì vậy có thể xây dựng biểu diễn mới bằng cách lấy thông tin từ các token khác trong cùng chuỗi.

Ví dụ ý nghĩa

Trong câu:

Nam đưa cuốn sách cho Minh vì cậu ấy cần học.

Biểu diễn của cậu ấy có thể lấy nhiều thông tin hơn từ Nam hoặc Minh, tùy mẫu ngữ cảnh mà mô hình học được. Self-attention tạo đường kết nối trực tiếp giữa các vị trí, thay vì buộc thông tin đi tuần tự qua nhiều bước RNN.

6. Self-attention, cross-attention và causal attention

LoạiQuery đến từKey/Value đến từMục đích
Self-attentioncùng chuỗicùng chuỗihọc quan hệ nội bộ trong chuỗi
Cross-attentionchuỗi Achuỗi Btruy xuất thông tin từ nguồn khác
Causal self-attentioncùng chuỗicùng chuỗi nhưng che các vị trí tương laisinh token tiếp theo theo kiểu tự hồi quy

Trong Transformer encoder-decoder gốc:

  • encoder dùng self-attention;
  • decoder dùng masked/causal self-attention;
  • decoder còn dùng cross-attention để đọc đầu ra của encoder.

7. Causal mask: không được nhìn đáp án tương lai

Khi huấn luyện mô hình sinh từ trái sang phải, vị trí tt chỉ được nhìn các vị trí ≤t\le t.

Ta cộng một mặt nạ vào ma trận điểm trước softmax:

Mij={0j≤i−∞j>iM_{ij}= \begin{cases} 0 & j\le i\\ -\infty & j>i \end{cases} A=softmax(QKTdk+M)A=\mathrm{softmax}\left(\frac{QK^T}{\sqrt{d_k}}+M\right)

Sau softmax, các vị trí bị −∞-\infty có trọng số bằng 0.

8. Multi-head attention: nhiều không gian so khớp song song

Một attention head chỉ có một bộ WQ,WK,WVW_Q,W_K,W_V. Multi-head attention tạo nhiều bộ chiếu khác nhau:

headi=Attention(QWiQ,KWiK,VWiV)\mathrm{head}_i=\mathrm{Attention}(QW_i^Q,KW_i^K,VW_i^V) MHA(Q,K,V)=Concat(head1,…,headh)WO\mathrm{MHA}(Q,K,V)=\mathrm{Concat}(\mathrm{head}_1,\dots,\mathrm{head}_h)W^O

Mỗi head có khả năng học một kiểu quan hệ khác nhau; không nên diễn giải cứng rằng head 1 luôn học cú pháp, head 2 luôn học ngữ nghĩa.

Multi-Head Attention gốc

Nguồn: Vaswani et al. (2017), Figure 2 (right).

9. Attention không phải là toàn bộ Transformer

Đây là chỗ dễ nhầm:

Một block Transformer còn có:

  • mạng truyền thẳng theo từng vị trí (feed-forward network);
  • kết nối dư/đường tắt (residual connection);
  • chuẩn hóa;
  • thông tin vị trí;
  • dropout và các chi tiết huấn luyện khác.

Chương 7 sẽ ghép các thành phần đó thành kiến trúc hoàn chỉnh.

10. Có thể dùng trọng số attention để giải thích mô hình không?

Bản đồ attention rất hữu ích để quan sát cách mô hình phân bố trọng số, nhưng không nên mặc định:

attention cao = đặc trưng đó là nguyên nhân duy nhất của dự đoán.

Jain & Wallace (2019) cho thấy có những trường hợp trọng số attention không tương quan tốt với các phép đo độ quan trọng khác, và có thể thay đổi mạnh trong khi dự đoán gần như giữ nguyên. Wiegreffe & Pinter (2019) phản biện rằng kết luận còn phụ thuộc vào cách định nghĩa “giải thích” và thiết kế kiểm định.

Cách dùng an toàn trong môn này: coi attention map là tín hiệu chẩn đoán/khám phá, không phải bằng chứng nhân quả độc lập.

11. Tóm tắt

  1. Attention biến “nhớ toàn bộ” thành “truy xuất theo mức liên quan”.
  2. Query mô tả nhu cầu; key dùng để so khớp; value chứa thông tin được lấy ra.
  3. Attention = tính điểm → softmax → tổng có trọng số.
  4. Self-attention dùng Q/K/V từ cùng một chuỗi.
  5. Causal mask ngăn mô hình nhìn token tương lai.
  6. Multi-head attention chạy nhiều phép attention song song trên các không gian biểu diễn khác nhau.
  7. Transformer dùng attention làm lõi, nhưng Transformer không chỉ có attention.

Câu hỏi tự kiểm tra

  1. Vì sao một vector ngữ cảnh cố định có thể trở thành nút thắt với câu dài?
  2. Nếu đổi value nhưng giữ nguyên query/key thì trọng số attention có thay đổi không?
  3. Softmax nên chạy theo chiều nào trong ma trận attention T×TT\times T?
  4. Vì sao mô hình ngôn ngữ decoder-only cần causal mask?
  5. Multi-head attention khác việc chạy cùng một attention head nhiều lần ở điểm nào?
  6. Vì sao attention map không nên được coi ngay là lời giải thích nhân quả?

Tài liệu tham khảo