แนะนำบล็อก

  • นี่คือบทความที่แปดของซีรีส์บล็อกที่อ้างอิงจากหนังสือ "Build a Large Language Model (from Scratch)" ของ Sebastian Raschka
  • บทความนี้กล่าวถึงวิธีการทำ "trainable self-attention"

วิธีการทำงานของ LLM ที่ใช้ทรานส์ฟอร์เมอร์แบบดีโคเดอร์ล้วนสไตล์ GPT

  • แบ่งสตริงออกเป็นโทเค็น และแมปแต่ละโทเค็นเป็นลำดับเวกเตอร์เพื่อสร้าง token embedding
  • สร้าง positional embedding เพื่อสร้างลำดับ input embedding
  • ใช้ input embedding เพื่อสร้าง attention score สำหรับแต่ละโทเค็น
  • ทำ normalization ของ attention score เพื่อสร้าง attention weight
  • สร้าง context vector สำหรับแต่ละโทเค็น

กลไก scaled dot-product attention

  • คำนวณ attention score โดยโปรเจ็กต์ลำดับอินพุตไปยังเมทริกซ์สามชุด ได้แก่ query, key และ value
  • ทำ normalization ของ attention score เพื่อสร้าง attention weight และใช้ค่านี้ในการคำนวณ context vector
  • กระบวนการทั้งหมดนี้ดำเนินการผ่านการคูณเมทริกซ์ที่มีประสิทธิภาพ

การโปรเจ็กต์ระหว่างสเปซด้วยเมทริกซ์

  • เมทริกซ์ถูกใช้เพื่อโปรเจ็กต์เวกเตอร์ไปยังสเปซที่มีมิติแตกต่างกัน
  • คำนวณ attention score โดยโปรเจ็กต์ input embedding ไปยังสเปซของ query, key และ value

การทำ normalization ของ attention score

  • ใช้ฟังก์ชัน softmax เพื่อทำ normalization ของ attention score
  • แก้ปัญหา gradient ขนาดเล็กด้วยการหารด้วยรากที่สองของมิติ

การสร้าง context vector

  • คำนวณ context vector ของแต่ละโทเค็นโดยใช้ attention weight
  • โปรเจ็กต์ input embedding ไปยังสเปซ value แล้วสร้าง context vector ด้วยการหาผลรวมถ่วงน้ำหนักตาม attention weight

ขั้นตอนถัดไป

  • มีแผนจะกล่าวถึง causal self-attention และ multi-head attention
  • วางแผนสำรวจคำถามว่า "ทำไม" ของกลไก self-attention

บทสรุป

  • บทความบล็อกนี้สามารถช่วยให้เข้าใจกลไก self-attention ได้
  • สามารถฝากคำถามหรือความคิดเห็นเพิ่มเติมไว้ในคอมเมนต์ได้

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น