ไขข้อข้องใจ AI เขียนข้อความได้อย่างไร ทำความเข้าใจกลไก Next-Token Prediction
เจาะลึกการทำงานของโมเดลภาษาที่ไม่ได้สร้างข้อความทั้งประโยคในทีเดียว แต่ใช้หลักการความน่าจะเป็นและการสุ่มเลือกทีละคำอย่างต่อเนื่อง

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- โมเดลภาษาไม่ได้มองเห็นประโยคสำเร็จรูป แต่ทำงานโดยตอบคำถามทีละส่วนว่าข้อความถัดไปควรเป็นอะไร
- การเลือกคำไม่ได้ใช้การหยิบคำที่มีคะแนนสูงสุดเสมอไป แต่ใช้วิธีสุ่มจากความน่าจะเป็นที่คำนวณได้
- กระบวนการทั้งหมดทำงานผ่านลูปซ้ำๆ ทีละหนึ่งโทเค็นจนกว่าจะได้คำตอบครบถ้วน
- ต้นทุนการประมวลผลคำนวณตามจำนวนโทเค็นไม่ใช่จำนวนข้อความ และความผิดพลาดจะไม่ถูกแก้ไขย้อนหลัง
หากคุณเคยใช้งานปัญญาประดิษฐ์แล้วป้อนคำถามเดิมซ้ำสองรอบแต่ได้คำตอบที่แตกต่างกัน สิ่งนั้นไม่ใช่ความผิดพลาดของระบบ แต่เป็นกลไกการทำงานที่ถูกออกแบบมาตั้งแต่ต้น โมเดลภาษาขนาดใหญ่ (LLM) ไม่เคยประมวลผลประโยคทั้งหมดในคราวเดียว แต่จะตอบคำถามเพียงข้อเดียวซ้ำๆ วนไปเรื่อยๆ ว่า จากข้อความที่มีอยู่ทั้งหมดจนถึงจุดนี้ ส่วนถัดไปควรเป็นอะไร
ตัวอย่างเช่น เมื่อเครื่องมือช่วยเขียนอย่าง DraftPal กำลังเติมคำในประโยคว่า "The cat sat on the ___" ระบบจะไม่รู้ว่าประโยคจะจบลงอย่างไร แต่จะทำการคำนวณความน่าจะเป็นของทุกคำที่มันรู้จัก ตัวอย่างเช่นคำว่า mat อาจมีความน่าจะเป็นอยู่ที่ 41% คำว่า chair อยู่ที่ 19% และ floor อยู่ที่ 12% เป็นต้น
รายละเอียดสำคัญที่ช่วยอธิบายพฤติกรรมแปลกๆ ของ LLM คือ โมเดลไม่ได้เลือกคำว่า mat เสมอไปแม้ว่าจะมีคะแนนสูงสุด แต่จะใช้วิธีทอดลูกเต๋าถ่วงน้ำหนักตามสัดส่วนความน่าจะเป็นทั้งหมด ทำให้บางครั้งคำว่า chair อาจเป็นผู้ชนะแทน การทอดลูกเต๋านี้เองที่ทำให้คำตอบมีความหลากหลาย แม้จะใช้โมเดลและชุดคำสั่งเดียวกันก็ตาม

