LRN||topics

พื้นฐานสถาปัตยกรรม Transformer

Attention Mechanism

เรียนรู้การทำงานของ Self-Attention และ Multi-Head Attention

พื้นฐานสถาปัตยกรรม Transformer: Attention Mechanism

Self-Attention คืออะไร?

Self-Attention หรือที่เรียกว่า Scaled Dot-Product Attention เป็นกลไกที่ช่วยให้โมเดลสามารถให้น้ำหนักกับส่วนต่างๆ ของลำดับข้อมูลอินพุตได้อย่างเหมาะสม โดยไม่ต้องพึ่งพาการประมวลผลแบบลำดับ (recurrent) ทำให้สามารถจับความสัมพันธ์ระยะไกลได้ดีขึ้น

การทำงานของ Self-Attention

  1. สร้าง Query, Key, Value: จากอินพุตแต่ละตำแหน่ง (เช่น คำในประโยค) เราจะสร้างเวกเตอร์ 3 ตัว ได้แก่ Query (Q), Key (K), และ Value (V) โดยการคูณอินพุตด้วยเมทริกซ์น้ำหนักที่เรียนรู้ได้

  2. คำนวณ Attention Scores: คำนวณความคล้ายคลึงระหว่าง Query ของตำแหน่งหนึ่งกับ Key ของทุกตำแหน่ง โดยใช้ dot product: [ \text{score}(Q_i, K_j) = Q_i \cdot K_j ]

  3. 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

  4. 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

  1. แบ่ง Q, K, V ออกเป็นหลายหัว: แทนที่จะใช้ Q, K, V ชุดเดียว เราจะแบ่ง Q, K, V ออกเป็น (h) ส่วน (หัว) โดยแต่ละหัวมีมิติ (d_k/h)

  2. Self-Attention แต่ละหัว: แต่ละหัวจะคำนวณ Self-Attention แยกกัน โดยใช้ Q, K, V ที่ลดขนาดแล้ว

  3. Concat และ Project: นำเอาต์พุตจากทุกหัวมาต่อกัน แล้วผ่าน Linear layer เพื่อปรับขนาดกลับเป็นมิติเดิม

ประโยชน์ของ Multi-Head Attention

  • เรียนรู้ความสัมพันธ์หลายแบบ: แต่ละหัวอาจโฟกัสที่ความสัมพันธ์ทางไวยากรณ์ (เช่น ประธาน-กริยา) หรือความสัมพันธ์ทางความหมาย (เช่น คำเหมือน)
  • เพิ่มความสามารถในการแสดงผล: ช่วยให้โมเดลจับรูปแบบที่ซับซ้อนได้ดีขึ้น
หัว ความสนใจที่เรียนรู้
หัว 1 ความสัมพันธ์ระหว่างคำหลักและคำขยาย
หัว 2 ความสัมพันธ์ระหว่างคำกริยาและกรรม
หัว 3 ความสัมพันธ์ระยะไกลระหว่างประโยค

ข้อสังเกต: Multi-Head Attention เป็นองค์ประกอบสำคัญที่ทำให้ Transformer มีประสิทธิภาพสูง

สรุป

Self-Attention เป็นกลไกที่ช่วยให้โมเดลให้น้ำหนักความสำคัญของแต่ละตำแหน่งในลำดับข้อมูล โดยคำนวณจาก Query, Key, Value ในขณะที่ Multi-Head Attention ขยายแนวคิดนี้โดยใช้หลายหัวเพื่อเรียนรู้มุมมองที่หลากหลาย ทำให้โมเดลมีความสามารถในการจับความสัมพันธ์ที่ซับซ้อนมากขึ้น

?

คำถามเพื่อคิดวิเคราะห์

-- ลองตอบคำถาม AI จะวิเคราะห์และให้ feedback

Q1

เหตุใดการ scaled dot-product (หารด้วย sqrt(d_k)) จึงสำคัญ? หากไม่ทำจะเกิดอะไรขึ้น?

Q2

ใน Multi-Head Attention แต่ละหัวเรียนรู้อะไรที่แตกต่างกัน? ยกตัวอย่างการใช้งานจริง

Q3

หากเราใช้ Self-Attention เพียงหัวเดียวแทน Multi-Head Attention จะส่งผลต่อประสิทธิภาพของโมเดลอย่างไร?

// key_insights

  • --Self-Attention ใช้ Query, Key, Value ในการคำนวณน้ำหนักความสนใจ โดยไม่สนใจระยะห่างระหว่างตำแหน่ง
  • --การ normalize ด้วย softmax และสเกล sqrt(d_k) ช่วยให้梯度稳定
  • --Multi-Head Attention ใช้หลายหัวเพื่อเรียนรู้ความสัมพันธ์ที่แตกต่างกันพร้อมกัน
  • --การต่อเอาต์พุตจากทุกหัวแล้ว project กลับเป็นมิติเดิมช่วยรวมข้อมูลจากทุกมุมมอง
  • --Attention Mechanism เป็นหัวใจของ Transformer ที่ทำให้สามารถประมวลผลลำดับข้อมูลแบบขนานได้