พื้นฐานสถาปัตยกรรม Transformer: Attention Mechanism
Self-Attention คืออะไร?
Self-Attention หรือที่เรียกว่า Scaled Dot-Product Attention เป็นกลไกที่ช่วยให้โมเดลสามารถให้น้ำหนักกับส่วนต่างๆ ของลำดับข้อมูลอินพุตได้อย่างเหมาะสม โดยไม่ต้องพึ่งพาการประมวลผลแบบลำดับ (recurrent) ทำให้สามารถจับความสัมพันธ์ระยะไกลได้ดีขึ้น
การทำงานของ Self-Attention
สร้าง Query, Key, Value: จากอินพุตแต่ละตำแหน่ง (เช่น คำในประโยค) เราจะสร้างเวกเตอร์ 3 ตัว ได้แก่ Query (Q), Key (K), และ Value (V) โดยการคูณอินพุตด้วยเมทริกซ์น้ำหนักที่เรียนรู้ได้
คำนวณ Attention Scores: คำนวณความคล้ายคลึงระหว่าง Query ของตำแหน่งหนึ่งกับ Key ของทุกตำแหน่ง โดยใช้ dot product: [ \text{score}(Q_i, K_j) = Q_i \cdot K_j ]
Normalize ด้วย Softmax: นำคะแนนที่ได้มาแบ่งด้วยสเกล (ขนาดของ Key vector) เพื่อป้องกัน梯度爆炸 แล้วใช้ Softmax เพื่อแปลงเป็นน้ำหนักความสนใจที่รวมกันได้ 1: [ \text{attention_weights}_{i,j} = \text{softmax}\left(\frac{Q_i \cdot K_j}{\sqrt{d_k}}\right) ] โดยที่ (d_k) คือมิติของ Key vector
Weighted Sum ของ Values: นำน้ำหนักที่ได้ไปคูณกับ Value vector ของแต่ละตำแหน่ง แล้วรวมกันเป็นเอาต์พุตสำหรับตำแหน่งนั้น: [ \text{output}i = \sum_j \text{attention_weights}{i,j} \cdot V_j ]
ตัวอย่างการทำงาน
สมมติประโยค: "The cat sat on the mat"
- สำหรับคำว่า "cat" เราต้องการทราบว่าคำอื่นๆ มีความเกี่ยวข้องอย่างไร
- Query ของ "cat" จะถูกจับคู่กับ Key ของทุกคำ
- อาจได้น้ำหนักสูงสำหรับ "sat" และ "mat" เพราะเกี่ยวข้องกับแมว
- เอาต์พุตของ "cat" จะเป็นผลรวมถ่วงน้ำหนักของ Value vectors ของทุกคำ โดยเน้นที่คำที่เกี่ยวข้องมากที่สุด
ข้อสังเกต: Self-Attention ช่วยให้โมเดลเข้าใจบริบทของคำได้ดีขึ้น โดยไม่ต้องสนใจระยะห่างระหว่างคำ
Multi-Head Attention
Multi-Head Attention เป็นการขยายแนวคิดของ Self-Attention โดยใช้หัว (head) หลายหัวพร้อมกัน แต่ละหัวจะเรียนรู้ความสัมพันธ์ในมุมมองที่แตกต่างกัน
การทำงานของ Multi-Head Attention
แบ่ง Q, K, V ออกเป็นหลายหัว: แทนที่จะใช้ Q, K, V ชุดเดียว เราจะแบ่ง Q, K, V ออกเป็น (h) ส่วน (หัว) โดยแต่ละหัวมีมิติ (d_k/h)
Self-Attention แต่ละหัว: แต่ละหัวจะคำนวณ Self-Attention แยกกัน โดยใช้ Q, K, V ที่ลดขนาดแล้ว
Concat และ Project: นำเอาต์พุตจากทุกหัวมาต่อกัน แล้วผ่าน Linear layer เพื่อปรับขนาดกลับเป็นมิติเดิม
ประโยชน์ของ Multi-Head Attention
- เรียนรู้ความสัมพันธ์หลายแบบ: แต่ละหัวอาจโฟกัสที่ความสัมพันธ์ทางไวยากรณ์ (เช่น ประธาน-กริยา) หรือความสัมพันธ์ทางความหมาย (เช่น คำเหมือน)
- เพิ่มความสามารถในการแสดงผล: ช่วยให้โมเดลจับรูปแบบที่ซับซ้อนได้ดีขึ้น
| หัว | ความสนใจที่เรียนรู้ |
|---|---|
| หัว 1 | ความสัมพันธ์ระหว่างคำหลักและคำขยาย |
| หัว 2 | ความสัมพันธ์ระหว่างคำกริยาและกรรม |
| หัว 3 | ความสัมพันธ์ระยะไกลระหว่างประโยค |
ข้อสังเกต: Multi-Head Attention เป็นองค์ประกอบสำคัญที่ทำให้ Transformer มีประสิทธิภาพสูง
สรุป
Self-Attention เป็นกลไกที่ช่วยให้โมเดลให้น้ำหนักความสำคัญของแต่ละตำแหน่งในลำดับข้อมูล โดยคำนวณจาก Query, Key, Value ในขณะที่ Multi-Head Attention ขยายแนวคิดนี้โดยใช้หลายหัวเพื่อเรียนรู้มุมมองที่หลากหลาย ทำให้โมเดลมีความสามารถในการจับความสัมพันธ์ที่ซับซ้อนมากขึ้น