เมื่อได้คำชนะเลิศ คำนั้นจะถูกนำไปต่อท้ายข้อความเดิม จากนั้นคำถามเดิมจะถูกประมวลผลใหม่อีกครั้งตั้งแต่ต้นโดยมีความยาวเพิ่มขึ้นมาหนึ่งโทเค็น กระบวนการนี้เรียกว่า Next-Token Prediction ซึ่งหากทำซ้ำวนไปเรื่อยๆ หลายร้อยรอบ ก็จะกลายเป็นการสร้างข้อความตอบกลับขนาดย่อมขึ้นมาได้
กลไก Next-Token Prediction ถือเป็นรากฐานสำคัญที่ทำให้แชทบอตและเครื่องมือ Generative AI สามารถโต้ตอบกับมนุษย์ได้อย่างเป็นธรรมชาติ โดยแทนที่จะเขียนโปรแกรมตายตัวให้ตอบตามกฎ โมเดลจะอาศัยสถิติจากคลังข้อมูลขนาดใหญ่มาคาดการณ์คำศัพท์ที่ควรอยู่ติดกัน การทำความเข้าใจเรื่องนี้ช่วยให้เราทราบว่าทำไม AI ถึงมีความคิดสร้างสรรค์และให้ผลลัพธ์ที่แตกต่างกันในแต่ละครั้งของการใช้งาน
การเปลี่ยนแปลงบริบทเพียงเล็กน้อยก็ส่งผลต่อผลลัพธ์ทั้งหมดได้อย่างคาดไม่ถึง หากเพิ่มบริบทเข้าไปสี่คำก่อนประโยคเดิม เช่น "write this like a horror story" การคำนวณความน่าจะเป็นจะเปลี่ยนไปอย่างสิ้นเชิง โดยสัดส่วนของคำว่า mat จะลดลงเหลือไม่ถึง 1% ในขณะที่คำว่า coffin จะพุ่งขึ้นไปถึง 99% ทั้งที่ตัวโมเดลไม่ได้เปลี่ยนไปเลย แต่บริบทของข้อมูลนำเข้าเปลี่ยนไป
กลไกนี้ยังช่วยอธิบายสองสิ่งที่นักพัฒนาพบเจออยู่เสมอ ได้แก่:
- ความสมดุลระหว่างความตายตัวและความหลากหลาย: การบังคับให้โมเดลเลือกคำที่มีคะแนนสูงสุดเสมอ (Greedy Decoding หรือ Temperature 0) จะทำให้ได้คำตอบที่ซ้ำเดิมทุกครั้ง เหมาะสำหรับการดึงข้อมูลที่มีโครงสร้าง แต่หากเปิดใช้งานระบบสุ่มจะทำให้ได้ความหลากหลายทางภาษา
- ต้นทุนการประมวลผลต่อโทเค็น: ทุกๆ โทเค็นต้องผ่านกระบวนการ Forward Pass เต็มรูปแบบผ่านโมเดล ทำให้คำตอบความยาว 500 โทเค็นมีต้นทุนและเวลาในการประมวลผลสูงกว่าคำตอบความยาว 1 โทเค็นมาก ไม่ใช่แค่เพิ่มขึ้นเพียงเล็กน้อย

นอกจากนี้ อาการหลอนหรือการให้ข้อมูลที่ผิดพลาด (Hallucination) ของ AI ก็มีที่มาจากกลไกนี้เช่นกัน เมื่อโทเค็นใดถูกผนวกเข้ากับบริบทแล้ว มันจะไม่ถูกแก้ไขย้อนหลัง โมเดลไม่สามารถหันกลับมาทบทวนโทเค็นที่ 40 ได้หลังจากที่สร้างโทเค็นที่ 41 ไปแล้ว ดังนั้น หากมีการเดาผิดพลาดตั้งแต่ช่วงแรก ความผิดพลาดนั้นจะถูกนำไปเป็นฐานในการสร้างข้อความในรอบถัดไปโดยไม่มีการแก้ไข
ในแดชบอร์ดการทำงานของระบบ เราจึงมักเห็นตัวชี้วัดสองตัวปรากฏอยู่เสมอคือ TTFT (Time-to-First-Token) และ TPOT (Time-Per-Output-Token) ซึ่งใช้วัดผลจากลูปการทำงานนี้เอง และนี่คือเหตุผลที่มีเทคนิคการประมวลผลแบบ Batching เพื่อรวมคำขอ Next-Token จากหลายๆ ผู้ใช้งานเข้ามาประมวลผลพร้อมกันในรอบเดียว เนื่องจากคอขวดของการทำงานอยู่ที่การโหลดคุมน้ำหนักโมเดลเข้าสู่หน่วยประมวลผลของ GPU ไม่ได้อยู่ที่ตัวเลขทางคณิตศาสตร์
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น