- ผู้เขียนสร้างโมเดลทรานส์ฟอร์เมอร์ที่คล้าย GPT-2 ด้วยตนเองเพื่อทำนายลำดับอย่างง่าย และทำความเข้าใจทรานส์ฟอร์เมอร์กับกลไก attention ได้ลึกซึ้งยิ่งขึ้น
- ทรานส์ฟอร์เมอร์นี้ไม่ได้ฝึกด้วยน้ำหนักที่มีอยู่เดิม แต่กำหนดค่าน้ำหนักแต่ละตัวด้วยมือ
- งานที่เลือกให้ทรานส์ฟอร์เมอร์ทำคือการทำนายลำดับ "aabaabaabaab..." ซึ่งต้องอ้างอิงโทเคนก่อนหน้าสองตัวเพื่อกำหนดผลลัพธ์ถัดไป
- ผู้เขียนใช้ระบบโทเคนไนซ์ที่แทน 'a' ด้วย 0 และ 'b' ด้วย 1
- โค้ดของโมเดลอ้างอิงจากอิมพลีเมนเทชัน GPT-2 ของ picoGPT โดย jaymody และมีการปรับบางส่วนเพื่อให้เรียบง่ายขึ้น
- มิติของโมเดลประกอบด้วยความยาวคอนเท็กซ์ 5, ขนาดคำศัพท์ 2 และขนาดเอมเบดดิ้ง 8
- ผู้เขียนออกแบบน้ำหนักเอมเบดดิ้ง โดยใช้ 5 องค์ประกอบแรกสำหรับ position one-hot embedding และใช้อีก 2 องค์ประกอบถัดไปสำหรับ token id one-hot embedding
- บล็อกทรานส์ฟอร์เมอร์ถูกออกแบบให้สร้างเมทริกซ์ q, k, v จากนั้นฉายผลลัพธ์กลับไปยังเอมเบดดิ้ง และฉายอีกครั้งด้วยน้ำหนัก token embedding เพื่อให้ได้ชุด logits ของโทเคนถัดไป
- ผู้เขียนอธิบายรายละเอียดของการออกแบบหัว attention และการฉายกลับสู่ปริภูมิเอมเบดดิ้งไว้อย่างละเอียด
- ขั้นตอนสุดท้ายคือการนำผลจากการรันบล็อกทรานส์ฟอร์เมอร์ไปคูณกับเมทริกซ์ transpose ของน้ำหนัก token embedding เพื่อให้ได้ logits สุดท้าย
- โมเดลใช้ฟังก์ชัน softmax สำหรับการทำนาย และสามารถสร้างส่วนเติมเต็มที่สมเหตุสมผลสำหรับลำดับที่กำหนดได้
- เมื่อนำโมเดลไปทดสอบกับคอนเท็กซ์ที่ไม่กำกวม พบว่าทำสำเร็จได้ 100%
- ผู้เขียนสนับสนุนให้ผู้อ่านสร้างความเข้าใจเชิงสัญชาตญาณเกี่ยวกับทรานส์ฟอร์เมอร์และ attention มากขึ้น และลองสร้างโมเดลของตนเอง
- บทความมีโค้ดเต็มของโมเดล ซึ่งใช้
numpy ในการคำนวณ และกำหนดฟังก์ชันสำหรับการโทเคนไนซ์ การทำนาย และการเติมลำดับ
- ผู้เขียนเสนอว่าสามารถเพิ่มประสิทธิภาพของโมเดลได้ด้วยการลดขนาดหน้าต่างคอนเท็กซ์ และใช้เทคนิคอย่าง fused multiply-add และ KV caching
- บทความนี้เหมาะสำหรับผู้ที่สนใจด้าน language model โดยเฉพาะผู้ที่สนใจ machine learning และ AI
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News