3 คะแนน โดย GN⁺ 2025-05-06 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • คู่มือฉบับครอบคลุมเกี่ยวกับวิธีการสุ่มของโมเดลภาษาขนาดใหญ่ (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 ความคิดเห็น

 
GN⁺ 2025-05-06
ความคิดเห็นบน Hacker News
  • ไม่ได้กล่าวถึงว่าส่วนสุ่มตัวอย่างไม่สามารถเข้าถึงสถานะภายในของโมเดลได้

    • มันเป็นเพียงการใช้คณิตศาสตร์กับการกระจายผลลัพธ์เท่านั้น และถ้าไม่ฉลาดเท่าโมเดลก็ถอดความมันไม่ได้
    • ตัวสุ่มอย่าง repeat penalty หรือ DRY เป็นการบังคับไม่ให้โมเดลทำซ้ำเอง ซึ่งชี้ว่าควรต้องมีการฝึกที่ดีกว่านี้
    • การแฮ็กกระบวนการ autoregressive ทำให้เกิดการปรับปรุงง่าย ๆ อย่าง Min-P ได้
    • การพยายามเปลี่ยนโมเดลแย่ให้เป็นโมเดลที่ดีเป็นแนวทางที่ผิด
  • ได้ลองเขียนคู่มือการสุ่มตัวอย่างสำหรับ Ollama/llama.cpp

    • เปิดรับฟีดแบ็กหรือข้อเสนอการแก้ไข
  • เมื่อพยายามให้ LLM แสดงผลเป็น "ไอเดีย" การเลือกเวกเตอร์ logit ก็ควรทำให้ไอเดียเดิมแตกสลาย

    • ถ้าไอเดียนั้นสมบูรณ์อยู่แล้ว ก็ไม่จำเป็นต้องมีการสุ่มกับ logit
  • ทุกอย่างถูกอธิบายไว้อย่างเรียบง่าย เปิดโอกาสให้ลองแนวทางใหม่ ๆ

    • เช่น ถ้าใช้ทั้งคำเป็นโทเค็นจะเป็นอย่างไร?
    • สามารถสร้าง "หุ่นยนต์" ที่มี "ภาษาถิ่นแบบหุ่นยนต์" ที่จำกัดได้
    • จะไม่มีความสามารถรองรับคำใหม่หรือคำหายาก แต่สามารถแก้ไขข้อมูลฝึกและข้อมูลนำเข้าเพื่อแปลให้เป็นคำศัพท์ที่มีอยู่เดิมได้
    • ช่วยตั้งความคาดหวังให้ผู้ใช้ว่าหุ่นยนต์จะตอบได้ดีในลักษณะไหน
  • โมเดล LLM จะทำ tokenization โดยนัยได้หรือไม่?

    • แทนที่จะสร้าง tokenizer แยกต่างหาก ก็ใช้สตริงตัวอักษรแล้วปล่อยให้โครงข่ายประสาทแปลงมันเป็นโทเค็น
    • น้ำหนักของโครงข่ายนั้นจะถูกฝึกร่วมไปกับ LLM ที่เหลือ
  • ในประเด็นที่เกี่ยวข้อง บทความ min_p ของเราได้อันดับ 18 จากผลงานส่ง 12000 ชิ้นใน ICLR

    • โปสเตอร์ได้รับความสนใจมาก
    • มีการอภิปรายกับ Yoshua Bengio ในการนำเสนอแบบปากเปล่า
    • ยืนยันได้ว่า Top N sigma ตอนนี้เป็นตัวสุ่มที่ใช้กันแพร่หลายที่สุด
    • ตอนนี้อุณหภูมิสามารถปรับให้สูงกว่าที่เป็นอยู่ได้มาก
    • กรณีพิเศษของ top_k = 2 และอุณหภูมิสูงมากนั้นน่าสนใจมาก
  • สงสัยว่าการสุ่มช่วยแก้ข้อจำกัดของโมเดลได้จริงหรือแค่ปกปิดปัญหาที่ลึกกว่านั้น

  • "การสุ่ม" ครอบคลุมเรื่องต่าง ๆ มากกว่าที่คิดไว้มาก

  • เป็นเอกสารที่มีประโยชน์มาก คำอธิบายชัดเจนและครอบคลุมหลายเรื่อง

    • สงสัยว่ามีใครรู้ไหมว่าใครเป็นคนเขียน
    • ส่วน DRY - "repeat penalty" น่าสนใจ
    • บ่อยครั้งที่ต้องการให้ LLM แสดงผลเป็นสำเนาของอินพุตแบบตรงตัว
    • เวลาให้สรุปบทสนทนายาว ๆ ก็มักขอคำพูดที่อ้างตรงและสื่อความได้ดีที่สุด
    • บทลงโทษแบบ DRY อาจขัดกับเป้าหมายนี้
  • ไม่เคยตระหนักว่ามีการปรับแต่งมากมายเกิดขึ้นหลังจากการเลือกอุณหภูมิ softmax ในช่วงแรก