Scaled dot-product attention ด้วยตัวเลขจริง
Advanced · ให้เห็นภาพรวม ข้ามได้ ไม่นับเป็นเงื่อนไขจบบท ข้ามไปหน้าถัดไป →
หน้าเสริมสำหรับคนอยากเห็นสูตรเต็ม ข้ามได้ สูตรที่อยู่หัวใจของโมเดลภาษาสมัยใหม่เกือบทุกตัว (Transformer) หน้าตาแบบนี้:
ดูน่ากลัว แต่มันคือ 3 ขั้นที่คุณรู้จักแล้ว: dot product → softmax → ผสม
โจทย์ (d = 2 มิติ): query ของคำว่า "มัน" คือ
| คำ | key | value |
|---|---|---|
| แมว | (2, 1) | (1, 0) |
| กิน | (0, 1) | (0, 1) |
| ปลา | (1, −1) | (0.5, 0.5) |
ขั้น 1 — dot product ของ q กับแต่ละ key
- แมว:
- กิน:
- ปลา:
ขั้น 2 — หารด้วย ได้ 1.7678, 0.3536, 0.3536
ขั้น 3 — softmax ได้น้ำหนัก 0.6728, 0.1636, 0.1636 หรือ 67.3%, 16.4%, 16.4% (รวมได้ 100.1% เพราะปัดเศษ)
ขั้น 4 — ผสม value ตามน้ำหนัก
ผลลัพธ์ (0.7546, 0.2454) คือ "ความหมายใหม่" ของคำว่า "มัน" ที่เอนไปทางแมวมาก เพราะฟังแมวถึง 67.3%
ทำไมต้องหาร √d? ยิ่งเวกเตอร์มีหลายมิติ dot product ยิ่งมีค่าใหญ่ softmax จะแหลมจนเกือบเลือกคำเดียว การหาร √d ทำหน้าที่คล้าย temperature ในบทที่ 1 คือคุมไม่ให้การกระจายความสนใจสุดโต่งเกินไป
attention คือ softmax ของ dot product — สองสูตรที่คุณรู้แล้วจากหน้าก่อนๆ

มังคุด
แปลว่าคำว่า "มัน" มีความหมายเปลี่ยนไปตามประโยคจริงๆ เหรอ?