- คู่มือฉบับครอบคลุมเกี่ยวกับวิธีการสุ่มของโมเดลภาษาขนาดใหญ่ (LLM) ที่อธิบายให้แม้แต่มือใหม่ก็เข้าใจได้
- อธิบายอย่างละเอียดว่า โทเค็นคืออะไร ทำไมจึงใช้แทนคำ และ กระบวนการที่โมเดลสร้างข้อความ
- การสุ่มคือกระบวนการควบคุมความหลากหลายและความเป็นธรรมชาติของผลลัพธ์ พร้อมแนะนำ อัลกอริทึมการสุ่มหลากหลายแบบ เช่น Temperature, Top-K, Top-P, DRY
- เทคนิคการสุ่มแต่ละแบบอธิบายทั้ง แนวคิดและหลักการทำงานเชิงคณิตศาสตร์และอัลกอริทึม พร้อมเปรียบเทียบผลลัพธ์ด้าน การป้องกันการวนซ้ำ, การเพิ่มความสร้างสรรค์, การปรับความสอดคล้อง เป็นต้น
- มีการสรุปถึง ลำดับการผสมตัวสุ่ม, ปฏิสัมพันธ์ระหว่างกัน, และกรณีที่เกิดความขัดแย้ง ทำให้เป็น แหล่งข้อมูลที่มีประโยชน์มากสำหรับนักพัฒนาที่ต้องการควบคุมคุณภาพการสร้างข้อความอย่างละเอียด
Intro Knowledge
Short Glossary
- Logits คือค่าที่ยังไม่ผ่านการทำ normalization ซึ่งใช้แทนคะแนนของแต่ละโทเค็น
- Softmax คือฟังก์ชันที่แปลง logits ให้เป็นการกระจายความน่าจะเป็นที่ถูก normalize แล้ว
- Entropy หมายถึงความไม่แน่นอนของการทำนาย โดยยิ่งค่าสูงยิ่งหมายถึงความไม่แน่ใจต่อโทเค็นถัดไปมากขึ้น
- Perplexity เป็นตัวชี้วัดที่ยิ่งต่ำยิ่งแสดงว่าโมเดลมีความมั่นใจสูง
- n-gram หมายถึงลำดับของโทเค็นต่อเนื่องจำนวน n ตัว
- Context window คือจำนวนโทเค็นสูงสุดที่โมเดลสามารถประมวลผลได้ในครั้งเดียว
Why tokens?
Why not letters?
- การทำ tokenization ระดับตัวอักษรทำให้ลำดับยาวเกินไป ส่งผลให้ ต้นทุนการคำนวณเพิ่มขึ้นและเชื่อมโยงข้อมูลได้ยาก
Why not whole words?
- แนวทางที่อิงคำทั้งคำมีปัญหาอย่าง ขนาดคำศัพท์พุ่งสูงมาก และ การแทนคำใหม่หรือคำหายากทำได้ยาก
- แนวทางแบบ Sub-word สามารถแยกคำนำหน้า รากคำ และปัจจัยได้ จึง มีประสิทธิภาพต่อการเข้าใจหน่วยคำและการถ่ายโอนการเรียนรู้ข้ามภาษา
How are the sub-words chosen?
- สร้างพจนานุกรมโดยใช้ ตัวอย่างที่เป็นตัวแทนของข้อมูลฝึก เพื่อค้นหา ส่วนของคำ (sub-word) ที่พบบ่อยที่สุด
How does the model generate text?
- ระหว่างการฝึก โมเดลจะเรียนรู้ การกระจายความน่าจะเป็น ของโทเค็นถัดไปจากข้อความจำนวนมาก
- ตอนอนุมาน โมเดลจะคำนวณความน่าจะเป็นของโทเค็นที่เป็นไปได้ทั้งหมด แล้ว เลือกโทเค็นถัดไปตามเทคนิคการสุ่ม
From Tokens to Text
- ขั้นทำนาย: คำนวณการกระจายความน่าจะเป็นของโทเค็นผู้สมัครทั้งหมด
- ขั้นเลือก: เลือกโทเค็นตามกลยุทธ์การสุ่มที่กำหนด
- การเลือกเพียงโทเค็นที่มีความน่าจะเป็นสูงสุดอย่างเดียวอาจทำให้ ข้อความที่ได้ดูน่าเบื่อหรือซ้ำซาก ดังนั้น เทคนิคการสุ่มจึงสำคัญ
Sampling
Temperature
- ค่าต่ำจะให้ผลลัพธ์ที่ระมัดระวังและซ้ำเดิมมากกว่า ส่วนค่าสูงจะกระตุ้น ผลลัพธ์ที่สร้างสรรค์ แต่ก็ เพิ่มโอกาสเกิดข้อผิดพลาด
- ทำการหาร logits ด้วยค่าอุณหภูมิเพื่อปรับ ความคมชัด (ระดับการกระจุกตัว) ของการกระจายความน่าจะเป็น
Presence Penalty
- โทเค็นที่เคยปรากฏแล้วแม้เพียงครั้งเดียวจะ มีโอกาสถูกเลือกซ้ำลดลง
- พิจารณาเพียงว่าเคยถูกใช้หรือไม่ โดยไม่สนจำนวนครั้งที่ปรากฏ
Frequency Penalty
- ลดคะแนนตามจำนวนครั้งที่ปรากฏ
- ยิ่งคำใดปรากฏบ่อยก็ยิ่งเสียเปรียบมากขึ้น จึง ช่วยเพิ่มความหลากหลาย
Repetition Penalty
- ใช้ penalty แบบไม่สมมาตรกับ logit บวก/ลบ สำหรับโทเค็นที่เคยปรากฏมาก่อน
- มีประสิทธิภาพในการป้องกันการวนซ้ำแบบลูป แต่ก็อาจกระทบความสอดคล้องของบริบทได้
DRY (Don't Repeat Yourself)
- ตรวจจับการซ้ำของรูปแบบ n-gram แล้ว ลดความน่าจะเป็นของโทเค็นที่คาดว่าจะทำให้เกิดการซ้ำ
- ยิ่งเป็นวลีที่ยาวและเพิ่งซ้ำมาไม่นาน ยิ่งถูกกดแรงขึ้น
- โดดเด่นมากในการ ลดการซ้ำโดยยังคงความเป็นธรรมชาติไว้ในงานเขียนเชิงสร้างสรรค์
Top-K
- เก็บไว้เฉพาะผู้สมัคร K อันดับแรก และตัดโทเค็นที่เหลือทิ้ง
- กำจัดตัวอย่างสุดโต่ง พร้อมกับยังคงระดับความสุ่มไว้ได้ในระดับหนึ่ง
Top-P (Nucleus Sampling)
- เก็บไว้เฉพาะโทเค็นจนกว่าความน่าจะเป็นสะสมจะถึง P หรือมากกว่า แล้วตัดที่เหลือทิ้ง
- ขนาดของชุดผู้สมัครเปลี่ยนตามระดับความมั่นใจของโมเดล จึงมีความยืดหยุ่นแบบปรับตัวได้
Min-P
- ใช้โทเค็นที่มีความน่าจะเป็นสูงสุดเป็นฐาน แล้วเก็บไว้เฉพาะโทเค็นที่มีสัดส่วนไม่น้อยกว่าค่าขั้นต่ำที่กำหนด
- การกรองจะถูกปรับแบบไดนามิกตามความมั่นใจของโมเดล
Top-A
- กรองผู้สมัครด้วยค่าธรेशโฮลด์ที่แปรผันตามกำลังสองของความน่าจะเป็นของโทเค็นที่มีความน่าจะเป็นสูงสุด
- เมื่อโมเดลมั่นใจมากขึ้น การกรองจะเข้มงวดมากขึ้น
XTC
- ด้วยความน่าจะเป็นที่กำหนด จะ ตัดผู้สมัครที่มีความน่าจะเป็นสูงสุดออกโดยตั้งใจ เพื่อชี้นำให้เลือกตัวเลือกที่ไม่แน่นอนมากกว่า
- เป็น เทคนิคสำหรับคำตอบที่แปลกแหวกแนวหรือสร้างสรรค์
Top-N-Sigma
- คัดเลือกโทเค็นที่ใช้ได้โดยอิง ส่วนเบี่ยงเบนมาตรฐานของการกระจายความน่าจะเป็น
- ตอบสนองได้ยืดหยุ่นในหลายสถานการณ์ด้วย การกรองบนพื้นฐานคุณลักษณะทางสถิติ
Tail-Free Sampling (TFS)
- ใช้ การเปลี่ยนแปลงอันดับสอง (ความโค้ง) ของความชันความน่าจะเป็นเพื่อแยกผู้สมัครที่มีนัยสำคัญออกจากผู้สมัครในหางยาว
- เป็นวิธีการกรองโดยค้นหา จุดตัดที่เป็นธรรมชาติ
Eta Cutoff
- ปรับเกณฑ์การกรองแบบไดนามิกตามเอนโทรปีของการกระจาย (ความไม่แน่นอน)
- ยิ่งมั่นใจสูงยิ่งตัดโทเค็นออกมากขึ้น และยิ่งมั่นใจต่ำยิ่งยืดหยุ่น
Epsilon Cutoff
- ใช้ เกณฑ์ความน่าจะเป็นคงที่ เพื่อตัดโทเค็นที่มีความน่าจะเป็นต่ำ
- แม้จะเรียบง่ายแต่คาดการณ์ได้ และ มีประโยชน์ในการตัด long tail ที่ไม่จำเป็น
Locally Typical Sampling
- ให้ความสำคัญกับโทเค็นที่มี surprisal ที่คาดไว้ (ความต่างจากค่าคาดหมาย) ใกล้ค่าเฉลี่ย
- ชี้นำให้เกิดการเลือกแบบ "ทั่วไปตามคาด" แทนที่จะเลือกเฉพาะโทเค็นที่เป็นไปได้มากที่สุดหรือแปลกที่สุด
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ไม่ได้กล่าวถึงว่าส่วนสุ่มตัวอย่างไม่สามารถเข้าถึงสถานะภายในของโมเดลได้
ได้ลองเขียนคู่มือการสุ่มตัวอย่างสำหรับ Ollama/llama.cpp
เมื่อพยายามให้ LLM แสดงผลเป็น "ไอเดีย" การเลือกเวกเตอร์ logit ก็ควรทำให้ไอเดียเดิมแตกสลาย
ทุกอย่างถูกอธิบายไว้อย่างเรียบง่าย เปิดโอกาสให้ลองแนวทางใหม่ ๆ
โมเดล LLM จะทำ tokenization โดยนัยได้หรือไม่?
ในประเด็นที่เกี่ยวข้อง บทความ min_p ของเราได้อันดับ 18 จากผลงานส่ง 12000 ชิ้นใน ICLR
สงสัยว่าการสุ่มช่วยแก้ข้อจำกัดของโมเดลได้จริงหรือแค่ปกปิดปัญหาที่ลึกกว่านั้น
"การสุ่ม" ครอบคลุมเรื่องต่าง ๆ มากกว่าที่คิดไว้มาก
เป็นเอกสารที่มีประโยชน์มาก คำอธิบายชัดเจนและครอบคลุมหลายเรื่อง
ไม่เคยตระหนักว่ามีการปรับแต่งมากมายเกิดขึ้นหลังจากการเลือกอุณหภูมิ softmax ในช่วงแรก