แนะนำบล็อก
- นี่คือบทความที่แปดของซีรีส์บล็อกที่อ้างอิงจากหนังสือ "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 ได้
- สามารถฝากคำถามหรือความคิดเห็นเพิ่มเติมไว้ในคอมเมนต์ได้
ยังไม่มีความคิดเห็น