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.