Self-attention
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èo và thả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
Thử điều này:
- Nhấp vào từ
ngồi(hoặc hàngngồitrong ma trận): xem nó chú ý mạnh vàomèovàthả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àothả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 i và j sẽ cho ra cả ma trận chú ý bạn thấy ở hàng dưới của sim.
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ố đó.
- 1Trong self-attention, điểm chú ý giữa token truy vấn i và token khóa j được tính thế nào?
- 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ì?
- 3Khi chọn token truy vấn là "trên", vì sao nó chú ý mạnh nhất vào "thảm"?