Chuyển tới nội dung chính

Self-attention

Lõi TransformerTính lại thậtMa trận chú ý

Self-attention

Mỗi token nhìn quanh cả câu và tự quyết định nên chú ý vào những token nào. Đây là lõi của Transformer.

Một từ hiếm khi tự nó đủ nghĩa. Trong câu con mèo ngồi trên thảm, muốn hiểu ngồi đang nói về ai và ở đâu, ta phải nhìn sang mèothảm. Nghĩa của một token phụ thuộc vào ngữ cảnh chung quanh, nên mô hình cần một cách để mỗi token đọc lại cả câu và tự gom thông tin nó cần. Cơ chế đó gọi là chú ý, tiếng Anh là attention.

Self-attention giải quyết việc này bằng ba vai trò cho mỗi token. Mỗi token phát ra một truy vấn, thứ nó đang tìm; một khóa, thứ nó chào mời cho token khác; và một giá trị, phần nội dung nó sẽ góp lại. Khi một token muốn cập nhật nghĩa, nó so truy vấn của mình với khóa của mọi token, được điểm khớp cao thấp, rồi trộn giá trị của những token khớp nhất. Vì mọi token trong cùng một câu vừa hỏi vừa trả lời cho nhau, ta gọi là tự chú ý, self-attention.

Thử ngay

Self-attention · token nào chú ý token nào
truy vấn: ngồichú ý mạnh nhất vào mèo (32%)
ngồi chú ý vào những token nàocon17%mèo32%ngồi6%trên19%thảm25%Ma trận chú ý · hàng = truy vấn, cột = khóakhóa (key) ▸truy vấn (query) ▸conmèongồitrênthảmcon2359666mèo224317108ngồi173261925trên5553352thảm88153238

Thử điều này:

  • Nhấp vào từ ngồi (hoặc hàng ngồi trong ma trận): xem nó chú ý mạnh vào mèothảm, đúng như một động từ đi tìm chủ thể và nơi chốn.
  • Nhấp trên: gần như toàn bộ chú ý dồn vào thảm, vì giới từ đi tìm danh từ chỉ nơi chốn.
  • Nhấp con: chú ý dồn về mèo, vì từ chỉ loại luôn gắn với danh từ nó bổ nghĩa.
  • Kéo nhiệt độ xuống thấp: các hàng trở nên nhọn, mỗi token gần như chỉ chú ý vào một token. Kéo lên cao: các hàng phẳng ra, chú ý trải đều.

Q, K, V và điểm chú ý

Với token truy vấn i và token khóa j, điểm chú ý là tích vô hướng của hai vector, chia cho căn bậc hai số chiều: Q·K / sqrt(d). Tích vô hướng lớn khi hai vector cùng hướng, nghĩa là token i đang tìm đúng thứ token j chào mời; phép chia cho sqrt(d) chỉ giữ cho điểm số khỏi phình quá to khi số chiều lớn.

Cả một hàng điểm số của token i được đưa qua softmax để thành trọng số chú ý: các số dương cộng lại bằng 1, đọc được như tỉ lệ phần trăm token i phân bổ sự chú ý. Cuối cùng, đầu ra của token i là tổng có trọng số của các giá trị V, nên token nào được chú ý nhiều thì đóng góp nhiều vào nghĩa mới. Làm việc này cho mọi cặp ij sẽ cho ra cả ma trận chú ý bạn thấy ở hàng dưới của sim.

Điều rút ra

Self-attention để mỗi token tự chấm điểm mọi token khác bằng tích vô hướng Q·K, biến điểm số thành trọng số cộng bằng 1 qua softmax, rồi trộn các giá trị theo trọng số đó.

Câu hỏi tự kiểm0/3 đúngchưa trả lời
  1. 1Trong self-attention, điểm chú ý giữa token truy vấn i và token khóa j được tính thế nào?
  2. 2Sau khi đưa một hàng điểm số qua softmax, các trọng số chú ý trên hàng đó có tính chất gì?
  3. 3Khi chọn token truy vấn là "trên", vì sao nó chú ý mạnh nhất vào "thảm"?