Scaled Dot-Product Attention

Khó

TransformerattentionAI5 test · 12 giây · sai số 1e-5

Trái tim của Transformer (bài báo Attention Is All You Need):

Attention(Q, K, V) = softmax(Q Kᵀ / √d) V

  • Q (n, d): truy vấn — mỗi token hỏi "mình cần thông tin gì?"
  • K (m, d): khóa — mỗi token mô tả "mình chứa gì"
  • V (m, dᵥ): giá trị — thông tin thực sự được tổng hợp

Chia cho √d để tích vô hướng không quá lớn khi d lớn (softmax sẽ bị bão hòa). Softmax lấy theo trục cuối (theo các khóa).

Viết hàm

attention(Q, K, V)

Tham số

  • Q: (n, d)
  • K: (m, d)
  • V: (m, dᵥ)

Trả về

Ma trận (n, dᵥ).

Ví dụ

Tham số

Q = [[1,0]]
K = [[1,0],[0,1]]
V = [[10],[20]]

Kết quả

[[13.302384507]]

Trọng số ≈ [0.67, 0.33] → ≈ 13.3

Tham số

Q = [[0,0,0],[0,0,0]]
K = [[1.1374,-0.4606,-2.5845],[-2.7966,2.0054,2.9068],[2.0706,-2.7259,2.1036],[-0.9642,0.7549,0.1618]]
V = [[1],[2],[3],[4]]

Kết quả

[[2.5],[2.5]]

Q = 0 → chú ý đều → trung bình của V = 2.5

Bài tiếp theo: Self-attention có mặt nạ nhân quả (GPT) →

Python · NumPy

Bấm “Chạy thử” để gọi attention() với 2 ví dụ trong đề và so sánh kết quả. Dùng print() thoải mái để gỡ lỗi.