บทที่ 1 · AI เดาคำถัดไปยังไง หน้า 7/11 ~3 นาที

Top-p: ตัดหางทิ้งก่อนสุ่ม

temperature ยังเหลือโอกาสให้คำแปลกๆ เสมอ ถึงจะน้อยนิดก็ตาม ถ้าสุ่มหลายพันครั้ง สักวันคำประหลาดก็โผล่

ท็อป-พี (top-p, nucleus sampling)วิธีตัดคำโอกาสน้อยทิ้ง โดยเก็บคำเรียงจากมากไปน้อยจนโอกาสรวมถึง p แล้วค่อยสุ่มในกลุ่มนั้นดูคำศัพท์ทั้งหมด แก้ตรงนี้ด้วย 3 ขั้น:

  1. เรียงคำจากโอกาสมากไปน้อย
  2. บวกสะสมไปเรื่อยๆ จนได้ อย่างน้อย p (เช่น 0.9 = 90%)
  3. ทิ้งคำที่เหลือ แล้วแบ่งเปอร์เซ็นต์ใหม่ในกลุ่มที่รอด ให้รวมกันได้ 100% อีกครั้ง

ลองคิดก่อนกดเล่น: ปลา 65.7%, ข้าว 24.2%, หนู 8.9%, รถ 1.2%

คำถามชวนคิด

ตอบเป็นตัวเลขถ้าตั้ง top-p = 0.9 จะเหลือกี่คำให้สุ่ม?
ดูเฉลยข้อนี้

คำตอบ: 3

สะสมได้ 65.7% → 89.9% → 98.8% สองคำแรกได้ 89.9% ซึ่งยังไม่ถึง 90% จึงต้องเอาหนูมาด้วย รวมเป็น 3 คำ

ทีนี้ลองลากเส้นตัดเอง:

Top-p กับ "แมวชอบกิน ___"

เรียงคำจากโอกาสมากไปน้อย สะสมจนถึง p แล้วตัดที่เหลือทิ้งก่อนสุ่ม

เก็บ 3 คำ (รวมกันได้ 98.8%) แล้วหารด้วย 0.9880 ให้รวมเป็น 100% อีกครั้ง — ปลา + ข้าว = 89.9% ยังไม่ถึง 90% จึงต้องเอาหนูด้วย

ก่อนและหลังตัดด้วย top-p 0.90 ที่ T = 1.0
คำก่อนสะสมหลังตัด
ปลา (เก็บ)65.7%65.7%66.5%
ข้าว (เก็บ)24.2%89.9%24.5%
หนู (เก็บ)8.9%98.8%9.0%
รถ (ตัดทิ้ง)1.2%100.0%0% ✘

ที่ top-p = 0.9 รถถูกตัดทิ้ง แล้วอีก 3 คำแบ่งกันใหม่เป็น ปลา 66.5%, ข้าว 24.5%, หนู 9.0% ส่วนถ้าตั้ง 0.85 จะเหลือแค่ ปลา 73.1% กับ ข้าว 26.9%

top-p ตัดคำที่โอกาสน้อยทิ้ง เหลือเฉพาะกลุ่มคำที่รวมกันได้ตามเปอร์เซ็นต์ที่ตั้ง แล้วค่อยสุ่ม

มังคุด มาสคอตมังคุด

มังคุด

ทำไม 89.9% ไม่นับว่าถึง 90% ล่ะ? มันใกล้กันมากเลยนะ